import type { SigningKey, BytesLike, BigNumberish, Interface, Result, FunctionFragment, } from "ethers"; type HexString = string; type AnySync = T | Promise; interface Record { addr?(type: bigint): AnySync; data?(key: string): AnySync; text?(key: string): AnySync; contenthash?(): AnySync; pubkey?(): AnySync< { x: BigNumberish; y: BigNumberish } | BytesLike | undefined >; name?(): AnySync; ABI?( types: number ): AnySync<{ type: number; data: BytesLike } | BytesLike | undefined>; } type Show = any | any[]; type History = { level: number; next?: History; children: History[]; name?: string; error?: any; show?: Show | (() => Show); enter(): History; then(): History; }; type SigningProtocol = "tor" | "ens" | "raw"; type CallContextExtra = { [key: string]: any }; type CallContext = { origin: HexString; sender: HexString; calldata: HexString; protocol: SigningProtocol; signingKey: SigningKey; history: History; } & CallContextExtra; type CCIPReadFunction = ( args: Result, context: CallContext, history: History ) => AnySync; type CCIPReadHandler = { abi: Interface; frag: FunctionFragment; fn: CCIPReadFunction; }; type RecordFunction = ( name: string, context: CallContext ) => AnySync; type EZCCIPConfig = { origin?: HexString; protocol?: SigningProtocol; signingKey?: SigningKey; ttlSec?: number; recursionLimit?: number; } & CallContextExtra; type ENSIP10Options = { multicall?: boolean; defaultAddress?: boolean; throwErrors?: boolean; }; export class EZCCIP { enableENSIP10(get: RecordFunction, options?: ENSIP10Options & { unreachableAsEmpty?: boolean}): void; register( abi: string | string[] | FunctionFragment | Interface, impl: CCIPReadFunction | { [name: string]: CCIPReadFunction } ): CCIPReadHandler[]; findHandler(key: string | FunctionFragment): CCIPReadHandler | undefined; handleRead( sender: HexString, calldata: HexString, config: EZCCIPConfig ): Promise<{ data: HexString; history: History }>; } export function processENSIP10( record: Record | undefined, calldata: HexString, options?: ENSIP10Options, history?: History ): HexString; export function asciiize(s: string): string; export function labels_from_dns_encoded(v: Uint8Array): string[]; export function error_with( message: string, options: Object, cause?: any ): Error; export const RESOLVE_ABI: Interface;