@xspswap/smart-order-router
Version:
XSwap Protocol V3 Smart Order Router
43 lines (42 loc) • 1.73 kB
TypeScript
import { JsonRpcProvider } from '@ethersproject/providers';
import { ChainId, TradeType } from '@x-swap-protocol/sdk-core';
import { SwapOptions, SwapRoute } from '../routers';
import { CurrencyAmount } from '../util';
import { ProviderConfig } from './provider';
import { ArbitrumGasData, OptimismGasData } from './v3/gas-data-provider';
export type SimulationResult = {
transaction: {
hash: string;
gas_used: number;
error_message: string;
};
simulation: {
state_overrides: Record<string, unknown>;
};
};
export declare enum SimulationStatus {
NotSupported = 0,
Failed = 1,
Succeeded = 2,
InsufficientBalance = 3,
NotApproved = 4
}
/**
* Provider for dry running transactions.
*
* @export
* @class Simulator
*/
export declare abstract class Simulator {
protected chainId: ChainId;
protected provider: JsonRpcProvider;
/**
* Returns a new SwapRoute with simulated gas estimates
* @returns SwapRoute
*/
constructor(provider: JsonRpcProvider, chainId: ChainId);
simulate(fromAddress: string, swapOptions: SwapOptions, swapRoute: SwapRoute, amount: CurrencyAmount, quote: CurrencyAmount): Promise<SwapRoute>;
protected abstract simulateTransaction(fromAddress: string, swapOptions: SwapOptions, swapRoute: SwapRoute, l2GasData?: OptimismGasData | ArbitrumGasData, providerConfig?: ProviderConfig): Promise<SwapRoute>;
protected userHasSufficientBalance(fromAddress: string, tradeType: TradeType, amount: CurrencyAmount, quote: CurrencyAmount): Promise<boolean>;
protected checkTokenApproved(fromAddress: string, inputAmount: CurrencyAmount, swapOptions: SwapOptions, provider: JsonRpcProvider): Promise<boolean>;
}