import type { FasedAgentConfig } from "../config/config.js";
import type { WalletChain, WalletProviderId } from "../config/types.wallet.js";
import type { ResolvedWalletRuntimeConfig } from "./wallet-runtime-config.js";
export type WalletPolicySimulationStatus = "pass" | "fail" | "warn" | "info";
export type WalletPolicySimulationCheck = {
    id: string;
    label: string;
    status: WalletPolicySimulationStatus;
    detail: string;
    code?: string;
};
export type WalletApprovalDiff = {
    fromWalletId?: string;
    fromWalletName?: string;
    fromRole: "mining" | "agent" | "vault";
    to?: string;
    chain: WalletChain;
    token?: string;
    mint?: string;
    amount?: string;
    amountDisplay?: string;
    providerId?: WalletProviderId;
    source: string;
    skillId?: string;
    taskId?: string;
    sessionId?: string;
};
export type WalletPolicySimulation = {
    ok: boolean;
    decision: "pass" | "fail" | "needs_approval";
    checks: WalletPolicySimulationCheck[];
    diff: WalletApprovalDiff;
};
export type WalletPolicySimulationPayload = {
    chain: WalletChain;
    walletId?: string;
    walletName?: string;
    providerId?: WalletProviderId;
    to?: string;
    amount?: string;
    amountDisplay?: string;
    assetSymbol?: string;
    inputSymbol?: string;
    outputSymbol?: string;
    contract?: string;
    program?: string;
};
export declare function simulateWalletPolicy(params: {
    cfg?: FasedAgentConfig;
    config: ResolvedWalletRuntimeConfig;
    payload: WalletPolicySimulationPayload;
    mode: "manual" | "autonomous";
    source: string;
    skillId?: string | null;
    taskId?: string;
    sessionId?: string;
    requireDirectSigning?: boolean;
    requireSolanaTokenCap?: boolean;
    skipNativeSolanaCaps?: boolean;
    env?: NodeJS.ProcessEnv;
}): WalletPolicySimulation;
