import { Quote } from '@imtbl/dex-sdk'; import { TransactionRequest, TransactionResponse } from 'ethers'; import { ViewType } from './ViewType'; export declare enum SwapWidgetViews { SWAP = "SWAP", IN_PROGRESS = "IN_PROGRESS", SUCCESS = "SUCCESS", FAIL = "FAIL", PRICE_SURGE = "PRICE_SURGE", APPROVE_ERC20 = "APPROVE_ERC20_SWAP", SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE" } export type SwapWidgetView = SwapView | SwapInProgressView | SwapSuccessView | PriceSurgeView | SwapFailView | ApproveERC20View | ServiceUnavailableView; export interface SwapSuccessView extends ViewType { type: SwapWidgetViews.SUCCESS; data: { fromTokenAddress: string; fromAmount: string; toTokenAddress: string; toAmount: string; transactionHash: string; }; } interface SwapFailView extends ViewType { type: SwapWidgetViews.FAIL; data: PrefilledSwapForm; reason?: string; } interface PriceSurgeView extends ViewType { type: SwapWidgetViews.PRICE_SURGE; data: PrefilledSwapForm; } interface SwapView extends ViewType { type: SwapWidgetViews.SWAP; data?: PrefilledSwapForm; } interface ApproveERC20View extends ViewType { type: SwapWidgetViews.APPROVE_ERC20; data: ApproveERC20SwapData; } interface ServiceUnavailableView extends ViewType { type: SwapWidgetViews.SERVICE_UNAVAILABLE; } interface SwapInProgressView extends ViewType { type: SwapWidgetViews.IN_PROGRESS; data: { transactionResponse: TransactionResponse; swapForm: PrefilledSwapForm; }; } export interface ApproveERC20SwapData { approveTransaction?: TransactionRequest; transaction: TransactionRequest; info: Quote; swapFormInfo: PrefilledSwapForm; autoProceed: boolean; } export interface PrefilledSwapForm { fromAmount: string; fromTokenAddress: string; toTokenAddress: string; toAmount?: string; } export {};