/** * Abstract provider interfaces for the OpenSea SDK. * These allow the SDK to work with both ethers and viem (or any other library). */ /** Transaction receipt returned after sending a transaction. */ export interface TransactionResponse { hash: string wait(): Promise } /** Minimal signer interface for the OpenSea SDK. */ export interface OpenSeaSigner { getAddress(): Promise sendTransaction(tx: { to: string data?: string value?: bigint from?: string overrides?: Record }): Promise signTypedData( domain: { chainId: string | number name: string version: string verifyingContract: string }, types: Record>, value: Record, ): Promise } /** Minimal provider interface for the OpenSea SDK. */ export interface OpenSeaProvider { waitForTransaction(hash: string): Promise } /** Combined wallet: either signer+provider or provider-only. */ export type OpenSeaWallet = | { signer: OpenSeaSigner; provider: OpenSeaProvider } | { provider: OpenSeaProvider } /** Contract read/write interface. */ export interface ContractCaller { readContract(params: { address: string abi: readonly unknown[] functionName: string args: unknown[] }): Promise writeContract(params: { address: string abi: readonly unknown[] functionName: string args: unknown[] value?: bigint overrides?: Record }): Promise encodeFunctionData(params: { abi: readonly unknown[] functionName: string args: unknown[] }): string }