UNPKG

web3-wallets-kit

Version:

Package for connecting with Ethereum wallets for dApp

53 lines (52 loc) 2 kB
import WalletConnectProvider, { ProviderOptions as WalletConnectProviderConfig } from '@walletconnect/web3-provider'; import Web3 from 'web3'; import { Provider } from 'web3/providers'; import { Bitski, BitskiSDKOptions } from 'bitski'; import { O } from 'ts-toolbelt'; import Fortmatic from 'fortmatic'; export declare type ConnectionStatus = 'disconnected' | 'pending' | 'connected'; export interface ConnectResult { web3: Web3; account: string; } export declare type ConnectionDetails<T extends WalletType> = { wallet: T; provider: Provider; } & (InitializationResult<T> extends null ? {} : { payload: InitializationResult<T>; }); export declare type ConnectionDetailsUnion<T extends WalletType = WalletType> = T extends WalletType ? ConnectionDetails<T> : never; interface WalletsSignatures { 'wallet-connect': [WalletConnectProvider, WalletConnectProviderConfig]; bitski: [Bitski, BitskiConfig]; metamask: [null, null]; fortmatic: [Fortmatic, FortmaticConfig]; } export declare type WalletType = keyof WalletsSignatures; declare type InitializationResult<K extends WalletType> = WalletsSignatures[K][0]; declare type InitializationConfig<K extends WalletType> = WalletsSignatures[K][1]; declare type MaybePromise<T> = T | Promise<T>; export declare type Resolver<D extends WalletType> = { initialize(config: InitializationConfig<D>): MaybePromise<ConnectionDetails<D>>; destroy(details: ConnectionDetails<D>): MaybePromise<void>; }; export declare type Resolvers = { [key in WalletType]: Resolver<key>; }; export declare type WalletConfigs = O.Filter<{ [T in WalletType]: InitializationConfig<T>; }, null>; interface BitskiConfig { clientId: string; redirectUri: string; additionalScopes?: string[]; options?: BitskiSDKOptions; } interface FortmaticConfig { apiKey: string; network?: 'rinkeby' | 'kovan' | 'ropsten'; } export interface MetamaskInpageProvider extends Provider { enable?(): Promise<void>; } export {};