Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ crate-type = ["cdylib", "rlib", "staticlib"]
[dependencies]
dojo-world = { git = "https://github.com/dojoengine/dojo", rev = "6daa3d0" }
dojo-types = { git = "https://github.com/dojoengine/dojo", rev = "6daa3d0" }
torii-proto = { git = "https://github.com/dojoengine/torii", rev = "358004a" }
torii-client = { git = "https://github.com/dojoengine/torii", rev = "358004a" }
torii-grpc-client = { git = "https://github.com/dojoengine/torii", rev = "358004a" }
torii-proto = { git = "https://github.com/dojoengine/torii", tag = "v1.7.2" }
torii-client = { git = "https://github.com/dojoengine/torii", tag = "v1.7.2" }
torii-grpc-client = { git = "https://github.com/dojoengine/torii", tag = "v1.7.2" }

starknet = "0.17.0"
starknet-crypto = "0.8"
Expand Down
110 changes: 110 additions & 0 deletions dojo.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ struct TokenBalance;
struct TokenContract;
enum ContractType;
struct Contract;
struct TokenTransfer;
struct Provider;
struct Account;
struct Ty;
Expand Down Expand Up @@ -793,6 +794,40 @@ typedef struct ContractQuery {
struct CArrayContractType contract_types;
} ContractQuery;

typedef struct CArrayTokenTransfer {
struct TokenTransfer *data;
uintptr_t data_len;
} CArrayTokenTransfer;

typedef struct PageTokenTransfer {
struct CArrayTokenTransfer items;
struct COptionc_char next_cursor;
} PageTokenTransfer;

typedef enum ResultPageTokenTransfer_Tag {
OkPageTokenTransfer,
ErrPageTokenTransfer,
} ResultPageTokenTransfer_Tag;

typedef struct ResultPageTokenTransfer {
ResultPageTokenTransfer_Tag tag;
union {
struct {
struct PageTokenTransfer ok;
};
struct {
struct Error err;
};
};
} ResultPageTokenTransfer;

typedef struct TokenTransferQuery {
struct CArrayFieldElement contract_addresses;
struct CArrayFieldElement account_addresses;
struct CArrayU256 token_ids;
struct Pagination pagination;
} TokenTransferQuery;

