Account Registry SDK
Manage main accounts, subaccounts, and trading permissions
The AccountRegistrySDK manages main accounts, subaccounts, and trading permissions on the VOLS protocol.
Write Operations
toggleAccount
Enable or disable a main account for trading.
Signature:
async toggleAccount(main: string, enabled: boolean): Promise<ContractTransactionResponse>Parameters:
main: string- Main account addressenabled: boolean- Enable (true) or disable (false) the account
Returns: Promise<ContractTransactionResponse>
toggleMainAccountTrading
Enable or disable trading for a main account.
Signature:
async toggleMainAccountTrading(main: string, enabled: boolean): Promise<ContractTransactionResponse>Parameters:
main: string- Main account addressenabled: boolean- Enable (true) or disable (false) trading
Returns: Promise<ContractTransactionResponse>
registerSubaccount
Register a new subaccount under the caller's main account.
Signature:
async registerSubaccount(sub: string): Promise<ContractTransactionResponse>Parameters:
sub: string- Subaccount address to register
Returns: Promise<ContractTransactionResponse>
updateSubaccountPermissions
Update trading and cancellation permissions for a subaccount.
Signature:
async updateSubaccountPermissions(
main: string,
sub: string,
canTrade: boolean,
canCancel: boolean
): Promise<ContractTransactionResponse>Parameters:
main: string- Main account addresssub: string- Subaccount addresscanTrade: boolean- Allow subaccount to place tradescanCancel: boolean- Allow subaccount to cancel orders
Returns: Promise<ContractTransactionResponse>
revokeSubaccountPermissions
Revoke all permissions for a subaccount (sets both canTrade and canCancel to false).
Signature:
async revokeSubaccountPermissions(main: string, sub: string): Promise<ContractTransactionResponse>Parameters:
main: string- Main account addresssub: string- Subaccount address
Returns: Promise<ContractTransactionResponse>
Read Operations
isAccountEnabled
Check if a main account is enabled.
Signature:
async isAccountEnabled(main: string, provider?: JsonRpcProvider): Promise<boolean>Parameters:
main: string- Main account addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<boolean>
isMainAccountTradingEnabled
Check if trading is enabled for a main account.
Signature:
async isMainAccountTradingEnabled(main: string, provider?: JsonRpcProvider): Promise<boolean>Parameters:
main: string- Main account addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<boolean>
isTradingEnabled
Check if trading is enabled for a subaccount.
Signature:
async isTradingEnabled(main: string, sub: string, provider?: JsonRpcProvider): Promise<boolean>Parameters:
main: string- Main account addresssub: string- Subaccount addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<boolean>
isCancelEnabled
Check if cancellation is enabled for a subaccount.
Signature:
async isCancelEnabled(main: string, sub: string, provider?: JsonRpcProvider): Promise<boolean>Parameters:
main: string- Main account addresssub: string- Subaccount addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<boolean>
getSubaccountPermissions
Get trading and cancellation permissions for a subaccount.
Signature:
async getSubaccountPermissions(
main: string,
sub: string,
caller: string,
provider?: JsonRpcProvider
): Promise<{canTrade: boolean, canCancel: boolean}>Parameters:
main: string- Main account addresssub: string- Subaccount addresscaller: string- Caller addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<{canTrade: boolean, canCancel: boolean}>
getMainAccount
Get the main account associated with a subaccount.
Signature:
async getMainAccount(sub: string, provider?: JsonRpcProvider): Promise<string>Parameters:
sub: string- Subaccount addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<string> - Main account address
getAllSubaccounts
Get all subaccounts for a main account.
Signature:
async getAllSubaccounts(main: string, provider?: JsonRpcProvider): Promise<string[]>Parameters:
main: string- Main account addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<string[]> - Array of subaccount addresses
getSubaccountCount
Get the count of subaccounts for a main account.
Signature:
async getSubaccountCount(main: string, provider?: JsonRpcProvider): Promise<number>Parameters:
main: string- Main account addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<number>
getSubaccountInfo
Get comprehensive information about a subaccount.
Signature:
async getSubaccountInfo(sub: string, provider?: JsonRpcProvider): Promise<{
main: string;
canTrade: boolean;
canCancel: boolean;
exists: boolean;
}>Parameters:
sub: string- Subaccount addressprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<{main: string, canTrade: boolean, canCancel: boolean, exists: boolean}>
isMainAccount
Check if an address is registered as a main account.
Signature:
async isMainAccount(addr: string, provider?: JsonRpcProvider): Promise<boolean>Parameters:
addr: string- Address to checkprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<boolean>
isSubaccount
Check if an address is registered as a subaccount.
Signature:
async isSubaccount(addr: string, provider?: JsonRpcProvider): Promise<boolean>Parameters:
addr: string- Address to checkprovider?: JsonRpcProvider- Optional provider override
Returns: Promise<boolean>
getProtocolOwner
Get the protocol owner address.
Signature:
async getProtocolOwner(provider?: JsonRpcProvider): Promise<string>Parameters:
provider?: JsonRpcProvider- Optional provider override
Returns: Promise<string> - Protocol owner address
getMainAccountsList
Get list of all whitelisted main accounts.
Signature:
async getMainAccountsList(provider?: JsonRpcProvider): Promise<string[]>Parameters:
provider?: JsonRpcProvider- Optional provider override
Returns: Promise<string[]> - Array of main account addresses

