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
82 changes: 63 additions & 19 deletions dojo.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ namespace dojo_bindings {

struct ToriiClient;
struct Policy;
struct Controller;
struct ControllerAccount;
struct Call;
struct Controller;
struct Entity;
struct Query;
struct CHashItemFieldElementModelMetadata;
Expand Down Expand Up @@ -83,22 +84,22 @@ typedef struct FieldElement {
uint8_t data[32];
} FieldElement;

typedef enum ResultController_Tag {
OkController,
ErrController,
} ResultController_Tag;
typedef enum ResultControllerAccount_Tag {
OkControllerAccount,
ErrControllerAccount,
} ResultControllerAccount_Tag;

typedef struct ResultController {
ResultController_Tag tag;
typedef struct ResultControllerAccount {
ResultControllerAccount_Tag tag;
union {
struct {
struct Controller *ok;
struct ControllerAccount *ok;
};
struct {
struct Error err;
};
};
} ResultController;
} ResultControllerAccount;

typedef enum Resultbool_Tag {
Okbool,
Expand Down Expand Up @@ -156,6 +157,28 @@ typedef struct ResultCArrayu8 {
};
} ResultCArrayu8;

typedef struct CArrayController {
struct Controller *data;
uintptr_t data_len;
} CArrayController;

typedef enum ResultCArrayController_Tag {
OkCArrayController,
ErrCArrayController,
} ResultCArrayController_Tag;

typedef struct ResultCArrayController {
ResultCArrayController_Tag tag;
union {
struct {
struct CArrayController ok;
};
struct {
struct Error err;
};
};
} ResultCArrayController;

typedef struct CArrayEntity {
struct Entity *data;
uintptr_t data_len;
Expand Down Expand Up @@ -415,6 +438,12 @@ typedef struct Policy {
const char *description;
} Policy;

typedef struct Controller {
struct FieldElement address;
const char *username;
uint64_t deployed_at_timestamp;
} Controller;

typedef struct Entity {
struct FieldElement hashed_keys;
struct CArrayStruct models;
Expand Down Expand Up @@ -802,7 +831,7 @@ struct ResultToriiClient client_new(const char *torii_url,
void controller_connect(const char *rpc_url,
const struct Policy *policies,
uintptr_t policies_len,
void (*account_callback)(struct Controller*));
void (*account_callback)(struct ControllerAccount*));

/**
* Retrieves a stored session account if one exists and is valid
Expand All @@ -815,9 +844,9 @@ void controller_connect(const char *rpc_url,
* # Returns
* Result containing pointer to SessionAccount or error if no valid account exists
*/
struct ResultController controller_account(const struct Policy *policies,
uintptr_t policies_len,
struct FieldElement chain_id);
struct ResultControllerAccount controller_account(const struct Policy *policies,
uintptr_t policies_len,
struct FieldElement chain_id);

/**
* Clears sessions matching the specified policies and chain ID
Expand All @@ -843,7 +872,7 @@ struct Resultbool controller_clear(const struct Policy *policies,
* # Returns
* CString containing the username
*/
const char *controller_username(struct Controller *controller);
const char *controller_username(struct ControllerAccount *controller);

/**
* Gets account address
Expand All @@ -854,7 +883,7 @@ const char *controller_username(struct Controller *controller);
* # Returns
* FieldElement containing the account address
*/
struct FieldElement controller_address(struct Controller *controller);
struct FieldElement controller_address(struct ControllerAccount *controller);

/**
* Gets account chain ID
Expand All @@ -865,7 +894,7 @@ struct FieldElement controller_address(struct Controller *controller);
* # Returns
* FieldElement containing the chain ID
*/
struct FieldElement controller_chain_id(struct Controller *controller);
struct FieldElement controller_chain_id(struct ControllerAccount *controller);

/**
* Gets account nonce
Expand All @@ -876,7 +905,7 @@ struct FieldElement controller_chain_id(struct Controller *controller);
* # Returns
* Result containing FieldElement nonce or error
*/
struct ResultFieldElement controller_nonce(struct Controller *controller);
struct ResultFieldElement controller_nonce(struct ControllerAccount *controller);

/**
* Executes raw transaction
Expand All @@ -889,7 +918,7 @@ struct ResultFieldElement controller_nonce(struct Controller *controller);
* # Returns
* Result containing transaction hash as FieldElement or error
*/
struct ResultFieldElement controller_execute_raw(struct Controller *controller,
struct ResultFieldElement controller_execute_raw(struct ControllerAccount *controller,
const struct Call *calldata,
uintptr_t calldata_len);

Expand All @@ -904,7 +933,7 @@ struct ResultFieldElement controller_execute_raw(struct Controller *controller,
* # Returns
* Result containing transaction hash as FieldElement or error
*/
struct ResultFieldElement controller_execute_from_outside(struct Controller *controller,
struct ResultFieldElement controller_execute_from_outside(struct ControllerAccount *controller,
const struct Call *calldata,
uintptr_t calldata_len);

Expand Down Expand Up @@ -934,6 +963,21 @@ struct ResultCArrayu8 client_publish_message(struct ToriiClient *client,
const struct FieldElement *signature_felts,
uintptr_t signature_felts_len);

/**
* Retrieves controllers for the given contract addresses
*
* # Parameters
* * `client` - Pointer to ToriiClient instance
* * `contract_addresses` - Array of contract addresses. If empty, all controllers will be
* returned.
*
* # Returns
* Result containing controllers or error
*/
struct ResultCArrayController client_controllers(struct ToriiClient *client,
const struct FieldElement *contract_addresses,
uintptr_t contract_addresses_len);

/**
* Queries entities matching given criteria
*
Expand Down
41 changes: 30 additions & 11 deletions dojo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace dojo_bindings {

struct ToriiClient;
struct Policy;
struct Controller;
struct ControllerAccount;
struct Call;
struct Ty;
struct Query;
Expand Down Expand Up @@ -106,6 +106,12 @@ struct CArray {
uintptr_t data_len;
};

struct Controller {
FieldElement address;
const char *username;
uint64_t deployed_at_timestamp;
};

struct Member {
const char *name;
Ty *ty;
Expand Down Expand Up @@ -982,7 +988,7 @@ Result<ToriiClient*> client_new(const char *torii_url,
void controller_connect(const char *rpc_url,
const Policy *policies,
uintptr_t policies_len,
void (*account_callback)(Controller*));
void (*account_callback)(ControllerAccount*));

/// Retrieves a stored session account if one exists and is valid
///
Expand All @@ -993,9 +999,9 @@ void controller_connect(const char *rpc_url,
///
/// # Returns
/// Result containing pointer to SessionAccount or error if no valid account exists
Result<Controller*> controller_account(const Policy *policies,
uintptr_t policies_len,
FieldElement chain_id);
Result<ControllerAccount*> controller_account(const Policy *policies,
uintptr_t policies_len,
FieldElement chain_id);

/// Clears sessions matching the specified policies and chain ID
///
Expand All @@ -1017,7 +1023,7 @@ Result<bool> controller_clear(const Policy *policies,
///
/// # Returns
/// CString containing the username
const char *controller_username(Controller *controller);
const char *controller_username(ControllerAccount *controller);

/// Gets account address
///
Expand All @@ -1026,7 +1032,7 @@ const char *controller_username(Controller *controller);
///
/// # Returns
/// FieldElement containing the account address
FieldElement controller_address(Controller *controller);
FieldElement controller_address(ControllerAccount *controller);

/// Gets account chain ID
///
Expand All @@ -1035,7 +1041,7 @@ FieldElement controller_address(Controller *controller);
///
/// # Returns
/// FieldElement containing the chain ID
FieldElement controller_chain_id(Controller *controller);
FieldElement controller_chain_id(ControllerAccount *controller);

/// Gets account nonce
///
Expand All @@ -1044,7 +1050,7 @@ FieldElement controller_chain_id(Controller *controller);
///
/// # Returns
/// Result containing FieldElement nonce or error
Result<FieldElement> controller_nonce(Controller *controller);
Result<FieldElement> controller_nonce(ControllerAccount *controller);

/// Executes raw transaction
///
Expand All @@ -1055,7 +1061,7 @@ Result<FieldElement> controller_nonce(Controller *controller);
///
/// # Returns
/// Result containing transaction hash as FieldElement or error
Result<FieldElement> controller_execute_raw(Controller *controller,
Result<FieldElement> controller_execute_raw(ControllerAccount *controller,
const Call *calldata,
uintptr_t calldata_len);

Expand All @@ -1068,7 +1074,7 @@ Result<FieldElement> controller_execute_raw(Controller *controller,
///
/// # Returns
/// Result containing transaction hash as FieldElement or error
Result<FieldElement> controller_execute_from_outside(Controller *controller,
Result<FieldElement> controller_execute_from_outside(ControllerAccount *controller,
const Call *calldata,
uintptr_t calldata_len);

Expand All @@ -1094,6 +1100,19 @@ Result<CArray<uint8_t>> client_publish_message(ToriiClient *client,
const FieldElement *signature_felts,
uintptr_t signature_felts_len);

/// Retrieves controllers for the given contract addresses
///
/// # Parameters
/// * `client` - Pointer to ToriiClient instance
/// * `contract_addresses` - Array of contract addresses. If empty, all controllers will be
/// returned.
///
/// # Returns
/// Result containing controllers or error
Result<CArray<Controller>> client_controllers(ToriiClient *client,
const FieldElement *contract_addresses,
uintptr_t contract_addresses_len);

/// Queries entities matching given criteria
///
/// # Parameters
Expand Down
Loading