import { DeepReadonly } from 'ts-essentials'; import { Token, Address, ExchangePrices, PoolPrices, Log, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam, ExchangeTxInfo, PreprocessTransactionOptions } from '../../types'; import { SwapSide, Network } from '../../constants'; import { StatefulEventSubscriber } from '../../stateful-event-subscriber'; import { IDex } from '../../dex/idex'; import { IDexHelper } from '../../dex-helper/idex-helper'; import { MakerPsmData, PoolState, PoolConfig, MakerPsmDirectPayload } from './types'; import { SimpleExchange } from '../simple-exchange'; import { OptimalSwapExchange } from '@paraswap/core'; export declare class MakerPsmEventPool extends StatefulEventSubscriber { protected network: number; protected dexHelper: IDexHelper; poolConfig: PoolConfig; protected vatAddress: Address; handlers: { [event: string]: (event: any, pool: PoolState, log: Log) => PoolState; }; logDecoder: (log: Log) => any; to18ConversionFactor: bigint; bytes32Tout: string; bytes32Tin: string; constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, poolConfig: PoolConfig, vatAddress: Address); handleFile(event: any, pool: PoolState, log: Log): PoolState; handleSellGem(event: any, pool: PoolState, log: Log): PoolState; handleBuyGem(event: any, pool: PoolState, log: Log): PoolState; getIdentifier(): string; /** * The function is called every time any of the subscribed * addresses release log. The function accepts the current * state, updates the state according to the log, and returns * the updated state. * @param state - Current state of event subscriber * @param log - Log released by one of the subscribed addresses * @returns Updates state of the event subscriber after the log */ protected processLog(state: DeepReadonly, log: Readonly): DeepReadonly | null; /** * The function generates state using on-chain calls. This * function is called to regenerate state if the event based * system fails to fetch events and the local state is no * more correct. * @param blockNumber - Blocknumber for which the state should * should be generated * @returns state of the event subscriber at blocknumber */ generateState(blockNumber: number): Promise>; } export declare class MakerPsm extends SimpleExchange implements IDex { protected network: Network; protected dexHelper: IDexHelper; protected adapters: { [side: string]: { name: string; index: number; }[] | null; }; protected dai: Token; protected vatAddress: Address; protected poolConfigs: PoolConfig[]; protected eventPools: { [gemAddress: string]: MakerPsmEventPool; }; readonly hasConstantPriceLargeAmounts = true; readonly isFeeOnTransferSupported = false; static dexKeysWithNetwork: { key: string; networks: Network[]; }[]; logger: Logger; constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: { [side: string]: { name: string; index: number; }[] | null; }, dai?: Token, vatAddress?: Address, poolConfigs?: PoolConfig[]); static getDirectFunctionNameV6(): string[]; initializePricing(blockNumber: number): Promise; getAdapters(side: SwapSide): { name: string; index: number; }[] | null; getEventPool(srcToken: Token, destToken: Token): MakerPsmEventPool | null; getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise; getPoolState(pool: MakerPsmEventPool, blockNumber: number): Promise; computePrices(isSrcDai: boolean, to18ConversionFactor: bigint, side: SwapSide, amounts: bigint[], poolState: PoolState): bigint[]; getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise>; getCalldataGasCost(poolPrices: PoolPrices): number | number[]; getPsmParams(srcToken: string, srcAmount: string, destAmount: string, data: MakerPsmData, side: SwapSide): { isGemSell: boolean; gemAmount: string; }; getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: MakerPsmData, side: SwapSide): AdapterExchangeParam; getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: MakerPsmData, side: SwapSide): Promise; getTokenFromAddress(address: Address): Token; preProcessTransaction?(optimalSwapExchange: OptimalSwapExchange, srcToken: Token, destToken: Token, side: SwapSide, options: PreprocessTransactionOptions): Promise<[OptimalSwapExchange, ExchangeTxInfo]>; getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: MakerPsmData, side: SwapSide): DexExchangeParam; getDirectParamV6(srcToken: Address, destToken: Address, fromAmount: NumberAsString, toAmount: NumberAsString, quotedAmount: NumberAsString, data: MakerPsmData, side: SwapSide, permit: string, uuid: string, partnerAndFee: string, beneficiary: string, blockNumber: number, contractMethod: string): { params: MakerPsmDirectPayload; encoder: (...params: (string | MakerPsmDirectPayload)[]) => string; networkFee: string; }; getTopPoolsForToken(tokenAddress: Address, limit: number): Promise; }