UNPKG

@broxus/js-bridge-essentials

Version:

Bridge JavaScript Essentials library

61 lines (60 loc) 2.18 kB
import { type ObjectLiteral, type Syncable, type TokenLikeModel, type TokenRaw, type Watchable, AbstractStore } from '@broxus/js-core'; import { type Connection, PublicKey } from '@solana/web3.js'; import { SolanaTokenUtils } from '../../models/solana-token/SolanaTokenUtils'; export interface SolanaTokenData extends Omit<TokenRaw<PublicKey>, 'tags'> { tags?: string[] | Set<string>; } export interface SolanaTokenState { isSyncing: boolean; isSyncingBalance: boolean; } export interface SolanaTokenCtorData extends Omit<SolanaTokenData, 'address'> { address: PublicKey | string; } export interface SolanaTokenCreateOptions extends Syncable, Watchable { } export declare class SolanaToken<T extends SolanaTokenData | ObjectLiteral = SolanaTokenData> extends AbstractStore<SolanaTokenData & T, SolanaTokenState> implements TokenLikeModel<PublicKey> { protected readonly _connection: Connection; static Utils: typeof SolanaTokenUtils; constructor(_connection: Connection, data: SolanaTokenCtorData['address'] | Readonly<T & SolanaTokenCtorData>); static create<V extends SolanaTokenData | ObjectLiteral = SolanaTokenData>(connection: Connection, data: SolanaTokenCtorData['address'] | Readonly<V & SolanaTokenCtorData>, options?: Readonly<SolanaTokenCreateOptions>): Promise<SolanaToken<V>>; balance(ownerAddress: PublicKey | string): Promise<string>; /** * Returns token root address as instance of Address. * @returns {SolanaTokenData['address']} */ get address(): SolanaTokenData['address']; /** * */ get chainId(): SolanaTokenData['chainId']; /** * */ get decimals(): SolanaTokenData['decimals']; /** * */ get icon(): SolanaTokenData['logoURI']; /** * */ get name(): SolanaTokenData['name']; /** * */ get root(): string; /** * */ get symbol(): SolanaTokenData['symbol']; /** * Get custom value by the given key * @param {K extends keyof T & string} key */ get<K extends keyof T & string>(key: K): T[K]; /** * Returns copy of the current token */ clone(): SolanaToken<T>; }