import { Interface } from '@ethersproject/abi'; import type { DeepReadonly } from 'ts-essentials'; import type { BlockHeader, Log, Logger } from '../../types'; import { StatefulEventSubscriber } from '../../stateful-event-subscriber'; import type { IDexHelper } from '../../dex-helper/idex-helper'; import type { PoolState } from './types'; export declare class AngleStakedStableEventPool extends StatefulEventSubscriber { readonly parentName: string; protected network: number; protected dexHelper: IDexHelper; stakeToken: string; agToken: string; handlers: { [event: string]: (event: any, state: DeepReadonly, log: Readonly, blockHeader: Readonly) => DeepReadonly | null; }; static angleStakedStableIface: Interface; static erc20Iface: Interface; logDecoder: (log: Log) => any; addressesSubscribed: string[]; BASE_27: bigint; HALF_BASE_27: bigint; ZERO: bigint; constructor(parentName: string, network: number, dexHelper: IDexHelper, stakeToken: string, agToken: string, logger: Logger); /** * 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, blockHeader: 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>; getOrGenerateState(blockNumber: number): Promise | null>; getRateDeposit(amount: bigint, state: PoolState): bigint; getRateMint(shares: bigint, state: PoolState): bigint; getRateRedeem(shares: bigint, state: PoolState): bigint; getRateWithdraw(amount: bigint, state: PoolState): bigint; _accrue(state: PoolState): bigint; _computeUpdatedAssets(amount: bigint, rate: bigint, exp: bigint): bigint; handleAccrued(event: any, state: PoolState, log: Readonly, blockHeader: BlockHeader): DeepReadonly | null; handleRateUpdated(event: any, state: PoolState, log: Readonly, blockHeader: BlockHeader): DeepReadonly | null; handleDeposit(event: any, state: PoolState, log: Readonly, blockHeader: BlockHeader): DeepReadonly | null; handleWithdraw(event: any, state: PoolState, log: Readonly, blockHeader: BlockHeader): DeepReadonly | null; handleToggledPause(event: any, state: PoolState, log: Readonly): DeepReadonly | null; }