web3-wallets-kit
Version:
Package for connecting with Ethereum wallets for dApp
53 lines (52 loc) • 2 kB
TypeScript
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 {};