@broxus/tvm-connect
Version:
TypeScript SDK for connecting to Nekoton-compatible wallets using a unified interface.
57 lines (56 loc) • 3.14 kB
TypeScript
import { type Silentable, AbstractStore } from '@broxus/js-core';
import { type AddNetwork, type Address, type AssetType, type Network, type ProviderEvents, type ProviderRpcClient, type Subscription } from 'everscale-inpage-provider';
import { type Account, type ConnectionType, type TvmWalletProviderInfo } from '../types';
export interface NekotonConnectorCtorParams {
fallbackProviderFactory?: () => Promise<ProviderRpcClient> | ProviderRpcClient;
info?: TvmWalletProviderInfo;
onDisconnect?: (err: any) => Promise<void> | void;
onPreconnect?: (connector: NekotonConnector) => Promise<void> | void;
}
export interface NekotonConnectorData {
account?: Account;
chainId?: number;
version?: string;
}
export interface NekotonConnectorState {
isConnecting?: boolean;
isDisconnecting?: boolean;
isInitialized?: boolean;
isInitializing?: boolean;
}
export interface ConnectOptions {
onConnect?: (connector: NekotonConnector) => Promise<void> | void;
}
export interface DisconnectOptions {
force?: boolean;
onDisconnect?: (connector: NekotonConnector) => Promise<void> | void;
}
export declare abstract class NekotonConnector extends AbstractStore<NekotonConnectorData, NekotonConnectorState> {
protected readonly params?: Readonly<NekotonConnectorCtorParams> | undefined;
abstract readonly type: ConnectionType;
provider?: ProviderRpcClient;
protected constructor(params?: Readonly<NekotonConnectorCtorParams> | undefined);
abstract init(): Promise<ProviderRpcClient | undefined>;
connect(networkIdOParams?: number | AddNetwork, options?: ConnectOptions): Promise<void>;
disconnect(options?: DisconnectOptions): Promise<void>;
addAsset(address: Address | string, type?: AssetType): Promise<boolean>;
addNetwork(network: AddNetwork, switchNetwork?: boolean): Promise<Network | null>;
switchNetwork(networkIdOParams: number | AddNetwork): Promise<Network | null>;
get account(): NekotonConnectorData['account'];
get chainId(): NekotonConnectorData['chainId'];
get version(): NekotonConnectorData['version'];
get isConnecting(): NekotonConnectorState['isConnecting'];
get isDisconnecting(): NekotonConnectorState['isDisconnecting'];
get isInitialized(): NekotonConnectorState['isInitialized'];
get isInitializing(): NekotonConnectorState['isInitializing'];
get info(): TvmWalletProviderInfo | undefined;
protected runSubscriptions(options?: Silentable): Promise<void>;
protected stopSubscriptions(options?: Silentable): Promise<void>;
protected preConnect(): Promise<void>;
protected handlePermissionsChanged(event: ProviderEvents['permissionsChanged']): Promise<void>;
protected handleNetworkChanged(event: ProviderEvents['networkChanged']): Promise<void>;
protected handleDisconnected(err: ProviderEvents['disconnected']): Promise<void>;
protected _networkChangeSubscription: Subscription<'networkChanged'> | undefined;
protected _permissionsSubscription: Subscription<'permissionsChanged'> | undefined;
protected _disconnectSubscription: Subscription<'disconnected'> | undefined;
}