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).
gateway writes pre send
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
| Parameter | Type |
|---|---|
options | GatewayReadsOptions |
Returns
GatewayReads
Throws
GalaSDKError INVALID_READS_OPTION (a missing base URL, a requestor that is not a
function), INVALID_TIMEOUT.
gateway reads options invalid option timeout
Methods
fetchAllNftCollectionAuthorizations()
fetchAllNftCollectionAuthorizations(
options?):Promise<GalaChainNftCollectionAuthorization[]>
Every NFT collection authorization, page by page, up to maxPages pages.
Parameters
| Parameter | Type |
|---|---|
options? | AllPagesOptions |
Returns
Promise<GalaChainNftCollectionAuthorization[]>
Throws
GalaSDKError as fetchNftCollectionAuthorizationsPage, plus
PAGINATION_LIMIT_EXCEEDED.
fetch all nft collection authorizations gala chain authorization max pages options pagination limit exceeded
fetchAllTokenClasses()
fetchAllTokenClasses(
filter?,options?):Promise<GalaChainTokenClass[]>
Every token class matching filter, page by page, up to maxPages pages.
Parameters
| Parameter | Type |
|---|---|
filter? | TokenClassesFilter |
options? | AllPagesOptions |
Returns
Promise<GalaChainTokenClass[]>
Throws
GalaSDKError as fetchTokenClassesPage, plus PAGINATION_LIMIT_EXCEEDED.
fetch all token classes gala chain class max pages filter options 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
| Parameter | Type |
|---|---|
filter | BalancesFilter |
Returns
Promise<GalaChainTokenBalance[]>
Throws
GalaSDKError pre-send: INVALID_WALLET_ADDRESS (field: 'owner'),
INVALID_TOKEN_REFERENCE; then the read failures (see the class note).
fetch balances gala chain token balance gateway read response invalid filter wallet address reference
fetchNftBalances()
fetchNftBalances(
filter):Promise<GalaChainTokenBalance[]>
The owner's non-fungible holdings: the balance records that hold at least one instance.
Parameters
| Parameter | Type |
|---|---|
filter | BalancesFilter |
Returns
Promise<GalaChainTokenBalance[]>
Throws
GalaSDKError as fetchBalances.
fetch nft balances gala chain token balance filter
fetchNftCollectionAuthorizationsPage()
fetchNftCollectionAuthorizationsPage(
page?):Promise<GalaChainPage<GalaChainNftCollectionAuthorization>>
One page of the NFT collection authorizations (FetchNftCollectionAuthorizationsWithPagination):
which users may create token classes in which collection.
Parameters
| Parameter | Type |
|---|---|
page? | PageInput |
Returns
Promise<GalaChainPage<GalaChainNftCollectionAuthorization>>
Throws
GalaSDKError pre-send: INVALID_PAGE_REQUEST; then the read failures.
fetch nft collection authorizations page gala chain authorization with pagination input invalid request
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
| Parameter | Type |
|---|---|
user | string |
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).
fetch public key gala chain get pk not found invalid wallet address
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
| Parameter | Type |
|---|---|
input | TokenBalanceInput |
Returns
Promise<GalaChainTokenBalanceSummary | undefined>
Throws
GalaSDKError as fetchBalances.
fetch token balance gala chain summary include expired holds input
fetchTokenClass()
fetchTokenClass(
tokenClassKey):Promise<GalaChainTokenClass>
The token class of one key.
Parameters
| Parameter | Type |
|---|---|
tokenClassKey | TokenClassKeyInput |
Returns
Promise<GalaChainTokenClass>
Throws
GalaSDKError as fetchTokenClasses.
fetch token class key gala chain input
fetchTokenClasses()
fetchTokenClasses(
tokenClassKeys):Promise<GalaChainTokenClass[]>
The token classes of tokenClassKeys (FetchTokenClasses), one per key, in the order asked.
Parameters
| Parameter | Type |
|---|---|
tokenClassKeys | readonly 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.
fetch token classes class keys gala chain key input invalid batch gateway read limits reference not found
fetchTokenClassesPage()
fetchTokenClassesPage(
filter?):Promise<GalaChainPage<GalaChainTokenClass>>
One page of the token classes matching filter (FetchTokenClassesWithPagination).
Parameters
| Parameter | Type |
|---|---|
filter? | TokenClassesFilter & PageInput |
Returns
Promise<GalaChainPage<GalaChainTokenClass>>
Throws
GalaSDKError pre-send: INVALID_TOKEN_REFERENCE, INVALID_PAGE_REQUEST; then the
read failures.
fetch token classes page gala chain class with pagination filter input invalid reference request
fetchTokenClassesWithSupply()
fetchTokenClassesWithSupply(
tokenClassKeys):Promise<GalaChainTokenClass[]>
As fetchTokenClasses, with the chain's supply figures (knownMintSupply,
knownMintAllowanceSupply) on each class (FetchTokenClassesWithSupply).
Parameters
| Parameter | Type |
|---|---|
tokenClassKeys | readonly TokenClassKeyInput[] |
Returns
Promise<GalaChainTokenClass[]>
fetch token classes with supply class keys gala chain known mint allowance key input
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
| Parameter | Type |
|---|---|
tokenClassKey | TokenClassKeyInput |
Returns
Promise<GalaChainTokenDetails>
Throws
GalaSDKError as fetchTokenClasses.
fetch token details class key gala chain input