import { IToken, ITokenBase } from '../../models/IToken'; import { TAddress } from '../../models/TAddress'; import { TResultAsync } from '../../models/TResult'; export interface IOracle { getPrice(token: IToken, opts?: IOracleOptions): TResultAsync; } export interface IOracleOptions { block?: number; date?: Date; } export interface IOracleResult { quote?: ITokenBase; price: number; date: Date; source?: { name: string; address?: TAddress; liquidity?: number; }; } export interface ISwapOptions { /** default: 1 */ amount?: number; amountWei?: bigint; date?: Date; block?: number; route?: string[]; pairs?: { address: TAddress; from: IToken; to: IToken; }[]; }