import { DirectExecutionType } from '@funkit/api-base';
import { type CheckoutQuoteResponse } from '@funkit/utils';
import type { Address, Hex } from 'viem';
import { PaymentMethod } from '~/domains/paymentMethods';
import type { FunkitCheckoutQuoteResult } from '~/domains/quote';
import type { FunkitActiveCheckoutItem, FunkitCheckoutActionParams, FunkitCheckoutConfig } from '~/providers/FunkitCheckoutContext';
interface DirectExecutionQuoteRequestParams {
    actionParams: FunkitCheckoutActionParams[];
    toChainId: string;
    toTokenAddress: Address;
    toTokenAmount: number;
    toTokenDecimals: number;
    fromChainId: string;
    fromTokenAddress: Address;
    recipientAddress: Address;
}
interface DirectExecutionStartParams {
    checkoutItem: FunkitActiveCheckoutItem;
    stepMessageSetter: (m: string) => void;
    actionsParams: FunkitCheckoutActionParams[];
    latestQuote: FunkitCheckoutQuoteResult;
}
export interface FunkitDirectExecutionInfo {
    isDirectExecution: boolean;
    directExecutionType: DirectExecutionType | null;
    getDirectExecutionQuote: (params: DirectExecutionQuoteRequestParams) => Promise<CheckoutQuoteResponse | null>;
    executeDirectExecution: (params: DirectExecutionStartParams) => Promise<Hex | null>;
}
interface UseCheckoutDirectExecutionReturn {
    getDirectExecutionInfo: (checkoutItem: FunkitActiveCheckoutItem | null) => FunkitDirectExecutionInfo;
}
export declare function isVertexDirectExecution({ apiKey, config, paymentMethod, sourceAsset, sourceChain, targetAsset, targetChain, }: {
    apiKey: string;
    config: FunkitCheckoutConfig;
    paymentMethod: PaymentMethod | undefined;
    sourceAsset: string;
    sourceChain: string;
    targetAsset?: string;
    targetChain?: string;
}): boolean;
export declare function useCheckoutDirectExecution(): UseCheckoutDirectExecutionReturn;
export {};
