export interface AbstractProvider { getChainId(): Promise; call(tx: { to: string; data: string }): Promise; // eslint-disable-next-line @typescript-eslint/no-explicit-any send(method: string, params: any[]): Promise; } export interface AbstractSigner { getAddress(): Promise; signTypedData( domain: object, types: Record>, value: object, ): Promise; provider: AbstractProvider; sendTransaction(tx: { to: string; data: string }): Promise; } export type Environment = "MOCK" | "LOCAL" | "TESTNET" | "MAINNET"; export type CofhejsMocksConfig = { decryptDelay?: number; zkvSigner?: AbstractSigner; }; export type InitializationParams = { provider: AbstractProvider; signer?: AbstractSigner; securityZones?: number[]; coFheUrl?: string; verifierUrl?: string; thresholdNetworkUrl?: string; tfhePublicKeySerializer: (buff: Uint8Array) => void; compactPkeCrsSerializer: (buff: Uint8Array) => void; mockConfig?: CofhejsMocksConfig; };