Skip to main content

TokenRegistry

Manages token registration and balance lookups. Maps token symbols to contract addresses and raw token types.

Import

import { TokenRegistry } from '@knight-shield/core';

Constructor

const registry = new TokenRegistry();

Methods

register(symbol, contractAddress, opts?): void

Registers a new token.

registry.register('CLOAK', '0x1234...', {
rawTokenType: 'custom_token_type'
});

unregister(symbol): void

Removes a token from the registry.

registry.unregister('CLOAK');

resolve(symbol): TokenInfo | undefined

Looks up a token by symbol.

const token = registry.resolve('CLOAK');
// { symbol: 'CLOAK', contractAddress: '0x1234...', rawTokenType: '...' }

resolveByRawType(rawType): TokenInfo | undefined

Looks up a token by its raw token type identifier.

const token = registry.resolveByRawType('custom_token_type');

list(): TokenInfo[]

Returns all registered tokens.

const tokens = registry.list();

listWithBalances(wallet): Promise<Array<TokenInfo & { balance: bigint }>>

Returns all tokens with their current balances from the wallet.

const tokens = await registry.listWithBalances(wallet);
for (const t of tokens) {
console.log(`${t.symbol}: ${t.balance}`);
}

Serialization

toJSON(): object

Serializes the registry to a plain object for persistence.

const data = registry.toJSON();
localStorage.setItem('tokens', JSON.stringify(data));

fromJSON(data): TokenRegistry

Restores a registry from serialized data.

const data = JSON.parse(localStorage.getItem('tokens'));
const registry = TokenRegistry.fromJSON(data);