import type { FasedAgentConfig } from "../config/config.js";
import type { FederationMarketplaceOrderConfig } from "../config/types.federation.js";
import { readWalletProviderRegistry } from "../wallet/wallet-provider-registry.js";
import { resolveWalletRuntimeConfig } from "../wallet/wallet-runtime-config.js";
import { createOrExecuteWalletSend, type WalletSendPath } from "../wallet/wallet-send-approvals.js";
export type MarketplaceEscrowDeps = {
    readWalletProviderRegistry: typeof readWalletProviderRegistry;
    resolveWalletRuntimeConfig: typeof resolveWalletRuntimeConfig;
    createOrExecuteWalletSend: typeof createOrExecuteWalletSend;
};
export type MarketplaceEscrowActionResult = {
    ok: true;
    config: FasedAgentConfig;
    order: FederationMarketplaceOrderConfig;
    mode: "manual" | "autonomous";
    requestId?: string;
    txHash?: string;
    status: "submitted" | "held" | "released" | "refunded" | "cancelled";
    message: string;
} | {
    ok: false;
    statusCode: number;
    code: string;
    message: string;
};
export declare function fundMarketplaceSolanaEscrow(params: {
    config: FasedAgentConfig;
    orderId: string;
    actor?: string;
    sendPath?: WalletSendPath;
    env?: NodeJS.ProcessEnv;
    now?: string;
    deps?: Partial<MarketplaceEscrowDeps>;
}): Promise<MarketplaceEscrowActionResult>;
export declare function releaseMarketplaceSolanaEscrow(params: {
    config: FasedAgentConfig;
    orderId: string;
    actor?: string;
    sendPath?: WalletSendPath;
    env?: NodeJS.ProcessEnv;
    now?: string;
    deps?: Partial<MarketplaceEscrowDeps>;
}): Promise<MarketplaceEscrowActionResult>;
export declare function refundMarketplaceSolanaEscrow(params: {
    config: FasedAgentConfig;
    orderId: string;
    actor?: string;
    sendPath?: WalletSendPath;
    env?: NodeJS.ProcessEnv;
    now?: string;
    deps?: Partial<MarketplaceEscrowDeps>;
}): Promise<MarketplaceEscrowActionResult>;
export declare function cancelMarketplaceSolanaEscrow(params: {
    config: FasedAgentConfig;
    orderId: string;
    actor?: string;
    now?: string;
}): Promise<MarketplaceEscrowActionResult>;
