View Facet

The Account Layer View Facet provides read-only functions for querying sub-accounts, virtual accounts, affiliates, roles, legacy accounts, and system state within the Account Layer diamond. All functions are view and do not modify state.


Sub-Account Queries

Function
Parameters
Returns

getSubAccount(address account)

Sub-account address

Full SubAccountDetail struct

getUserSubAccountsAddresses(address owner, uint256 offset, uint256 limit)

Owner, pagination

Paginated array of sub-account addresses

getUserSubAccounts(address owner, uint256 offset, uint256 limit)

Owner, pagination

Paginated array of SubAccountDetail structs

getSubAccountsCountOfUser(address owner)

Owner address

Total sub-account count

The SubAccountDetail struct includes: account address, owner, name, existence flag, singleVAMode, affiliate, Symmio core, metadata, and isolation type.


Virtual Account Queries

Function
Parameters
Returns

getVirtualAccount(address account)

Virtual account address

Full VirtualAccountDetail struct

getVirtualAccountsAddressesOfSubAccount(address subAccount, uint256 offset, uint256 limit)

Sub-account, pagination

Paginated virtual account addresses

getVirtualAccountsOfSubAccount(address subAccount, uint256 offset, uint256 limit)

Sub-account, pagination

Paginated VirtualAccountDetail structs

getVirtualAccountQuoteIds(address account, uint256 offset, uint256 limit)

Virtual account, pagination

Paginated quote IDs tracked by the virtual account

getVirtualAccountsCountOfSubAccount(address subAccount)

Sub-account address

Count of active virtual accounts

The VirtualAccountDetail struct includes: account address, parent account, symbol ID, metadata, existence flag, and isolation type.


Single VA Mode & Address Prediction

Function
Parameters
Returns

getActiveVAByKey(address subAccount, VirtualAccountIsolationType isolationType, uint256 symbolId)

Sub-account, isolation type, symbol

Active virtual account address for this key (or address(0))

getSubAccountVirtualNonce(address subAccount)

Sub-account address

Current nonce (next VA uses nonce + 1)

predictNextVirtualAccountAddress(address subAccount, VirtualAccountIsolationType isolationType, uint256 symbolId)

Sub-account, isolation type, symbol

Predicted next virtual account address

The prediction function checks the reuse pool first, then singleVAMode, then generates from the next nonce — matching the exact logic used by _getOrCreateVirtualAccount in the CoreFacet. This is useful for pre-funding virtual accounts via addMarginToNextVA.


AccountManager & Signer

Function
Parameters
Returns

generateAccountManagerAddress(address registrant, string name)

Registrant, affiliate name

Deterministic AccountManager address

getSigner()

Current effective signer (globalSigner if set, otherwise msg.sender)

getRelatedCore(address account)

Account address

Symmio core diamond address for this account

ownerOf(address account)

Account address

Owner address (resolves sub-accounts, virtual accounts, and legacy accounts)

globalNonce()

Current global nonce for sub-account address generation

accountManagerImplementation()

Current AccountManager proxy bytecode


Affiliate Queries

Function
Parameters
Returns

getAffiliateState(address affiliate)

Affiliate address

AffiliateState (NONE, PENDING, ACTIVE, PAUSED)

getAffiliateAdmin(address affiliate)

Affiliate address

Admin address

getAffiliateFeeDistributor(address affiliate)

Affiliate address

Deterministic fee distributor address

getAffiliateSymmioCores(address affiliate)

Affiliate address

Array of registered Symmio core addresses

getAffiliateStakeholders(address affiliate)

Affiliate address

Array of Stakeholder structs (receiver + share)

getAffiliateSymmioShare(address affiliate)

Affiliate address

Symmio protocol share (fraction of 1e18)

isWhitelistedSymmioCore(address core)

Core address

Whether the core is whitelisted

getHook(address affiliate, bytes4 selector)

Affiliate, selector

Hook contract address

isOperator(address affiliate, bytes4 selector, address operator)

Affiliate, selector, operator

Whether the operator is authorized

symmioFeeReceiver()

Address receiving Symmio's share of fees

dryClaimAllFees(address affiliate, address symmio)

Affiliate, Symmio core

Simulated fee distribution (stakeholder addresses + amounts)


Legacy Account Queries

Function
Parameters
Returns

isLegacyMultiAccount(address account)

Address

Whether it is a registered legacy MultiAccount contract

getLegacyMultiAccounts()

All registered legacy MultiAccount addresses

getLegacyAccountsOfUser(address owner, uint256 maxResults)

Owner, max results

LegacyAccountInfo[] with import status, plus hasMore flag

The LegacyAccountInfo struct includes: account address, name, legacy contract address, and alreadyImported flag indicating whether the account has been imported into the Account Layer.


Role & Pause Queries

Function
Parameters
Returns

hasRole(address user, bytes32 role)

User, role

Whether the user has the role

isRoleAdmin(address user, bytes32 role)

User, role

Whether the user is a role admin

paused()

Whether the Account Layer diamond is paused


Constants

Function
Returns

MAX_NAME_LENGTH()

Maximum allowed length for account and affiliate names (in bytes)

Last updated