/**
 * GrimSwap ZK SDK - High-Level Private Swap
 *
 * Single-function interface for executing a complete private swap.
 * Handles: tree building, proof generation, formatting, relayer submission.
 */
import type { DepositNote, PoolKey, RelayerResponse } from "./types";
/** Configuration for executePrivateSwap */
export interface PrivateSwapParams {
    /** The deposit note (from createDepositNote) */
    note: DepositNote;
    /** Recipient stealth address */
    recipient: string;
    /** Pool key for the swap */
    poolKey: PoolKey;
    /** true = currency0 -> currency1, false = currency1 -> currency0 */
    zeroForOne: boolean;
    /** Swap amount (negative = exact input, positive = exact output) */
    amountSpecified: bigint;
    /** Price limit (use MIN_SQRT_PRICE+1 for zeroForOne, MAX_SQRT_PRICE-1 for !zeroForOne) */
    sqrtPriceLimitX96?: bigint;
    /** Circuit WASM as buffer (fetch from CDN or node_modules) */
    wasmBuffer: ArrayBuffer | Uint8Array;
    /** Proving key as buffer (fetch from CDN or node_modules) */
    zkeyBuffer: ArrayBuffer | Uint8Array;
    /** Relayer URL (defaults to RELAYER_DEFAULT_URL) */
    relayerUrl?: string;
    /** RPC URL for reading deposits (defaults to Unichain Sepolia) */
    rpcUrl?: string;
    /** Pre-fetched commitments array (skip fetching if provided) */
    commitments?: bigint[];
}
/**
 * Execute a complete private swap in one call
 *
 * This is the main entry point for partners. It handles:
 * 1. Fetching all deposits from GrimPool (or uses provided commitments)
 * 2. Building the Merkle tree
 * 3. Generating the ZK proof
 * 4. Formatting and submitting to the relayer
 *
 * @returns RelayerResponse with txHash on success
 *
 * @example
 * ```typescript
 * import {
 *   createDepositNote,
 *   executePrivateSwap,
 *   UNICHAIN_SEPOLIA_ADDRESSES,
 * } from "@grimswap/circuits";
 *
 * // After depositing on-chain...
 * const result = await executePrivateSwap({
 *   note,
 *   recipient: stealthAddress,
 *   poolKey: {
 *     currency0: "0x0000000000000000000000000000000000000000",
 *     currency1: tokenAddress,
 *     fee: 3000,
 *     tickSpacing: 60,
 *     hooks: UNICHAIN_SEPOLIA_ADDRESSES.grimSwapZK,
 *   },
 *   zeroForOne: true,
 *   amountSpecified: -note.amount, // exact input
 *   wasmBuffer,
 *   zkeyBuffer,
 * });
 *
 * console.log(result.txHash);
 * ```
 */
export declare function executePrivateSwap(params: PrivateSwapParams): Promise<RelayerResponse>;
//# sourceMappingURL=privateSwap.d.ts.map