UNPKG

@gemini-wallet/core

Version:

Core SDK for Gemini Wallet integration with popup communication

133 lines 4.04 kB
import { EventEmitter } from "eventemitter3"; import type { Address, Hex, SignMessageParameters, SignTypedDataParameters, TransactionRequest } from "viem"; import { type IStorage } from "./storage/storageInterface"; export declare enum GeminiSdkEvent { POPUP_LOADED = "POPUP_LOADED", POPUP_UNLOADED = "POPUP_UNLOADED", POPUP_APP_CONTEXT = "POPUP_APP_CONTEXT", SDK_CONNECT = "SDK_CONNECT", SDK_DISCONNECT = "SDK_DISCONNECT", SDK_SEND_TRANSACTION = "SDK_SEND_TRANSACTION", SDK_SIGN_DATA = "SDK_SIGN_DATA", SDK_SIGN_TYPED_DATA = "SDK_SIGN_TYPED_DATA", SDK_SWITCH_CHAIN = "SDK_SWITCH_CHAIN", SDK_OPEN_SETTINGS = "SDK_OPEN_SETTINGS", SDK_CURRENT_ACCOUNT = "SDK_CURRENT_ACCOUNT" } export interface AppMetadata { appName?: string; appLogoUrl?: string; name?: string; description?: string; url?: string; icons?: string[]; } export interface AppContext { appMetadata: AppMetadata; origin: string; sdkVersion: string; } export interface Chain { id: number; rpcUrl?: string; } export declare const PlatformType: { readonly REACT_NATIVE: "REACT_NATIVE"; readonly WEB: "WEB"; }; export type PlatformType = (typeof PlatformType)[keyof typeof PlatformType]; export type GeminiProviderConfig = { appMetadata: AppMetadata; chain: Chain; platform?: PlatformType; onDisconnectCallback?: () => void; storage?: IStorage; }; export interface RpcRequestArgs { readonly method: string; readonly params?: readonly unknown[] | object | Hex[]; } export interface ProviderRpcError extends Error { code: number; data?: unknown; message: string; } export type ProviderEventMap = { accountsChanged: string[]; chainChanged: string; connect: { readonly chainId: string; }; disconnect: ProviderRpcError; }; export type ProviderEventCallback = ProviderInterface["emit"]; export declare class ProviderEventEmitter extends EventEmitter<keyof ProviderEventMap> { } export interface ProviderInterface extends ProviderEventEmitter { disconnect(): Promise<void>; emit<K extends keyof ProviderEventMap>(event: K, ...args: [ProviderEventMap[K]]): boolean; on<K extends keyof ProviderEventMap>(event: K, listener: (_: ProviderEventMap[K]) => void): this; request(args: RpcRequestArgs): Promise<any>; } export interface GeminiSdkMessage { chainId: number; data?: unknown; event: GeminiSdkEvent; origin: string; requestId?: string; wcData?: any; } export interface GeminiSdkMessageResponse { data?: unknown; event: GeminiSdkEvent; requestId?: string; } export interface ConnectResponse extends Omit<GeminiSdkMessageResponse, "data"> { data: { address: Address; }; } export interface SendTransactionResponse extends Omit<GeminiSdkMessageResponse, "data"> { data: { hash?: Hex; error?: string; }; } export interface SignMessageResponse extends Omit<GeminiSdkMessageResponse, "data"> { data: { hash?: Hex; error?: string; }; } export interface SignTypedDataResponse extends Omit<GeminiSdkMessageResponse, "data"> { data: { hash?: Hex; error?: string; }; } export interface SwitchChainResponse extends Omit<GeminiSdkMessageResponse, "data"> { data: { chainId?: number; error?: string; }; } export interface GeminiSdkSendTransaction extends Omit<GeminiSdkMessage, "data"> { data: TransactionRequest; } export interface GeminiSdkSignMessage extends Omit<GeminiSdkMessage, "data"> { data: SignMessageParameters; } export interface GeminiSdkSignTypedData extends Omit<GeminiSdkMessage, "data"> { data: SignTypedDataParameters; } export interface GeminiSdkSwitchChain extends Omit<GeminiSdkMessage, "data"> { data: number; } export interface GeminiSdkAppContextMessage extends Omit<GeminiSdkMessage, "data"> { data: AppContext; } export interface ReverseEnsResponse { address: Address; name: string | null; } //# sourceMappingURL=types.d.ts.map