From 4ea5feda37b844e1db6f2eb83b55d15fa22dd6b3 Mon Sep 17 00:00:00 2001 From: Chris Jacobs Date: Thu, 17 Oct 2024 14:22:00 -0700 Subject: [PATCH] feat: arm - update abis with final deployed versions --- ....json => origin-lido-arm-cap-manager.json} | 0 abi/origin-lido-arm-zapper.json | 75 +++++++++++++++++++ abi/origin-lido-arm.json | 61 +++++++-------- ...ller.ts => origin-lido-arm-cap-manager.ts} | 0 src/abi/origin-lido-arm-zapper.ts | 56 ++++++++++++++ src/abi/origin-lido-arm.ts | 44 +++++------ src/main-mainnet.ts | 2 +- src/templates/origin-arm/origin-arm.ts | 12 +-- 8 files changed, 181 insertions(+), 69 deletions(-) rename abi/{origin-liquidity-provider-controller.json => origin-lido-arm-cap-manager.json} (100%) create mode 100644 abi/origin-lido-arm-zapper.json rename src/abi/{origin-liquidity-provider-controller.ts => origin-lido-arm-cap-manager.ts} (100%) create mode 100644 src/abi/origin-lido-arm-zapper.ts diff --git a/abi/origin-liquidity-provider-controller.json b/abi/origin-lido-arm-cap-manager.json similarity index 100% rename from abi/origin-liquidity-provider-controller.json rename to abi/origin-lido-arm-cap-manager.json diff --git a/abi/origin-lido-arm-zapper.json b/abi/origin-lido-arm-zapper.json new file mode 100644 index 0000000..276db5f --- /dev/null +++ b/abi/origin-lido-arm-zapper.json @@ -0,0 +1,75 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "_weth", "type": "address" }, + { "internalType": "address", "name": "_lidoArm", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } + ], + "name": "Zap", + "type": "event" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [{ "internalType": "uint256", "name": "shares", "type": "uint256" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "lidoArm", + "outputs": [{ "internalType": "contract ILiquidityProviderARM", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "rescueERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "weth", + "outputs": [{ "internalType": "contract IWETH", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "stateMutability": "payable", "type": "receive" } +] diff --git a/abi/origin-lido-arm.json b/abi/origin-lido-arm.json index 1718a78..ee428f1 100644 --- a/abi/origin-lido-arm.json +++ b/abi/origin-lido-arm.json @@ -100,6 +100,12 @@ "name": "CapManagerUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" }], + "name": "ClaimLidoWithdrawals", + "type": "event" + }, { "anonymous": false, "inputs": [{ "indexed": false, "internalType": "uint256", "name": "crossPrice", "type": "uint256" }], @@ -171,6 +177,15 @@ "name": "RedeemRequested", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, + { "indexed": false, "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" } + ], + "name": "RequestLidoWithdrawals", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -190,12 +205,6 @@ "name": "Transfer", "type": "event" }, - { - "anonymous": false, - "inputs": [{ "indexed": true, "internalType": "address", "name": "zap", "type": "address" }], - "name": "ZapUpdated", - "type": "event" - }, { "inputs": [], "name": "FEE_SCALE", @@ -324,7 +333,7 @@ { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, - { "internalType": "address", "name": "liquidityProvider", "type": "address" } + { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [{ "internalType": "uint256", "name": "shares", "type": "uint256" }], @@ -380,6 +389,13 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "lidoWithdrawalQueue", + "outputs": [{ "internalType": "contract IStETHWithdrawal", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "lidoWithdrawalQueueAmount", @@ -404,7 +420,7 @@ { "inputs": [], "name": "nextWithdrawalIndex", - "outputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }], + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, @@ -505,13 +521,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [{ "internalType": "address", "name": "_zap", "type": "address" }], - "name": "setZap", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "steth", @@ -648,13 +657,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "withdrawalQueue", - "outputs": [{ "internalType": "contract IStETHWithdrawal", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, { "inputs": [{ "internalType": "uint256", "name": "requestId", "type": "uint256" }], "name": "withdrawalRequests", @@ -662,8 +664,8 @@ { "internalType": "address", "name": "withdrawer", "type": "address" }, { "internalType": "bool", "name": "claimed", "type": "bool" }, { "internalType": "uint40", "name": "claimTimestamp", "type": "uint40" }, - { "internalType": "uint120", "name": "assets", "type": "uint120" }, - { "internalType": "uint120", "name": "queued", "type": "uint120" } + { "internalType": "uint128", "name": "assets", "type": "uint128" }, + { "internalType": "uint128", "name": "queued", "type": "uint128" } ], "stateMutability": "view", "type": "function" @@ -671,21 +673,14 @@ { "inputs": [], "name": "withdrawsClaimed", - "outputs": [{ "internalType": "uint120", "name": "", "type": "uint120" }], + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawsQueued", - "outputs": [{ "internalType": "uint120", "name": "", "type": "uint120" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "zap", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], "stateMutability": "view", "type": "function" }, diff --git a/src/abi/origin-liquidity-provider-controller.ts b/src/abi/origin-lido-arm-cap-manager.ts similarity index 100% rename from src/abi/origin-liquidity-provider-controller.ts rename to src/abi/origin-lido-arm-cap-manager.ts diff --git a/src/abi/origin-lido-arm-zapper.ts b/src/abi/origin-lido-arm-zapper.ts new file mode 100644 index 0000000..c42d810 --- /dev/null +++ b/src/abi/origin-lido-arm-zapper.ts @@ -0,0 +1,56 @@ +import * as p from '@subsquid/evm-codec' +import { event, fun, viewFun, indexed, ContractBase } from '@subsquid/evm-abi' +import type { EventParams as EParams, FunctionArguments, FunctionReturn } from '@subsquid/evm-abi' + +export const events = { + AdminChanged: event("0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", "AdminChanged(address,address)", {"previousAdmin": p.address, "newAdmin": p.address}), + Zap: event("0x4a5e9c74490922edc73617d3f521bffd83682ac8c6d5bfe58d1386853c483dff", "Zap(address,uint256,uint256)", {"sender": indexed(p.address), "assets": p.uint256, "shares": p.uint256}), +} + +export const functions = { + deposit: fun("0xd0e30db0", "deposit()", {}, p.uint256), + lidoArm: viewFun("0x0569dcad", "lidoArm()", {}, p.address), + owner: viewFun("0x8da5cb5b", "owner()", {}, p.address), + rescueERC20: fun("0x8cd4426d", "rescueERC20(address,uint256)", {"token": p.address, "amount": p.uint256}, ), + setOwner: fun("0x13af4035", "setOwner(address)", {"newOwner": p.address}, ), + weth: viewFun("0x3fc8cef3", "weth()", {}, p.address), +} + +export class Contract extends ContractBase { + + lidoArm() { + return this.eth_call(functions.lidoArm, {}) + } + + owner() { + return this.eth_call(functions.owner, {}) + } + + weth() { + return this.eth_call(functions.weth, {}) + } +} + +/// Event types +export type AdminChangedEventArgs = EParams +export type ZapEventArgs = EParams + +/// Function types +export type DepositParams = FunctionArguments +export type DepositReturn = FunctionReturn + +export type LidoArmParams = FunctionArguments +export type LidoArmReturn = FunctionReturn + +export type OwnerParams = FunctionArguments +export type OwnerReturn = FunctionReturn + +export type RescueERC20Params = FunctionArguments +export type RescueERC20Return = FunctionReturn + +export type SetOwnerParams = FunctionArguments +export type SetOwnerReturn = FunctionReturn + +export type WethParams = FunctionArguments +export type WethReturn = FunctionReturn + diff --git a/src/abi/origin-lido-arm.ts b/src/abi/origin-lido-arm.ts index b87686f..60b8456 100644 --- a/src/abi/origin-lido-arm.ts +++ b/src/abi/origin-lido-arm.ts @@ -6,6 +6,7 @@ export const events = { AdminChanged: event("0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", "AdminChanged(address,address)", {"previousAdmin": p.address, "newAdmin": p.address}), Approval: event("0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "Approval(address,address,uint256)", {"owner": indexed(p.address), "spender": indexed(p.address), "value": p.uint256}), CapManagerUpdated: event("0xb8fd9afc34c38fcd13b9a3b7646482eb1fddcefb40af2c70609972816eba3208", "CapManagerUpdated(address)", {"capManager": indexed(p.address)}), + ClaimLidoWithdrawals: event("0xb7700a52345bff1ce6201d84f55fe81f2ea203b1b1bdc56a42571819aab2337a", "ClaimLidoWithdrawals(uint256[])", {"requestIds": p.array(p.uint256)}), CrossPriceUpdated: event("0x6f938e86fbdbe7829d0289b348cd9e528f2f17c705f469f4a17a0a2796e007d0", "CrossPriceUpdated(uint256)", {"crossPrice": p.uint256}), Deposit: event("0x90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15", "Deposit(address,uint256,uint256)", {"owner": indexed(p.address), "assets": p.uint256, "shares": p.uint256}), FeeCollected: event("0x06c5efeff5c320943d265dc4e5f1af95ad523555ce0c1957e367dda5514572df", "FeeCollected(address,uint256)", {"feeCollector": indexed(p.address), "fee": p.uint256}), @@ -15,9 +16,9 @@ export const events = { OperatorChanged: event("0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54", "OperatorChanged(address)", {"newAdmin": p.address}), RedeemClaimed: event("0x36dd2c9b55f12509e3b5f4f4d765ddefc2776a28018b18da2335cf2ab93bb268", "RedeemClaimed(address,uint256,uint256)", {"withdrawer": indexed(p.address), "requestId": indexed(p.uint256), "assets": p.uint256}), RedeemRequested: event("0xc04c86cfd81036557541f9c68971ace59cbc9057ecab7d48874a6177ad117f4f", "RedeemRequested(address,uint256,uint256,uint256,uint256)", {"withdrawer": indexed(p.address), "requestId": indexed(p.uint256), "assets": p.uint256, "queued": p.uint256, "claimTimestamp": p.uint256}), + RequestLidoWithdrawals: event("0x3fdbeb02a84d41ebaf1c8edce1b73f1617e0d3675168dfeb8d86759c18782da4", "RequestLidoWithdrawals(uint256[],uint256[])", {"amounts": p.array(p.uint256), "requestIds": p.array(p.uint256)}), TraderateChanged: event("0xa2136948fd1e5333c2ee27c9e48848a560b693e6bbd18082623a738179ff2952", "TraderateChanged(uint256,uint256)", {"traderate0": p.uint256, "traderate1": p.uint256}), Transfer: event("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "Transfer(address,address,uint256)", {"from": indexed(p.address), "to": indexed(p.address), "value": p.uint256}), - ZapUpdated: event("0xbf633270e6b5b5b646ba917300610c382c077992c0e189d732c99f2361bfb9b5", "ZapUpdated(address)", {"zap": indexed(p.address)}), } export const functions = { @@ -38,17 +39,18 @@ export const functions = { convertToShares: viewFun("0xc6e6f592", "convertToShares(uint256)", {"assets": p.uint256}, p.uint256), crossPrice: viewFun("0xf5488330", "crossPrice()", {}, p.uint256), decimals: viewFun("0x313ce567", "decimals()", {}, p.uint8), - 'deposit(uint256,address)': fun("0x6e553f65", "deposit(uint256,address)", {"assets": p.uint256, "liquidityProvider": p.address}, p.uint256), + 'deposit(uint256,address)': fun("0x6e553f65", "deposit(uint256,address)", {"assets": p.uint256, "receiver": p.address}, p.uint256), 'deposit(uint256)': fun("0xb6b55f25", "deposit(uint256)", {"assets": p.uint256}, p.uint256), fee: viewFun("0xddca3f43", "fee()", {}, p.uint16), feeCollector: viewFun("0xc415b95c", "feeCollector()", {}, p.address), feesAccrued: viewFun("0x94db0595", "feesAccrued()", {}, p.uint256), initialize: fun("0xb3ddda2a", "initialize(string,string,address,uint256,address,address)", {"_name": p.string, "_symbol": p.string, "_operator": p.address, "_fee": p.uint256, "_feeCollector": p.address, "_capManager": p.address}, ), lastAvailableAssets: viewFun("0x2eb6328b", "lastAvailableAssets()", {}, p.int128), + lidoWithdrawalQueue: viewFun("0xff3368a1", "lidoWithdrawalQueue()", {}, p.address), lidoWithdrawalQueueAmount: viewFun("0x31ca1c02", "lidoWithdrawalQueueAmount()", {}, p.uint256), liquidityAsset: viewFun("0x209b2bca", "liquidityAsset()", {}, p.address), name: viewFun("0x06fdde03", "name()", {}, p.string), - nextWithdrawalIndex: viewFun("0xbba9282e", "nextWithdrawalIndex()", {}, p.uint16), + nextWithdrawalIndex: viewFun("0xbba9282e", "nextWithdrawalIndex()", {}, p.uint256), operator: viewFun("0x570ca735", "operator()", {}, p.address), owner: viewFun("0x8da5cb5b", "owner()", {}, p.address), previewDeposit: viewFun("0xef8b30f7", "previewDeposit(uint256)", {"assets": p.uint256}, p.uint256), @@ -62,7 +64,6 @@ export const functions = { setOperator: fun("0xb3ab15fb", "setOperator(address)", {"newOperator": p.address}, ), setOwner: fun("0x13af4035", "setOwner(address)", {"newOwner": p.address}, ), setPrices: fun("0x05fefda7", "setPrices(uint256,uint256)", {"buyT1": p.uint256, "sellT1": p.uint256}, ), - setZap: fun("0x6593c2c9", "setZap(address)", {"_zap": p.address}, ), steth: viewFun("0x953d7ee2", "steth()", {}, p.address), 'swapExactTokensForTokens(uint256,uint256,address[],address,uint256)': fun("0x38ed1739", "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)", {"amountIn": p.uint256, "amountOutMin": p.uint256, "path": p.array(p.address), "to": p.address, "deadline": p.uint256}, p.array(p.uint256)), 'swapExactTokensForTokens(address,address,uint256,uint256,address)': fun("0x6c08c57e", "swapExactTokensForTokens(address,address,uint256,uint256,address)", {"inToken": p.address, "outToken": p.address, "amountIn": p.uint256, "amountOutMin": p.uint256, "to": p.address}, ), @@ -78,11 +79,9 @@ export const functions = { transfer: fun("0xa9059cbb", "transfer(address,uint256)", {"to": p.address, "value": p.uint256}, p.bool), transferFrom: fun("0x23b872dd", "transferFrom(address,address,uint256)", {"from": p.address, "to": p.address, "value": p.uint256}, p.bool), weth: viewFun("0x3fc8cef3", "weth()", {}, p.address), - withdrawalQueue: viewFun("0x37d5fe99", "withdrawalQueue()", {}, p.address), - withdrawalRequests: viewFun("0x937b2581", "withdrawalRequests(uint256)", {"requestId": p.uint256}, {"withdrawer": p.address, "claimed": p.bool, "claimTimestamp": p.uint40, "assets": p.uint120, "queued": p.uint120}), - withdrawsClaimed: viewFun("0x35ce81c4", "withdrawsClaimed()", {}, p.uint120), - withdrawsQueued: viewFun("0x6ec68625", "withdrawsQueued()", {}, p.uint120), - zap: viewFun("0x262d6152", "zap()", {}, p.address), + withdrawalRequests: viewFun("0x937b2581", "withdrawalRequests(uint256)", {"requestId": p.uint256}, {"withdrawer": p.address, "claimed": p.bool, "claimTimestamp": p.uint40, "assets": p.uint128, "queued": p.uint128}), + withdrawsClaimed: viewFun("0x35ce81c4", "withdrawsClaimed()", {}, p.uint128), + withdrawsQueued: viewFun("0x6ec68625", "withdrawsQueued()", {}, p.uint128), } export class Contract extends ContractBase { @@ -155,6 +154,10 @@ export class Contract extends ContractBase { return this.eth_call(functions.lastAvailableAssets, {}) } + lidoWithdrawalQueue() { + return this.eth_call(functions.lidoWithdrawalQueue, {}) + } + lidoWithdrawalQueueAmount() { return this.eth_call(functions.lidoWithdrawalQueueAmount, {}) } @@ -223,10 +226,6 @@ export class Contract extends ContractBase { return this.eth_call(functions.weth, {}) } - withdrawalQueue() { - return this.eth_call(functions.withdrawalQueue, {}) - } - withdrawalRequests(requestId: WithdrawalRequestsParams["requestId"]) { return this.eth_call(functions.withdrawalRequests, {requestId}) } @@ -238,16 +237,13 @@ export class Contract extends ContractBase { withdrawsQueued() { return this.eth_call(functions.withdrawsQueued, {}) } - - zap() { - return this.eth_call(functions.zap, {}) - } } /// Event types export type AdminChangedEventArgs = EParams export type ApprovalEventArgs = EParams export type CapManagerUpdatedEventArgs = EParams +export type ClaimLidoWithdrawalsEventArgs = EParams export type CrossPriceUpdatedEventArgs = EParams export type DepositEventArgs = EParams export type FeeCollectedEventArgs = EParams @@ -257,9 +253,9 @@ export type InitializedEventArgs = EParams export type OperatorChangedEventArgs = EParams export type RedeemClaimedEventArgs = EParams export type RedeemRequestedEventArgs = EParams +export type RequestLidoWithdrawalsEventArgs = EParams export type TraderateChangedEventArgs = EParams export type TransferEventArgs = EParams -export type ZapUpdatedEventArgs = EParams /// Function types export type FEE_SCALEParams = FunctionArguments @@ -334,6 +330,9 @@ export type InitializeReturn = FunctionReturn export type LastAvailableAssetsParams = FunctionArguments export type LastAvailableAssetsReturn = FunctionReturn +export type LidoWithdrawalQueueParams = FunctionArguments +export type LidoWithdrawalQueueReturn = FunctionReturn + export type LidoWithdrawalQueueAmountParams = FunctionArguments export type LidoWithdrawalQueueAmountReturn = FunctionReturn @@ -385,9 +384,6 @@ export type SetOwnerReturn = FunctionReturn export type SetPricesParams = FunctionArguments export type SetPricesReturn = FunctionReturn -export type SetZapParams = FunctionArguments -export type SetZapReturn = FunctionReturn - export type StethParams = FunctionArguments export type StethReturn = FunctionReturn @@ -433,9 +429,6 @@ export type TransferFromReturn = FunctionReturn export type WethParams = FunctionArguments export type WethReturn = FunctionReturn -export type WithdrawalQueueParams = FunctionArguments -export type WithdrawalQueueReturn = FunctionReturn - export type WithdrawalRequestsParams = FunctionArguments export type WithdrawalRequestsReturn = FunctionReturn @@ -445,6 +438,3 @@ export type WithdrawsClaimedReturn = FunctionReturn export type WithdrawsQueuedReturn = FunctionReturn -export type ZapParams = FunctionArguments -export type ZapReturn = FunctionReturn - diff --git a/src/main-mainnet.ts b/src/main-mainnet.ts index 4266091..97a013d 100644 --- a/src/main-mainnet.ts +++ b/src/main-mainnet.ts @@ -46,7 +46,7 @@ export const processor = { name: 'origin-arm', from: 20987226, armAddress: addresses.arm.address, - liquidityProviderControllerAddress: addresses.arm.capManager, + capManagerAddress: addresses.arm.capManager, }), ], postProcessors: [exchangeRates, dailyStats, processStatus('mainnet')], diff --git a/src/templates/origin-arm/origin-arm.ts b/src/templates/origin-arm/origin-arm.ts index d3d4b2e..0be4662 100644 --- a/src/templates/origin-arm/origin-arm.ts +++ b/src/templates/origin-arm/origin-arm.ts @@ -3,7 +3,7 @@ import { last } from 'lodash' import * as erc20Abi from '@abi/erc20' import * as originLidoArmAbi from '@abi/origin-lido-arm' -import * as originLiquidityProviderControllerAbi from '@abi/origin-liquidity-provider-controller' +import * as originLidoArmCapManagerAbi from '@abi/origin-lido-arm-cap-manager' import { Arm, ArmDailyStat, ArmState, ArmWithdrawalRequest } from '@model' import { Block, Context, Processor } from '@processor' import { EvmBatchProcessor } from '@subsquid/evm-processor' @@ -16,12 +16,12 @@ export const createOriginARMProcessors = ({ name, from, armAddress, - liquidityProviderControllerAddress, + capManagerAddress, }: { name: string from: number armAddress: string - liquidityProviderControllerAddress: string + capManagerAddress: string }): Processor[] => { const redeemRequestedFilter = logFilter({ address: [armAddress], @@ -113,11 +113,7 @@ export const createOriginARMProcessors = ({ } const previousState = await getPreviousState(block) const armContract = new originLidoArmAbi.Contract(ctx, block.header, armAddress) - const controllerContract = new originLiquidityProviderControllerAbi.Contract( - ctx, - block.header, - liquidityProviderControllerAddress, - ) + const controllerContract = new originLidoArmCapManagerAbi.Contract(ctx, block.header, capManagerAddress) const [ assets0, assets1,