import type { ChainData, RouteActionResponse, RouteResponse } from "@0xsquid/squid-types";
import type { UseQueryResult } from "@tanstack/react-query";
import type { TransactionErrorWithMessage } from "./error";
import { SwapTransactionHistory } from "./history";
export declare enum TransactionType {
    BRIDGE = "BRIDGE",
    BRIDGE_CALL = "BRIDGE_CALL",
    CALL_BRIDGE = "CALL_BRIDGE",
    CALL_BRIDGE_CALL = "CALL_BRIDGE_CALL"
}
export declare enum AxelarStatusResponseType {
    GAS_PAID_NOT_ENOUGH_GAS = "gas_paid_not_enough_gas",
    DESTINATION_EXECUTED = "destination_executed",
    EXPRESS_EXECUTED = "express_executed",
    CROSS_MULTICALL_EXECUTED = "CrossMulticallExecuted",
    CROSS_MULTICALL_FAILED = "CrossMulticallFailed",
    SRC_GATEWAY_CALLED = "source_gateway_called",
    DEST_GATEWAY_APPROVED = "destination_gateway_approved",
    DESTINATION_EXECUTE_ERROR = "destination_execute_error",
    DESTINATION_EXECUTING = "executing",
    UNKNOWN_ERROR = "unknown_error",
    CANNOT_FETCH_STATUS = "cannot_fetch_status",
    ERROR = "error"
}
export declare enum TransactionStatus {
    SUCCESS = "success",
    NEEDS_GAS = "needs_gas",
    ONGOING = "ongoing",
    PARTIAL_SUCCESS = "partial_success",
    NOT_FOUND = "not_found",
    INITIAL_LOADING = "initialLoading",
    GENERATING_DEPOSIT = "generating_deposit",
    ERROR = "error",
    WARNING = "warning",
    PENDING = "pending",
    REJECTED = "rejected",
    REFUNDED = "refunded"
}
export declare enum SendTransactionStatus {
    ONGOING = 0,
    SUCCESS = 1,
    ERROR = 2
}
export interface TransactionParams {
    routeType: string;
    fromChain?: ChainData;
    toChain?: ChainData;
    nonce?: number;
    /**
     * Some transactions require a special transactionId instead of the source tx hash
     * to be passed to the status endpoint (i.e Chainflip transactions)
     */
    transactionIdForStatus?: string;
    transactionId: string | undefined;
    /**
     * quoteId is used to correlate /route and /status requests
     */
    quoteId: string;
    timestamp?: number;
    /**
     * The source chain transaction status
     */
    sourceStatus?: TransactionStatus;
    /**
     * Cross-chain transaction Status
     */
    status: TransactionStatus;
    error?: TransactionErrorWithMessage;
    fromAddress?: string;
    statusResponse?: any;
    axelarUrl?: string;
    sourceTxExplorerUrl?: string;
    sourceExplorerImgUrl?: string;
    /**
     * User signature, sent to Status API for deposit verification
     * Only used for deposit-with-signature routes
     */
    depositTxVerificationSignature?: string;
}
export type SwapTransactionForHistoryStore = TransactionParams & Pick<RouteResponse["route"], "params" | "estimate">;
export interface StepStatusGetterProps {
    transaction?: TransactionParams;
    statusResponse?: UseQueryResult<any, unknown>;
    onlyFullStatusStep?: boolean;
}
export interface PatchedRouteActionResponse extends Omit<RouteActionResponse, "data"> {
    data?: RouteActionResponse["data"];
    coralV2Order?: Record<string, never>;
}
export type SwapTransactionForStatus = Pick<SwapTransactionHistory, "fromChain" | "transactionId" | "toChain" | "status" | "fromAddress" | "bridgeType" | "transactionIdForStatus" | "actions" | "quoteId"> & Pick<TransactionParams, "depositTxVerificationSignature">;
export type SimplifiedRouteAction = Pick<PatchedRouteActionResponse, "type" | "provider"> & {
    data?: any;
    isCoralV2?: boolean;
};
