import type { FasedAgentConfig } from "../config/config.js";
import type { WalletProviderId } from "../config/types.wallet.js";
import { type SolanaTransactionInspectionResult } from "./solana-transaction-inspection.js";
import type { WalletProviderSendTxResult } from "./wallet-provider-adapter.js";
import type { ResolvedWalletRuntimeConfig } from "./wallet-runtime-config.js";
import type { WalletSendApprovalPayload } from "./wallet-send-approvals.js";
export declare const SOLANA_NATIVE_MINT = "So11111111111111111111111111111111111111112";
export type SolanaSwapOrder = {
    ok: true;
    requestId?: string;
    transaction?: string;
    inputMint: string;
    outputMint: string;
    inAmount: string;
    outAmount?: string;
    otherAmountThreshold?: string;
    slippageBps?: number;
    priceImpactPct?: string;
    routeLabel?: string;
    raw: Record<string, unknown>;
};
export type SolanaSwapExecutionResult = {
    ok: true;
    tx: WalletProviderSendTxResult;
    order: SolanaSwapOrder;
} | {
    ok: false;
    code: string;
    message: string;
};
export declare function isSolanaSwapApprovalPayload(payload: WalletSendApprovalPayload): payload is WalletSendApprovalPayload & {
    actionKind: "solana_swap";
    chain: "solana";
    inputMint: string;
    outputMint: string;
    amount: string;
    walletId: string;
};
export declare function fetchJupiterSwapOrder(params: {
    inputMint: string;
    outputMint: string;
    amount: string;
    taker?: string;
    slippageBps?: number;
    env?: NodeJS.ProcessEnv;
}): Promise<SolanaSwapOrder>;
export declare function validateSolanaSwapIntentPolicy(params: {
    config: ResolvedWalletRuntimeConfig;
    inputMint: string;
    outputMint: string;
    amount: string;
    autonomous?: boolean;
}): {
    ok: boolean;
    code?: string;
    message?: string;
};
export declare function validateSolanaSwapRoutePolicy(params: {
    config: ResolvedWalletRuntimeConfig;
    routeProgramIds: string[];
}): {
    ok: true;
} | {
    ok: false;
    code: string;
    message: string;
};
export declare function inspectAndValidateSolanaSwapOrder(params: {
    order: SolanaSwapOrder;
    expectedSigner: string;
    rpcUrl?: string;
    config: ResolvedWalletRuntimeConfig;
}): Promise<SolanaTransactionInspectionResult>;
export declare function validateSolanaSwapInputBalance(params: {
    rpcUrl?: string;
    ownerAddress: string;
    inputMint: string;
    amount: string;
}): Promise<{
    ok: true;
} | {
    ok: false;
    code: string;
    message: string;
}>;
export declare function executeSolanaSwapApprovalPayload(params: {
    payload: WalletSendApprovalPayload;
    config: ResolvedWalletRuntimeConfig;
    runtimeConfig: FasedAgentConfig;
    providerIdOverride?: WalletProviderId;
    autonomous?: boolean;
    env?: NodeJS.ProcessEnv;
}): Promise<SolanaSwapExecutionResult>;
