Skip to content

Commit 8cb7d0b

Browse files
committed
add etherfi arm
1 parent a18272c commit 8cb7d0b

File tree

11 files changed

+1964
-25
lines changed

11 files changed

+1964
-25
lines changed

abi/origin-etherfi-arm.json

Lines changed: 854 additions & 0 deletions
Large diffs are not rendered by default.

src/abi/compound-staking-ssv-strategy.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { EventParams as EParams, FunctionArguments, FunctionReturn } from '@subsquid/evm-abi'
2-
import { ContractBase, event, fun, indexed, viewFun } from '@subsquid/evm-abi'
31
import * as p from '@subsquid/evm-codec'
2+
import { event, fun, viewFun, indexed, ContractBase } from '@subsquid/evm-abi'
3+
import type { EventParams as EParams, FunctionArguments, FunctionReturn } from '@subsquid/evm-abi'
44

55
export const events = {
66
BalancesSnapped: event("0xb7523e03ed4a74718427c422a01fee1138835adb5bd592240f30bd8b5e1b929a", "BalancesSnapped(bytes32,uint256)", {"blockRoot": indexed(p.bytes32), "ethBalance": p.uint256}),

src/abi/origin-etherfi-arm.ts

Lines changed: 560 additions & 0 deletions
Large diffs are not rendered by default.

src/abi/origin-os-arm.ts

Lines changed: 486 additions & 0 deletions
Large diffs are not rendered by default.

src/main-mainnet.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { coingeckoProcessor } from 'mainnet/processors/coingecko'
22
import { notionProcessor } from 'mainnet/processors/notion'
33
import { ognBuybacks } from 'mainnet/processors/ogn-buybacks'
4-
import { originArmProcessors } from 'mainnet/processors/origin-arm'
4+
import { originArmProcessors } from 'mainnet/processors/origin-arms'
55
import { protocolSqlSimpleProcessor } from 'mainnet/processors/protocol/protocol-sql-simple'
66
import 'tsconfig-paths/register'
77
import { mainnet } from 'viem/chains'
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { createOriginARMProcessors } from '@templates/origin-arm'
2+
import { addresses } from '@utils/addresses'
3+
4+
export const originArmProcessors = [
5+
// Lido ARM
6+
...createOriginARMProcessors({
7+
name: 'ARM-WETH-stETH',
8+
from: 20987226,
9+
armAddress: addresses.arms['ARM-WETH-stETH'].address,
10+
underlyingToken: 'WETH',
11+
capManagerAddress: addresses.arms['ARM-WETH-stETH'].capManager,
12+
armType: 'lido',
13+
marketFrom: 23130294,
14+
}),
15+
16+
// Ether.fi ARM
17+
...createOriginARMProcessors({
18+
name: 'ARM-WETH-eETH',
19+
from: 23689028,
20+
armAddress: addresses.arms['ARM-WETH-eETH'].address,
21+
underlyingToken: 'WETH',
22+
capManagerAddress: addresses.arms['ARM-WETH-eETH'].capManager,
23+
armType: 'etherfi',
24+
marketFrom: 23689033,
25+
}),
26+
]

src/sonic/origin-sonic-arm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ export const sonicArmProcessors = createOriginARMProcessors({
88
underlyingToken: 'S',
99
capManagerAddress: sonicAddresses.armOS.capManager,
1010
marketFrom: 37481525,
11-
lidoArm: false,
11+
armType: 'os',
1212
})

src/templates/origin-arm/origin-arm.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { LessThan } from 'typeorm'
44
import { formatUnits } from 'viem'
55

66
import * as erc20Abi from '@abi/erc20'
7-
import * as originArmAbi from '@abi/origin-arm'
7+
import * as originOsArmAbi from '@abi/origin-arm'
8+
import * as originEtherfiArmAbi from '@abi/origin-etherfi-arm'
89
import * as originLidoArmAbi from '@abi/origin-lido-arm'
910
import * as originLidoArmCapManagerAbi from '@abi/origin-lido-arm-cap-manager'
1011
import { Arm, ArmDailyStat, ArmState, ArmSwap, ArmWithdrawalRequest, TraderateChanged } from '@model'
@@ -30,15 +31,15 @@ export const createOriginARMProcessors = ({
3031
underlyingToken,
3132
capManagerAddress,
3233
marketFrom,
33-
lidoArm,
34+
armType,
3435
}: {
3536
name: string
3637
from: number
3738
armAddress: string
3839
underlyingToken: Currency
3940
capManagerAddress: string
4041
marketFrom?: number
41-
lidoArm: boolean
42+
armType: 'lido' | 'etherfi' | 'os'
4243
}): Processor[] => {
4344
const redeemRequestedFilter = logFilter({
4445
address: [armAddress],
@@ -110,7 +111,7 @@ export const createOriginARMProcessors = ({
110111
if (entity) {
111112
armEntity = entity
112113
} else {
113-
const armContract = new originArmAbi.Contract(ctx, ctx.blocks[0].header, armAddress)
114+
const armContract = new originOsArmAbi.Contract(ctx, ctx.blocks[0].header, armAddress)
114115
const [name, symbol, decimals, token0, token1] = await Promise.all([
115116
armContract.name(),
116117
armContract.symbol(),
@@ -184,8 +185,10 @@ export const createOriginARMProcessors = ({
184185
return armStateEntity
185186
}
186187
const previousState = await getPreviousState(block)
188+
const armContract = new originOsArmAbi.Contract(ctx, block.header, armAddress)
187189
const lidoArmContract = new originLidoArmAbi.Contract(ctx, block.header, armAddress)
188-
const armContract = new originArmAbi.Contract(ctx, block.header, armAddress)
190+
const osArmContract = new originOsArmAbi.Contract(ctx, block.header, armAddress)
191+
const etherfiArmContract = new originEtherfiArmAbi.Contract(ctx, block.header, armAddress)
189192
const controllerContract = new originLidoArmCapManagerAbi.Contract(ctx, block.header, capManagerAddress)
190193
const [
191194
assets0,
@@ -198,9 +201,13 @@ export const createOriginARMProcessors = ({
198201
assetsPerShare,
199202
activeMarket,
200203
] = await Promise.all([
201-
new erc20Abi.Contract(ctx, block.header, armEntity.token0).balanceOf(armAddress),
202-
new erc20Abi.Contract(ctx, block.header, armEntity.token1).balanceOf(armAddress),
203-
lidoArm ? lidoArmContract.lidoWithdrawalQueueAmount() : armContract.vaultWithdrawalAmount(),
204+
armContract.balanceOf(armAddress),
205+
armContract.balanceOf(armAddress),
206+
{
207+
lido: lidoArmContract.lidoWithdrawalQueueAmount.bind(lidoArmContract),
208+
os: osArmContract.vaultWithdrawalAmount.bind(osArmContract),
209+
etherfi: etherfiArmContract.etherfiWithdrawalQueueAmount.bind(etherfiArmContract),
210+
}[armType](),
204211
armContract.feesAccrued(),
205212
armContract.totalAssets(),
206213
controllerContract.totalAssetsCap(),
@@ -212,9 +219,7 @@ export const createOriginARMProcessors = ({
212219
? await new erc20Abi.Contract(ctx, block.header, activeMarket).balanceOf(armAddress)
213220
: 0n
214221
const marketAssets =
215-
activeMarket && marketBalanceOf > 0n
216-
? await new originArmAbi.Contract(ctx, block.header, activeMarket).previewRedeem(marketBalanceOf)
217-
: 0n
222+
activeMarket && marketBalanceOf > 0n ? await armContract.previewRedeem(marketBalanceOf) : 0n
218223
const date = new Date(block.header.timestamp)
219224
armStateEntity = new ArmState({
220225
id: stateId,
@@ -321,17 +326,17 @@ export const createOriginARMProcessors = ({
321326
data.from.toLowerCase() === armAddress
322327
? acc - data.value
323328
: data.to.toLowerCase() === armAddress
324-
? acc + data.value
325-
: acc,
329+
? acc + data.value
330+
: acc,
326331
0n,
327332
)
328333
const assets1 = transfers1.reduce(
329334
(acc, data) =>
330335
data.from.toLowerCase() === armAddress
331336
? acc - data.value
332337
: data.to.toLowerCase() === armAddress
333-
? acc + data.value
334-
: acc,
338+
? acc + data.value
339+
: acc,
335340
0n,
336341
)
337342

src/utils/addresses.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,17 @@ export const ogv = {
193193
governance: OGV_GOVERNANCE_ADDRESS,
194194
}
195195

196-
export const arm = {
197-
address: '0x85b78aca6deae198fbf201c82daf6ca21942acc6',
198-
capManager: '0xf54ebff575f699d281645c6f14fe427dffe629cf',
199-
zapper: '0x01f30b7358ba51f637d1aa05d9b4a60f76dad680',
196+
export const arms: Record<string, { address: string; capManager: string; zapper: string }> = {
197+
['ARM-WETH-eETH']: {
198+
address: '0xfb0a3cf9b019bfd8827443d131b235b3e0fc58d2',
199+
capManager: '0xf2a18f7330141ec737eb73a0a5ea8e4d7e9be7ec',
200+
zapper: '0xe11edbd5ae4fa434af7f8d7f03da1742996e7ab2',
201+
},
202+
['ARM-WETH-stETH']: {
203+
address: '0x85b78aca6deae198fbf201c82daf6ca21942acc6',
204+
capManager: '0xf54ebff575f699d281645c6f14fe427dffe629cf',
205+
zapper: '0x01f30b7358ba51f637d1aa05d9b4a60f76dad680',
206+
},
200207
}
201208

202209
export const multisig = {
@@ -210,5 +217,5 @@ export const addresses = {
210217
oeth,
211218
ousd,
212219
ogv,
213-
arm,
220+
arms,
214221
}

0 commit comments

Comments
 (0)