@reown/appkit-utils
Version:
The full stack toolkit to build onchain app UX.
57 lines (56 loc) • 1.85 kB
TypeScript
import type UniversalProvider from '@walletconnect/universal-provider';
import type { W3mFrameProvider } from '@reown/appkit-wallet';
import type { BaseProvider } from './BaseProvider.js';
import type { CoinbaseWalletProvider } from './CoinbaseProvider.js';
import type { InjectedProvider } from './InjectedProvider.js';
import type { SafeProvider } from './SafeProvider.js';
export type Address = `0x${string}`;
export type ProviderType = {
injected?: InjectedProvider;
baseAccount?: BaseProvider;
coinbaseWallet?: CoinbaseWalletProvider;
safe?: SafeProvider;
EIP6963?: boolean;
metadata: Metadata;
};
export interface RequestArguments {
readonly method: string;
readonly params?: readonly unknown[] | object;
}
type ProviderEventListener = {
connect: (connectParams: {
chainId: number;
}) => void;
disconnect: (error: Error) => void;
chainChanged: (chainId: string) => void;
accountsChanged: (accounts: string[]) => void;
message: (message: {
type: string;
data: unknown;
}) => void;
};
export interface Provider {
request: <T>(args: RequestArguments) => Promise<T>;
on<T extends keyof ProviderEventListener>(event: T, listener: ProviderEventListener[T]): void;
removeListener: <T>(event: string, listener: (data: T) => void) => void;
emit: (event: string) => void;
}
export type Metadata = {
name: string;
description: string;
url: string;
icons: string[];
};
export type CombinedProvider = W3mFrameProvider & Provider;
export type UniversalProviderType = UniversalProvider & W3mFrameProvider & Provider;
export type Chain = {
id: string | number;
chainId: string | number;
name: string;
currency: string;
explorerUrl: string;
rpcUrl: string;
chain: string;
imageId: string | undefined;
};
export {};