@broxus/tvm-connect
Version:
Nekoton-compatible wallets connector.
62 lines (61 loc) • 3.05 kB
TypeScript
import { AbstractStore } from '@broxus/js-core';
import { type AddNetwork, type Address, type AssetType, type Network, type ProviderEvents, type ProviderProperties, type ProviderRpcClient, type Subscription } from 'everscale-inpage-provider';
import { type Account, type ConnectionType, type TvmProviderPlatformLinks } from '../types';
export interface NekotonConnectorCtorParams {
fallbackProviderFactory?: () => Promise<ProviderRpcClient> | ProviderRpcClient;
info?: {
description?: string;
icon?: string;
links?: TvmProviderPlatformLinks & {
homepage?: string;
universalLink?: string;
};
name: string;
};
options?: ProviderProperties;
onDisconnect?: (err: any) => 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'];
protected handlePermissionsChanged(event: ProviderEvents['permissionsChanged']): Promise<void>;
protected handleNetworkChanged(event: ProviderEvents['networkChanged']): Promise<void>;
protected handleDisconnected(err: Error): void;
protected runSubscriptions(): Promise<void>;
protected stopSubscriptions(): Promise<void>;
protected networkChangeSubscription: Subscription<'networkChanged'> | undefined;
protected permissionsSubscription: Subscription<'permissionsChanged'> | undefined;
}