import { Connector, CreateConnectorFn } from "wagmi"; import { WalletConnectParameters } from "wagmi/connectors"; import { CoinbaseWalletOptions } from "./walletConnectors/coinbaseWallet/coinbaseWallet"; import { WalletConnectWalletOptions } from "./walletConnectors/walletConnectWallet/walletConnectWallet"; export type InstructionStepName = "install" | "create" | "scan" | "connect" | "refresh"; export type Instruction = { learnMoreUrl: string; steps: { step: InstructionStepName; title: string; description: string; }[]; }; type MevmKitConnector = { mobile?: { getUri?: (uri: string) => string; }; desktop?: { getUri?: (uri: string) => string; instructions?: Instruction; }; qrCode?: { getUri: (uri: string) => string; instructions?: Instruction; }; extension?: { instructions?: Instruction; }; }; export type Wallet = { id: string; name: string; rdns?: string; shortName?: string; iconUrl: string | (() => Promise); iconAccent?: string; iconBackground: string; installed?: boolean; downloadUrls?: { android?: string; ios?: string; mobile?: string; qrCode?: string; chrome?: string; edge?: string; firefox?: string; opera?: string; safari?: string; browserExtension?: string; macos?: string; windows?: string; linux?: string; desktop?: string; }; hidden?: () => boolean; createConnector: (walletDetails: WalletDetailsParams) => CreateConnectorFn; } & MevmKitConnector; export interface DefaultWalletOptions { projectId: string; walletConnectParameters?: MevmKitWalletConnectParameters; } export type CreateWalletFn = (createWalletParams: CoinbaseWalletOptions & Omit & DefaultWalletOptions) => Wallet; export type WalletList = { groupName: string; wallets: CreateWalletFn[]; }[]; export type MevmKitWalletConnectParameters = Omit; export type MevmKitDetails = Omit & { index: number; groupIndex: number; groupName: string; isWalletConnectModalConnector?: boolean; isMevmKitConnector: boolean; walletConnectModalConnector?: Connector; showQrModal?: true; }; export type WalletDetailsParams = { mkDetails: MevmKitDetails; }; export type CreateConnector = (walletDetails: { mkDetails: MevmKitDetails; }) => CreateConnectorFn; export type WagmiConnectorInstance = Connector & { mkDetails?: MevmKitDetails; }; export type WalletInstance = Connector & MevmKitDetails; export {};