import { z } from 'zod';
import { a as Network } from './network-iVfqMzZh.js';
import { LocalAccount } from 'viem';
import { S as SignerWallet } from './wallet-Bgc4Ni-R.js';
import { g as PaymentPayload, a as PaymentRequirements, h as VerifyResponse, S as SettleResponse } from './x402Specs-B89-gkuN.js';

declare const moneySchema: z.ZodPipeline<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodNumber]>, z.ZodNumber>;
type Money = z.input<typeof moneySchema>;

type Resource = `${string}://${string}`;

type CreateHeaders = () => Promise<{
    verify: Record<string, string>;
    settle: Record<string, string>;
}>;
/**
 * Creates a facilitator client for interacting with the X402 payment facilitator service
 *
 * @param facilitator - The facilitator config to use. If not provided, the default facilitator will be used.
 * @returns An object containing verify and settle functions for interacting with the facilitator
 */
declare function useFacilitator(facilitator?: FacilitatorConfig): {
    verify: (payload: PaymentPayload, paymentRequirements: PaymentRequirements) => Promise<VerifyResponse>;
    settle: (payload: PaymentPayload, paymentRequirements: PaymentRequirements) => Promise<SettleResponse>;
};
declare const verify: (payload: PaymentPayload, paymentRequirements: PaymentRequirements) => Promise<VerifyResponse>;
declare const settle: (payload: PaymentPayload, paymentRequirements: PaymentRequirements) => Promise<SettleResponse>;

type FacilitatorConfig = {
    url: Resource;
    createAuthHeaders?: CreateHeaders;
};
type PaywallConfig = {
    cdpClientKey?: string;
    appName?: string;
    appLogo?: string;
    sessionTokenEndpoint?: string;
};
type PaymentMiddlewareConfig = {
    description?: string;
    mimeType?: string;
    maxTimeoutSeconds?: number;
    outputSchema?: object;
    customPaywallHtml?: string;
    resource?: Resource;
};
interface ERC20TokenAmount {
    amount: string;
    asset: {
        address: `0x${string}`;
        decimals: number;
        eip712: {
            name: string;
            version: string;
        };
    };
}
type Price = Money | ERC20TokenAmount;
interface RouteConfig {
    price: Price;
    network: Network;
    config?: PaymentMiddlewareConfig;
}
type RoutesConfig = Record<string, Price | RouteConfig>;
interface RoutePattern {
    verb: string;
    pattern: RegExp;
    config: RouteConfig;
}
type Wallet = SignerWallet | LocalAccount;

export { type CreateHeaders as C, type ERC20TokenAmount as E, type FacilitatorConfig as F, type Money as M, type PaywallConfig as P, type Resource as R, type Wallet as W, type PaymentMiddlewareConfig as a, type Price as b, type RouteConfig as c, type RoutesConfig as d, type RoutePattern as e, moneySchema as m, settle as s, useFacilitator as u, verify as v };