typedef enum COptionFieldElement_Tag {
SomeFieldElement,
NoneFieldElement,
Expand Down Expand Up @@ -825,6 +860,17 @@ typedef struct TokenBalance {
struct COptionU256 token_id;
} TokenBalance;

typedef struct TokenTransfer {
const char *id;
struct FieldElement contract_address;
struct FieldElement from_address;
struct FieldElement to_address;
struct U256 amount;
struct COptionU256 token_id;
uint64_t executed_at;
struct COptionc_char event_id;
} TokenTransfer;

typedef enum Resultc_char_Tag {
Okc_char,
Errc_char,
Expand Down Expand Up @@ -1051,6 +1097,7 @@ typedef struct TokenContract {
const char *symbol;
uint8_t decimals;
const char *metadata;
const char *token_metadata;
struct COptionU256 total_supply;
} TokenContract;

Expand Down Expand Up @@ -1514,6 +1561,19 @@ struct ResultPageTokenContract client_token_contracts(struct ToriiClient *client
struct ResultCArrayContract client_contracts(struct ToriiClient *client,
struct ContractQuery query);

/**
* Retrieves token transfers matching the given query
*
* # Parameters
* * `client` - Pointer to ToriiClient instance
* * `query` - TokenTransferQuery parameters
*
* # Returns
* Result containing array of TokenTransfer information or error
*/
struct ResultPageTokenTransfer client_token_transfers(struct ToriiClient *client,
struct TokenTransferQuery query);

/**
* Subscribes to contract updates
*
Expand Down Expand Up @@ -1575,6 +1635,56 @@ struct Resultbool client_update_token_balance_subscription(struct ToriiClient *c
const struct U256 *token_ids,
uintptr_t token_ids_len);

/**
* Subscribes to token transfer updates
*
* # Parameters
* * `client` - Pointer to ToriiClient instance
* * `contract_addresses` - Array of contract addresses to filter (empty for all)
* * `contract_addresses_len` - Length of contract addresses array
* * `account_addresses` - Array of account addresses to filter (empty for all)
* * `account_addresses_len` - Length of account addresses array
* * `token_ids` - Array of token IDs to filter (empty for all)
* * `token_ids_len` - Length of token IDs array
* * `callback` - Function called when updates occur
*
* # Returns
* Result containing pointer to Subscription or error
*/
struct ResultSubscription client_on_token_transfer_update(struct ToriiClient *client,
const struct FieldElement *contract_addresses,
uintptr_t contract_addresses_len,
const struct FieldElement *account_addresses,
uintptr_t account_addresses_len,
const struct U256 *token_ids,
uintptr_t token_ids_len,
void (*callback)(struct TokenTransfer));

/**
* Updates an existing token transfer subscription
*
* # Parameters
* * `client` - Pointer to ToriiClient instance
* * `subscription` - Pointer to existing Subscription
* * `contract_addresses` - Array of contract addresses to filter (empty for all)
* * `contract_addresses_len` - Length of contract addresses array
* * `account_addresses` - Array of account addresses to filter (empty for all)
* * `account_addresses_len` - Length of account addresses array
* * `token_ids` - Array of token IDs to filter (empty for all)
* * `token_ids_len` - Length of token IDs array
*
* # Returns
* Result containing success boolean or error
*/
struct Resultbool client_update_token_transfer_subscription(struct ToriiClient *client,
struct Subscription *subscription,
const struct FieldElement *contract_addresses,
uintptr_t contract_addresses_len,
const struct FieldElement *account_addresses,
uintptr_t account_addresses_len,
const struct U256 *token_ids,
uintptr_t token_ids_len);

/**
* Serializes a string into a byte array
*
Expand Down
75 changes: 75 additions & 0 deletions dojo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -920,6 +920,7 @@ struct TokenContract {
const char *symbol;
uint8_t decimals;
const char *metadata;
const char *token_metadata;
COption<U256> total_supply;
};

Expand All @@ -945,6 +946,24 @@ struct ContractQuery {
CArray<ContractType> contract_types;
};

struct TokenTransfer {
const char *id;
FieldElement contract_address;
FieldElement from_address;
FieldElement to_address;
U256 amount;
COption<U256> token_id;
uint64_t executed_at;
COption<const char*> event_id;
};

struct TokenTransferQuery {
CArray<FieldElement> contract_addresses;
CArray<FieldElement> account_addresses;
CArray<U256> token_ids;
Pagination pagination;
};

struct Signature {
/// The `r` value of a signature
FieldElement r;
Expand Down Expand Up @@ -1408,6 +1427,16 @@ Result<Page<TokenContract>> client_token_contracts(ToriiClient *client, TokenCon
/// Result containing array of Contract information or error
Result<CArray<Contract>> client_contracts(ToriiClient *client, ContractQuery query);

/// Retrieves token transfers matching the given query
///
/// # Parameters
/// * `client` - Pointer to ToriiClient instance
/// * `query` - TokenTransferQuery parameters
///
/// # Returns
/// Result containing array of TokenTransfer information or error
Result<Page<TokenTransfer>> client_token_transfers(ToriiClient *client, TokenTransferQuery query);

/// Subscribes to contract updates
///
/// # Parameters
Expand Down Expand Up @@ -1463,6 +1492,52 @@ Result<bool> client_update_token_balance_subscription(ToriiClient *client,
const U256 *token_ids,
uintptr_t token_ids_len);

/// Subscribes to token transfer updates
///
/// # Parameters
/// * `client` - Pointer to ToriiClient instance
/// * `contract_addresses` - Array of contract addresses to filter (empty for all)
/// * `contract_addresses_len` - Length of contract addresses array
/// * `account_addresses` - Array of account addresses to filter (empty for all)
/// * `account_addresses_len` - Length of account addresses array
/// * `token_ids` - Array of token IDs to filter (empty for all)
/// * `token_ids_len` - Length of token IDs array
/// * `callback` - Function called when updates occur
///
/// # Returns
/// Result containing pointer to Subscription or error
Result<Subscription*> client_on_token_transfer_update(ToriiClient *client,
const FieldElement *contract_addresses,
uintptr_t contract_addresses_len,
const FieldElement *account_addresses,
uintptr_t account_addresses_len,
const U256 *token_ids,
uintptr_t token_ids_len,
void (*callback)(TokenTransfer));

/// Updates an existing token transfer subscription
///
/// # Parameters
/// * `client` - Pointer to ToriiClient instance
/// * `subscription` - Pointer to existing Subscription
/// * `contract_addresses` - Array of contract addresses to filter (empty for all)
/// * `contract_addresses_len` - Length of contract addresses array
/// * `account_addresses` - Array of account addresses to filter (empty for all)
/// * `account_addresses_len` - Length of account addresses array
/// * `token_ids` - Array of token IDs to filter (empty for all)
/// * `token_ids_len` - Length of token IDs array
///
/// # Returns
/// Result containing success boolean or error
Result<bool> client_update_token_transfer_subscription(ToriiClient *client,
Subscription *subscription,
const FieldElement *contract_addresses,
uintptr_t contract_addresses_len,
const FieldElement *account_addresses,
uintptr_t account_addresses_len,
const U256 *token_ids,
uintptr_t token_ids_len);

/// Serializes a string into a byte array
///
/// # Parameters
Expand Down
Loading
Loading