@broxus/js-bridge-essentials
Version:
Bridge JavaScript Essentials library
61 lines (60 loc) • 2.18 kB
TypeScript
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>;
}