UNPKG

@broxus/js-core

Version:

MobX-based JavaScript Core library

137 lines (136 loc) 6.56 kB
import { type ProviderRpcClient, type Subscriber, Address } from 'everscale-inpage-provider'; import { type SmartContractWatchCallback, SmartContractModel } from '../../core'; import { type VaultTokenWalletCreateOptions, VaultTokenWallet } from '../../models/vault-token-wallet'; import { VaultTokenUtils } from '../../models/vault-token/VaultTokenUtils'; import { type Forceable, type ObjectLiteral, type Silentable, type Syncable, type TokenLikeModel, type TokenRaw, type Watchable } from '../../types'; export interface VaultTokenCtorData extends Omit<VaultTokenData, 'address'> { address: Address | string; } export interface VaultTokenCtorOptions { ttl?: number; watchDebounceDelay?: number; } export interface VaultTokenCreateOptions extends Syncable, VaultTokenCtorOptions, Watchable { watchCallback?: VoidFunction; } export interface VaultTokenData extends Omit<TokenRaw<Address>, 'tags'> { burnByRootDisabled?: boolean; burnPaused?: boolean; mintDisabled?: boolean; rootOwnerAddress?: Address; tags?: string[] | Set<string>; totalSupply?: string; } interface SyncOptions extends Forceable, Silentable { ttl?: number; } export declare class VaultToken<T extends VaultTokenData | ObjectLiteral = VaultTokenData> extends SmartContractModel<T & VaultTokenData> implements TokenLikeModel<Address> { protected readonly _connection: ProviderRpcClient; protected readonly options?: Readonly<VaultTokenCtorOptions> | undefined; protected readonly _provider?: ProviderRpcClient | undefined; static Utils: typeof VaultTokenUtils; static Wallet: typeof VaultTokenWallet; /** * @template T * @param {ProviderRpcClient} _connection * Standalone RPC client that doesn't require connection to the TVM wallet provider * @param {VaultTokenCtorData['address'] | Readonly<T & VaultTokenCtorData>} data * VaultToken root address or an object of a token attributes (e.g. decimals, symbol, name) * @param {Readonly<GaugeAccountCtorOptions>} [options] * (optional) VaultToken Smart Contract Model options * @param {ProviderRpcClient} [_provider] * (optional) RPC provider that require connection to the TVM wallet */ constructor(_connection: ProviderRpcClient, data: VaultTokenCtorData['address'] | Readonly<T & VaultTokenCtorData>, options?: Readonly<VaultTokenCtorOptions> | undefined, _provider?: ProviderRpcClient | undefined); /** * @template {VaultTokenCtorData | ObjectLiteral} V * @param {ProviderRpcClient} connection * Standalone RPC client that doesn't require connection to the TVM wallet provider * @param {VaultTokenCtorData['address'] | Readonly<V & VaultTokenCtorData>} data * VaultToken root address or an object of a token attributes (e.g. decimals, symbol, name) * @param {Readonly<VaultTokenCreateOptions>} [options] * (optional) VaultToken Smart Contract Model options * @param {ProviderRpcClient} [provider] * (optional) RPC provider that require connection to the TVM wallet */ static create<V extends VaultTokenCtorData | ObjectLiteral = VaultTokenCtorData>(connection: ProviderRpcClient, data: VaultTokenCtorData['address'] | Readonly<V & VaultTokenCtorData>, options?: Readonly<VaultTokenCreateOptions>, provider?: ProviderRpcClient): Promise<VaultToken<V>>; sync(options?: SyncOptions): Promise<void>; watch(callback?: SmartContractWatchCallback<T & VaultTokenData>): Promise<Subscriber>; unwatch(): Promise<void>; wallet(ownerAddress: Address | string, options?: VaultTokenWalletCreateOptions): Promise<VaultTokenWallet>; walletOf(ownerAddress: Address | string): Promise<Address>; balance(ownerAddress: Address | string): Promise<string | undefined>; /** * Returns token `address` as a string. * @returns {string} */ get root(): string; /** * Returns token `chainId`. Basically describes in the assets manifest. * @returns {VaultTokenData['chainId']} */ get chainId(): VaultTokenData['chainId']; /** * Returns token `decimals`. Can be described in the assets manifest or * retrieved from a blockchain by a token address * (use **VaultToken.Utils.getDecimals(address)**). * @returns {VaultTokenData['decimals']} */ get decimals(): VaultTokenData['decimals']; /** * Returns token `logoURI`. Basically describes in the assets manifest. * @returns {VaultTokenData['logoURI']} */ get icon(): VaultTokenData['logoURI']; /** * Returns token `name`. Can be described in the assets manifest or * retrieved from a blockchain by a token address * (use **VaultToken.Utils.getName(address)**) * @returns {VaultTokenData['name']} */ get name(): VaultTokenData['name']; /** * Returns token `symbol`. Can be described in the assets manifest or * retrieved from a blockchain by a token address * (use **VaultToken.Utils.getSymbol(address)**) * @returns {VaultTokenData['symbol']} */ get symbol(): VaultTokenData['symbol']; /** * Returns token `rootOwnerAddress`. Can be described in the assets manifest or * retrieved from a blockchain by a token address * (use **VaultToken.Utils.rootOwnerAddress(address)**) * @returns {VaultTokenData['rootOwnerAddress']} */ get rootOwnerAddress(): VaultTokenData['rootOwnerAddress']; /** * Returns token `totalSupply`. Can be described in the assets manifest or * retrieved from a blockchain by a token address * (use **VaultToken.Utils.totalSupply(address)**) * @returns {VaultTokenData['totalSupply']} */ get totalSupply(): VaultTokenData['totalSupply']; /** * Returns token `vendor` as organization slug. Basically describes in the assets manifest. * @returns {VaultTokenData['vendor']} */ get vendor(): VaultTokenData['vendor']; /** * Returns token `verified` flag. Basically describes in the assets manifest. * @returns {VaultTokenData['verified']} */ get verified(): VaultTokenData['verified']; get burnByRootDisabled(): VaultTokenData['burnByRootDisabled']; get burnPaused(): VaultTokenData['burnPaused']; get mintDisabled(): VaultTokenData['mintDisabled']; /** * Get 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(): VaultToken<T>; } export {};