import type { AdapterOperation } from "../plugins/adapters/index.js"; import type { AddCollateralOp, DecreaseDebtOp, IncreaseDebtOp, UpdateQuotaOp, WithdrawCollateralOp } from "./inner-operations.js"; import type { CloseCreditAccountOperation, CreditAccountOperation, DirectTokenTransferOperation, FacadeOperationMetadata, LiquidateCreditAccountOperation, MulticallOperation, OpenCreditAccountOperation, PartialLiquidationOperation } from "./types.js"; /** * Visitor that maps each operation node in a {@link CreditAccountOperation} * tree to a new representation. * */ export interface OperationVisitor { Execute(op: AdapterOperation, ctx: FacadeOperationMetadata): TInner; IncreaseBorrowedAmount(op: IncreaseDebtOp, ctx: FacadeOperationMetadata): TInner; DecreaseBorrowedAmount(op: DecreaseDebtOp, ctx: FacadeOperationMetadata): TInner; AddCollateral(op: AddCollateralOp, ctx: FacadeOperationMetadata): TInner; WithdrawCollateral(op: WithdrawCollateralOp, ctx: FacadeOperationMetadata): TInner; UpdateQuota(op: UpdateQuotaOp, ctx: FacadeOperationMetadata): TInner; DirectTokenTransfer(op: DirectTokenTransferOperation): TOuter; MultiCall(op: MulticallOperation, multicall: TInner[]): TOuter; OpenCreditAccount(op: OpenCreditAccountOperation, multicall: TInner[]): TOuter; CloseCreditAccount(op: CloseCreditAccountOperation, multicall: TInner[]): TOuter; LiquidateCreditAccount(op: LiquidateCreditAccountOperation, multicall: TInner[]): TOuter; PartiallyLiquidateCreditAccount(op: PartialLiquidationOperation): TOuter; } /** * Walks a list of {@link CreditAccountOperation}s, mapping each node via the * given visitor */ export declare function mapOperations(ops: CreditAccountOperation[], visitor: OperationVisitor): TOuter[];