Skip to main content

index/classes/GatewayReads.md

Unsigned GalaChain token-contract reads through the gateway: balances (with their holds summed), token classes (with or without supply, by key or page by page), token metadata and NFT collection authorizations; and a user's registered public key (public-key-contract). React Native safe (no Node builtins, no ethers, no @gala-chain/api).

Every input is checked before anything is sent (owners as GatewayWrites spells them, class keys in the forms a write accepts, page sizes), and every answer is checked before it is trusted: GalaChain's Status, then each row's shape. Amounts stay the chain's whole-token decimal strings (never scaled, never numbers). A read applies nothing, so a retry is always safe: every failure after the request left says so (error.write === false), and an input refused before it is pre_send (nothing was sent).

Example​

const reads = new GatewayReads({ gatewayBaseUrl: 'https://gateway-mainnet.galachain.com' });
const gala = await reads.fetchTokenBalance({ owner: 'client|abc', tokenClassKey: 'GALA|Unit|none|none' });
console.log(gala?.availableQuantity);

Constructors​

Constructor​

new GatewayReads(options): GatewayReads

Parameters​

ParameterType
optionsGatewayReadsOptions

Returns​

GatewayReads

Throws​

GalaSDKError INVALID_READS_OPTION (a missing base URL, a requestor that is not a function), INVALID_TIMEOUT.

Methods​

fetchAllNftCollectionAuthorizations()​

fetchAllNftCollectionAuthorizations(options?): Promise<GalaChainNftCollectionAuthorization[]>

Every NFT collection authorization, page by page, up to maxPages pages.

Parameters​

ParameterType
options?AllPagesOptions

Returns​

Promise<GalaChainNftCollectionAuthorization[]>

Throws​

GalaSDKError as fetchNftCollectionAuthorizationsPage, plus PAGINATION_LIMIT_EXCEEDED.


fetchAllTokenClasses()​

fetchAllTokenClasses(filter?, options?): Promise<GalaChainTokenClass[]>

Every token class matching filter, page by page, up to maxPages pages.

Parameters​

ParameterType
filter?TokenClassesFilter
options?AllPagesOptions

Returns​

Promise<GalaChainTokenClass[]>

Throws​

GalaSDKError as fetchTokenClassesPage, plus PAGINATION_LIMIT_EXCEEDED.


fetchBalances()​

fetchBalances(filter): Promise<GalaChainTokenBalance[]>

The owner's balance records (FetchBalances), narrowed by any class-key parts given. Sent to the music channel for $MUSIC, else asset. An answer with a record of another owner is GATEWAY_READ_RESPONSE_INVALID (it is never reported as the owner's).

Parameters​

ParameterType
filterBalancesFilter

Returns​

Promise<GalaChainTokenBalance[]>

Throws​

GalaSDKError pre-send: INVALID_WALLET_ADDRESS (field: 'owner'), INVALID_TOKEN_REFERENCE; then the read failures (see the class note).


fetchNftBalances()​

fetchNftBalances(filter): Promise<GalaChainTokenBalance[]>

The owner's non-fungible holdings: the balance records that hold at least one instance.

Parameters​

ParameterType
filterBalancesFilter

Returns​

Promise<GalaChainTokenBalance[]>

Throws​

GalaSDKError as fetchBalances.


fetchNftCollectionAuthorizationsPage()​

fetchNftCollectionAuthorizationsPage(page?): Promise<GalaChainPage<GalaChainNftCollectionAuthorization>>

One page of the NFT collection authorizations (FetchNftCollectionAuthorizationsWithPagination): which users may create token classes in which collection.

Parameters​

ParameterType
page?PageInput

Returns​

Promise<GalaChainPage<GalaChainNftCollectionAuthorization>>

Throws​

GalaSDKError pre-send: INVALID_PAGE_REQUEST; then the read failures.


fetchPublicKey()​

fetchPublicKey(user): Promise<GalaChainPublicKey | undefined>

The public key GalaChain has registered for user (GetPublicKey of the public-key-contract, asset channel), or undefined when the chain has none saved for that user (its PK_NOT_FOUND). The public gateways do not route this contract: build the reads with a connect-api .../galachain proxy base (https://<connect-api>/galachain), whose answer is { Data: { publicKey } } without a Status (a Status that is sent is still checked).

Parameters​

ParameterType
userstring

Returns​

Promise<GalaChainPublicKey | undefined>

Example​

const reads = new GatewayReads({ gatewayBaseUrl: 'https://api-galaswap.gala.com/galachain' });
const registered = await reads.fetchPublicKey('client|64f8caf887fd8551315d8509');
console.log(registered?.publicKey);

Throws​

GalaSDKError pre-send: INVALID_WALLET_ADDRESS (field: 'user'); then the read failures (see the class note).


fetchTokenBalance()​

fetchTokenBalance(input): Promise<GalaChainTokenBalanceSummary | undefined>

The owner's balance of one token class with its holds totalled, or undefined when the chain has no balance record of it for the owner. Holds that have expired are dropped (they no longer hold anything) unless includeExpiredHolds.

Parameters​

ParameterType
inputTokenBalanceInput

Returns​

Promise<GalaChainTokenBalanceSummary | undefined>

Throws​

GalaSDKError as fetchBalances.


fetchTokenClass()​

fetchTokenClass(tokenClassKey): Promise<GalaChainTokenClass>

The token class of one key.

Parameters​

ParameterType
tokenClassKeyTokenClassKeyInput

Returns​

Promise<GalaChainTokenClass>

Throws​

GalaSDKError as fetchTokenClasses.


fetchTokenClasses()​

fetchTokenClasses(tokenClassKeys): Promise<GalaChainTokenClass[]>

The token classes of tokenClassKeys (FetchTokenClasses), one per key, in the order asked.

Parameters​

ParameterType
tokenClassKeysreadonly TokenClassKeyInput[]

Returns​

Promise<GalaChainTokenClass[]>

Throws​

GalaSDKError pre-send: INVALID_TOKEN_BATCH (1 to GATEWAY_READ_LIMITS.tokenClasses keys), INVALID_TOKEN_REFERENCE; TOKEN_CLASS_NOT_FOUND for a key the chain has no class of; then the read failures.


fetchTokenClassesPage()​

fetchTokenClassesPage(filter?): Promise<GalaChainPage<GalaChainTokenClass>>

One page of the token classes matching filter (FetchTokenClassesWithPagination).

Parameters​

ParameterType
filter?TokenClassesFilter & PageInput

Returns​

Promise<GalaChainPage<GalaChainTokenClass>>

Throws​

GalaSDKError pre-send: INVALID_TOKEN_REFERENCE, INVALID_PAGE_REQUEST; then the read failures.


fetchTokenClassesWithSupply()​

fetchTokenClassesWithSupply(tokenClassKeys): Promise<GalaChainTokenClass[]>

As fetchTokenClasses, with the chain's supply figures (knownMintSupply, knownMintAllowanceSupply) on each class (FetchTokenClassesWithSupply).

Parameters​

ParameterType
tokenClassKeysreadonly TokenClassKeyInput[]

Returns​

Promise<GalaChainTokenClass[]>


fetchTokenDetails()​

fetchTokenDetails(tokenClassKey): Promise<GalaChainTokenDetails>

The metadata an app shows for a token (its key, symbol, decimals, name, image, description, network and contract address), from its token class: the source of truth for a symbol, which a class key never carries.

Parameters​

ParameterType
tokenClassKeyTokenClassKeyInput

Returns​

Promise<GalaChainTokenDetails>

Throws​

GalaSDKError as fetchTokenClasses.