import { type Hex, type PublicClient } from "viem"; export declare function getPublicClient(): PublicClient; export interface ApprovalItem { label: string; token: Hex; spender: Hex; kind: "erc20" | "erc1155"; granted: boolean; } /** * An approval transaction landing is not the same as the approvals being on * the books — re-read the chain (retrying across RPC propagation lag, the same * 3×750ms shape as redeem's post-transaction reads) and believe ONLY what it * says. An empty read can never count as granted, so a truncated RPC response * cannot fake success. Throws if every read attempt fails; the caller decides * how to report "chain state unknown". `readFn` is injected so tests can pin * the retry/verdict logic without an RPC. */ export declare function verifyApprovalsLanded(readFn: () => Promise, attempts?: number, delayMs?: number): Promise<{ approvals: ApprovalItem[]; allGranted: boolean; }>; export declare function getPusdBalance(owner: Hex): Promise; export declare function runSetup(opts: { confirm: boolean; }): Promise<{ text: string; structured: Record; }>;