import { Bridge } from './lifi-bridge-types'; import { Exchange, ExchangeAggregator } from './lifi-exchange-tools'; import { LifiTransactionRequest } from './lifi-transaction-request'; export type Substatus = 'WAIT_SOURCE_CONFIRMATIONS' | 'WAIT_DESTINATION_TRANSACTION' | 'BRIDGE_NOT_AVAILABLE' | 'CHAIN_NOT_AVAILABLE' | 'REFUND_IN_PROGRESS' | 'UNKNOWN_ERROR' | 'COMPLETED' | 'PARTIAL' | 'REFUNDED' | 'NOT_PROCESSABLE_REFUND_NEEDED'; export interface FeeCost { name: string; description: string; percentage: string; token: Token; amount: string; amountUSD?: string; included: boolean; } interface Token { chainId: number; address: string; symbol: string; decimals: number; name: string; coinKey?: string; logoURI?: string; priceUSD: string; } export interface GasCost { type: 'SUM' | 'APPROVE' | 'SEND' | 'FEE'; price: string; estimate: string; limit: string; amount: string; amountUSD: string; token: Token; } export interface Action { fromChainId: number; fromAmount: string; fromToken: Token; fromAddress?: string; toChainId: number; toToken: Token; toAddress?: string; slippage: number; } export interface Estimate { tool: string; fromAmount: string; fromAmountUSD?: string; toAmount: string; toAmountMin: string; toAmountUSD?: string; approvalAddress: string; feeCosts?: FeeCost[]; gasCosts?: GasCost[]; executionDuration: number; } export type Status = 'NOT_STARTED' | 'STARTED' | 'ACTION_REQUIRED' | 'CHAIN_SWITCH_REQUIRED' | 'PENDING' | 'FAILED' | 'DONE' | 'RESUME' | 'CANCELLED'; export type ProcessType = 'TOKEN_ALLOWANCE' | 'SWITCH_CHAIN' | 'SWAP' | 'CROSS_CHAIN' | 'RECEIVING_CHAIN' | 'TRANSACTION'; export interface Process { startedAt: number; doneAt?: number; failedAt?: number; type: ProcessType; status: Status; substatus?: Substatus; message?: string; txHash?: string; txLink?: string; multisigTxHash?: string; error?: { code: string | number; message: string; htmlMessage?: string; }; [key: string]: unknown; } export interface Execution { status: Status; process: Array; fromAmount?: string; toAmount?: string; toToken?: Token; gasPrice?: string; gasUsed?: string; gasToken?: Token; gasAmount?: string; gasAmountUSD?: string; } export declare const emptyExecution: Execution; export declare const _StepType: readonly ['lifi', 'swap', 'cross', 'protocol', 'custom']; export type StepType = (typeof _StepType)[number]; export type StepTool = string; export interface StepBase { id: string; type: StepType; tool: StepTool; toolDetails: Pick; integrator?: string; referrer?: string; action: Action; estimate?: Estimate; execution?: Execution; transactionRequest?: LifiTransactionRequest; } export interface DestinationCallInfo { toContractAddress: string; toContractCallData: string; toFallbackAddress: string; callDataGasLimit: string; } export type CallAction = Action & DestinationCallInfo; export interface SwapStep extends StepBase { type: 'swap'; action: Action; estimate: Estimate; } export interface CrossStep extends StepBase { type: 'cross'; action: Action; estimate: Estimate; } export interface ProtocolStep extends StepBase { type: 'protocol'; action: Action; estimate: Estimate; } export interface CustomStep extends StepBase { type: 'custom'; action: CallAction; estimate: Estimate; } type Step = SwapStep | CrossStep | CustomStep | ProtocolStep; export interface LifiStep extends Omit { type: 'lifi'; includedSteps: Step[]; } export {};