Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
curl -X 'POST' \
'https://api.staging.alluvial.finance/v0/platform/accounts' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGci…CVm5g' \
-H 'Content-Type: application/json' \
-d '{
"key": "FO123"
}'{
"id": "da36a6fa-070d-4cd1-b99a-f2da4f4ccb20",
"key": "FO123",
"org_id": "org_WaYHN06ay6WoTjcz",
"status": "ACTIVE",
"created_at": "2023-03-17T17:24:18.031434748Z",
"wallets": []
}curl -X 'POST' \
'https://api.staging.alluvial.finance/v0/platform/accounts/da36a6fa-070d-4cd1-b99a-f2da4f4ccb20/wallets' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGci…CVm5g' \
-H 'Content-Type: application/json' \
-d '{
"address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
"type": "ETH"
}'{
"id": "a41c520e-fadd-4c0c-a1ce-d574ee731cee",
"type": "ETH",
"address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
"account_id": "993327a3-1d48-4eff-a9ee-7ec769ec1f64",
"status": "ALLOWLISTED",
"allowlisted": true,
"on_platform": true,
"created_at": "2024-03-25T18:38:31.427654433Z"
}curl -X 'POST' \
'https://api.staging.alluvial.finance/v0/platform/accounts/da36a6fa-070d-4cd1-b99a-f2da4f4ccb20/wallets' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGci…CVm5g' \
-H 'Content-Type: application/json' \
-d '{
"address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
"type": "ETH",
"allowlisted": "false"
}'{
"address": "0x5210d328bC5651F92F4557EfDE08dd97A36A935c",
"created_at": "string",
"id": "string",
"status": "NOT_ALLOWLISTED",
"type": "ETH",
"on_platform": "true"
}This guide is intended for Platforms to learn about how they can integrate the Liquid Collective protocol with the support of Alluvial's APIs.






curl -X 'POST' \
'https://api.staging.alluvial.finance/v0/platform/accounts' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 'eyJhbGci…CVm5g'
-d '{
"key": "foobar-123"
}'curl -X 'POST' \
'https://auth.staging.alluvial.finance/oauth/token' \
-H 'content-type: application/json' \
-d '{
"audience": "https://api.staging.alluvial.finance",
"grant_type": "client_credentials",
"client_id": "<YOUR_CLIENT_ID>",
"client_secret": "<YOUR_CLIENT_SECRET>"
}'{
"access_token": "eyJz93a...k4laUZw",
"scope": "read:eth-oracle...read:eth-operators",
"expires_in": 86400,
"token_type": "Bearer"
}{
"id": "4b1d05ed-b498-4847-99a0-c415c6b19f6b",
"key": "foobar-123",
"org_id": "org_WaYHN06ay6WoT...",
"status": "ACTIVE",
"created_at": "2024-02-09T22:40:28.954304245Z",
"wallets": []
}curl -X 'POST' \
'https://api.staging.alluvial.finance/v0/platform/accounts/4b1d05ed-b498-4847-99a0-c415c6b19f6b/wallets/' \
-H 'accept: application/json' \
-H 'Authorization: Bearer 'eyJhbGci…CVm5g'
-D '{
"address": "0x469b998812B9675b7B2Fb37519f574fEA5ee92E8",
"allowlisted": "false",
"type": "ETH"
}'{
"id": "421a39a1-e9c3-4a33-81bc-98eff7bfd502",
"type": "ETH",
"address": "0x469b998812b9675b7b2fb37519f574fea5ee92e8",
"status": "NOT_ALLOWLISTED",
"on_platform": true,
"created_at": "2024-02-09T22:43:02.249045841Z"
}curl -X 'POST' \
'https://auth.alluvial.finance/oauth/token' \
-H 'content-type: application/json' \
-d '{
"audience": "https://api.alluvial.finance",
"grant_type": "client_credentials",
"client_id": "<YOUR_CLIENT_ID>",
"client_secret": "<YOUR_CLIENT_SECRET>"
}'{
"access_token": "eyJz93a...k4laUWw",
"scope": "read:eth-oracle...read:eth-operators",
"expires_in": 86400,
"token_type": "Bearer"
}curl 'https://auth.alluvial.finance/oauth/token' \
--header 'content-type: application/json' \
--data '{
"audience": "https://api.staging.alluvial.finance",
"grant_type": "client_credentials",
"client_id": "<YOUR_CLIENT_ID>",
"client_secret": "<YOUR_CLIENT_SECRET>"
}'{
"access_token": "eyJhbGci…CVm5g",
"scope": "read:eth-oracle read:eth-contracts read:eth-operators",
"expires_in": 86400,
"token_type": "Bearer"
}curl 'https://api.staging.alluvial.finance/v0/wallets/0x2B7ff5d4C14A9Da8d5C9354c7A52aB40DdC1C01e' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJh...b'
{
"address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"allowlisted": true,
"permissions": {
"staking": true,
"redemption": true
}
}{
"address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"permissions": {
"staking": true,
"redemption": true
}
}{
"address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"allowlisted": true,
"permissions": {
"staking": true,
"redemption": true
},
"created_at": "2025-01-15T10:30:00Z"
}Create a platform account with an ACTIVE status.
WARNING Integrators should make sure that the depositor has gone through an effective KYC/KYB process and is deemed within appetite to stake their ETH through the Liquid Collective.
When creating the depositor an integrator should supply a non-empty, unique identifying key (it can typically be an internal user identifier).
As long as a depositor remains in ACTIVE status, it is possible to attach wallets to it that will automatically be submitted to the protocol on-chain allowlist.
Set account's status to REMOVED.
Integrators can call this method for their inactive users to be removed from the liquid staking protocol(s) allowlist.
Once account's status has been set to REMOVED:
Removing a wallet from the protocol allowlist results in disabling the ability to stake or redeem ETH.
Note that removing a wallet from the allowlist is an asynchronous process that can take some time.
Set account's status to PAUSED.
Once an account's status has been set to PAUSED:
allowlisted wallet they will be unable to stake nor redeem.Set a PAUSED account's status to ACTIVE.
This will enable the account to stake and redeem again (if the account has allowlisted wallets), and enable you to add more wallets to the account.
This is only possible for PAUSED accounts - DENIED or REMOVED accounts cannot be reactivated.
Create a wallet attached to an account
If the account is in ACTIVE status and if the wallet's has the allowlisted property set to true Alluvial will add the wallet address to the protocol on-chain allowlist.
Adding a wallet to the protocol allowlist results in enabling the wallet to proceed to deposit and redeem ETH on the protocol.
Note that submitting the wallet to the on-chain allowlist is an asynchronous process that can take some time. The onboarding allows to check the submission status by getting the wallet.
Important Notes:
allowlisted wallets if your organization is configured to do so.allowlist wallets, it method will do so by default.Set a PAUSED wallet's status to ACTIVE.
This will enable the wallet to stake and redeem again.
This action can only be performed under these conditions:
PAUSED status - DENIED or REMOVED wallets cannot be reactivated.ACTIVE status.Get global information about protocol token supplies
OK
Unauthorized
Forbidden
Internal error
The address or addresses to query, separated by commas
OK
Bad Request
Unauthorized
Forbidden
Internal Error
The redeem request id to query
OK
Bad Request
Unauthorized
Not Found
Internal Error
The redeem request id to query
OK
Bad Request
Unauthorized
Not Found
Internal Error
OK
Bad Request
Unauthorized
Not Found
GET /eth/v0/redeems?owner=text HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"claimable_amount_lseth": 1,
"claimed_amount_eth": 1,
"claimed_amount_lseth": 1,
"height": 1,
"id": 1,
"max_redeemable_amount_eth": 1,
"owner": [
1
],
"requested_at": 1,
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "NOT_CLAIMED",
"timestamp": "text",
"total_amount_lseth": 1,
"withdrawal_event_id": 1
}
]GET /eth/v0/redeems/{idx} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"claimable_amount_lseth": 1,
"claimed_amount_eth": 1,
"claimed_amount_lseth": 1,
"height": 1,
"id": 1,
"max_redeemable_amount_eth": 1,
"owner": [
1
],
"requested_at": 1,
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "NOT_CLAIMED",
"timestamp": "text",
"total_amount_lseth": 1,
"withdrawal_event_id": 1
}GET /eth/v0/redeems/{idx}/projection HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"projected_redeemable_at": "text"
}GET /eth/v0/redeems_info HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"total_amount_redeem_queue_lseth": 1,
"total_amount_withdrawal_stack_lseth": 1
}GET /eth/v0/redeems_info/projection HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"projected_fulfilled_at": "text"
}GET /eth/v0/validators/queue HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"exit_time_hours": 1,
"mandatory_exit_delay_hours": 1,
"sweep_time_hours": 1
}curl --request POST 'https://api.staging.alluvial.finance/eth/v0/rewards' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer e...g' \
--data '[
{
"balance": "1",
"from": "2024-04-01",
"to": "2024-04-10"
},
{
"balance": "3",
"from": "2024-04-11",
"to": "2024-04-15"
}
]'{
"balance": "4",
"accrued_rewards": "0.0041516089956458",
"lots": [
{
"from": "2024-04-01",
"to": "2024-04-10",
"start_conversion_rate": "1.0014257204933798",
"end_conversion_rate": "1.0023467329617235",
"balance": "1",
"accrued_rewards": "0.0009210124683437"
},
{
"from": "2024-04-11",
"to": "2024-04-15",
"start_conversion_rate": "1.0026157619809285",
"end_conversion_rate": "1.0036926274900292",
"balance": "3",
"accrued_rewards": "0.0032305965273021"
}
]
}curl --request POST 'https://api.staging.alluvial.finance/eth/v0/rewards/accounts' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Impersonate-Org: org_uLD0aCAXyWYg4WQH' \
--header 'Authorization: Bearer ey...Qg' \
--data '{
"accounts": [
"8f9d6eff-d630-4389-810f-89c4b07b8fc5"
],
"date": "2024-05-15",
"unit": "eth"
}'[
{
"account_id": "8f9d6eff-d630-4389-810f-89c4b07b8fc5",
"totals": {
"balance_lseth": "0.0000198315414745",
"rewards_eth": "0.000000000092766089"
},
"date": "2024-05-15",
"wallets": [
{
"oracle_report": "1437a7330f02400a5662ed70f5c23b251d76fdb1ede48240d9f1e7bcd70540470000014b",
"address": "0x7fc2B172EcC8E4609088f341Aa0Fb3841De8A77A",
"account_id": "8f9d6eff-d630-4389-810f-89c4b07b8fc5",
"org_id": "org_WaYHN06ay6WoTjcz",
"date": "2024-05-15",
"balance_lseth": "0.00000991577073725",
"rewards_eth": "0.000000000092766089",
"total_rewards_eth": "0.000000000092766089",
"conversion_rate": "1.0085131998588114",
"previous_conversion_rate": "1.0085038444500037",
"mints_lseth": "0",
"total_mints_lseth": "0.00000991577073725",
"burns_lseth": "0",
"total_burns_lseth": "0",
"fees_eth": "0.000000000010307343",
"total_fees_eth": "0.000000000010307343",
"dao_fees_eth": "0.000000000000979198",
"total_dao_fees_eth": "0.000000000000979198",
"provider_fees_eth": "0.000000000000360757",
"total_provider_fees_eth": "0.000000000000360757",
"slashing_fees_eth": "0.00000000000030922",
"total_slashing_fees_eth": "0.00000000000030922",
"platform_fees_eth": "0.000000000007112067",
"total_platform_fees_eth": "0.000000000007112067",
"operator_fees_eth": "0.000000000001546101",
"total_operator_fees_eth": "0.000000000001546101"
}
]
}
]curl --request POST 'https://api.staging.alluvial.finance/eth/v0/rewards/wallets' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Impersonate-Org: org_uLD0aCAXyWYg4WQH' \
--header 'Authorization: Bearer ey...Qg' \
--data '{
"addresses": [
"0x7fc2B172EcC8E4609088f341Aa0Fb3841De8A77A"
],
"date": "2024-05-15",
"unit": "eth"
}'[
{
"oracle_report": "1437a7330f02400a5662ed70f5c23b251d76fdb1ede48240d9f1e7bcd70540470000014b",
"address": "0x7fc2B172EcC8E4609088f341Aa0Fb3841De8A77A",
"account_id": "8f9d6eff-d630-4389-810f-89c4b07b8fc5",
"org_id": "org_WaYHN06ay6WoTjcz",
"date": "2024-05-15",
"balance_lseth": "0.00000991577073725",
"rewards_eth": "0.000000000092766089",
"total_rewards_eth": "0.000000000092766089",
"conversion_rate": "1.0085131998588114",
"previous_conversion_rate": "1.0085038444500037",
"mints_lseth": "0",
"total_mints_lseth": "0.00000991577073725",
"burns_lseth": "0",
"total_burns_lseth": "0",
"fees_eth": "0.000000000010307343",
"total_fees_eth": "0.000000000010307343",
"dao_fees_eth": "0.000000000000979198",
"total_dao_fees_eth": "0.000000000000979198",
"provider_fees_eth": "0.000000000000360757",
"total_provider_fees_eth": "0.000000000000360757",
"slashing_fees_eth": "0.00000000000030922",
"total_slashing_fees_eth": "0.00000000000030922",
"platform_fees_eth": "0.000000000007112067",
"total_platform_fees_eth": "0.000000000007112067",
"operator_fees_eth": "0.000000000001546101",
"total_operator_fees_eth": "0.000000000001546101"
}
]curl 'https://api.alluvial.finance/eth/v0/protocol/2024-05-01' \
--header 'Accept: application/json' \
--header 'Accept: application/json'[
{
"oracle_report": "2e39c7e7e0b78c043ac98e190175fa7f057a75197647d4d844864ac06c98aa3400000225",
"date": "2024-05-01T12:14:47Z",
"total_protocol_mints_lseth": "89180.704128270784037675",
"total_protocol_burns_lseth": "6676.332903830493099868",
"total_protocol_active_keys_count": 2703,
"rewards_eth": "6.66289490787142415",
"gross_fee_rate": "0.1",
"gross_fee_lseth": "0.636483355669561459",
"conversion_rate": "1.0468294022963504",
"total_lseth_supply": "82674.954629966742503924",
"a_srr_7d": "2.85"
}
]curl --location --request POST 'https://api.staging.alluvial.finance/v0/platform/accounts/8f9d6eff-d630-4389-810f-89c4b07b8fc5/discount_rate' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJQ' \
--data '{
"target_fee_rate": 0.08
}'{
"account_id": "8f9d6eff-d630-4389-810f-89c4b07b8fc5",
"target_fee_rate": "0.08",
"created_at": "2024-06-24T21:27:07.387160077Z"
}curl --location --request POST 'https://api.staging.alluvial.finance/eth/v0/rewards/accounts' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJ...mQ' \
--data '{
"accounts": [
"8f9d6eff-d630-4389-810f-89c4b07b8fc5"
],
"date": "2024-06-22",
"unit": "lseth"
}'[
{
"account_id": "8f9d6eff-d630-4389-810f-89c4b07b8fc5",
"totals": {
"balance_lseth": "0.947997263286356641",
"rewards_eth": "0.001671038079957103"
},
"date": "2024-06-22",
"wallets": [
{
"oracle_report": "43306f4695a1d7ed4118c68fecd150e1f071b338815007960e61900d8d9c123e00000046",
"address": "0x4D1c3ec0B381F012A90f096cD4E8bc7746e4f2eB",
"account_id": "8f9d6eff-d630-4389-810f-89c4b07b8fc5",
"org_id": "org_WaYHN06ay6WoTjcz",
"date": "2024-06-22",
"balance_lseth": "0.00001",
"rewards_eth": "0.000000000087955639",
"total_rewards_eth": "0.000000020987954327",
"conversion_rate": "1.0106749980064223",
"previous_conversion_rate": "1.0106662024425232",
"mints_lseth": "0",
"total_mints_lseth": "0",
"burns_lseth": "0",
"total_burns_lseth": "0",
"fees_eth": "0.000000000009772849",
"total_fees_eth": "0.000000002331994927",
"dao_fees_eth": "0.000000000000928421",
"total_dao_fees_eth": "0.000000000221539524",
"provider_fees_eth": "0.00000000000034205",
"total_provider_fees_eth": "0.000000000081619819",
"slashing_fees_eth": "0.000000000000293185",
"total_slashing_fees_eth": "0.00000000006995985",
"platform_fees_eth": "0.000000000006743266",
"total_platform_fees_eth": "0.000000001609076496",
"platform_fees_at_discount_rate_eth": "0",
"total_platform_fees_at_discount_rate_eth": "0",
"operator_fees_eth": "0.000000000001465927",
"total_operator_fees_eth": "0.00000000034979924",
"gross_protocol_fee_rate": "0",
"discount_rate": "0",
"gross_fees_eth": "0.000000000009772849",
"total_gross_fees_eth": "0.000000002331994927",
"gross_rewards_eth": "0.000000000097728488",
"total_gross_rewards_eth": "0.000000000189971905",
"rebate_eth": "0",
"total_rebate_eth": "0",
"rebate_lseth": "0",
"total_rebate_lseth": "0"
},
{
"oracle_report": "43306f4695a1d7ed4118c68fecd150e1f071b338815007960e61900d8d9c123e00000046",
"address": "0x7fc2B172EcC8E4609088f341Aa0Fb3841De8A77A",
"account_id": "8f9d6eff-d630-4389-810f-89c4b07b8fc5",
"org_id": "org_WaYHN06ay6WoTjcz",
"date": "2024-06-22",
"balance_lseth": "0.947987263286356641",
"rewards_eth": "0.000008338082549768",
"total_rewards_eth": "0.001671017092002776",
"conversion_rate": "1.0106749980064223",
"previous_conversion_rate": "1.0106662024425232",
"mints_lseth": "0",
"total_mints_lseth": "5.947997863289656641",
"burns_lseth": "0",
"total_burns_lseth": "0.0000006000033",
"fees_eth": "0.000000926453616641",
"total_fees_eth": "0.000185668565778085",
"dao_fees_eth": "0.000000088013093581",
"total_dao_fees_eth": "0.000017638513748923",
"provider_fees_eth": "0.000000032425876582",
"total_provider_fees_eth": "0.000006498399802232",
"slashing_fees_eth": "0.000000027793608499",
"total_slashing_fees_eth": "0.000005570056973343",
"platform_fees_eth": "0.000000639252995482",
"total_platform_fees_eth": "0.000128111310386881",
"platform_fees_at_discount_rate_eth": "0",
"total_platform_fees_at_discount_rate_eth": "0",
"operator_fees_eth": "0.000000138968042496",
"total_operator_fees_eth": "0.000027850284866709",
"gross_protocol_fee_rate": "0",
"discount_rate": "0",
"gross_fees_eth": "0.000000926453616641",
"total_gross_fees_eth": "0.000185668565778085",
"gross_rewards_eth": "0.000009264536166409",
"total_gross_rewards_eth": "0.000018009094566287",
"rebate_eth": "0",
"total_rebate_eth": "0",
"rebate_lseth": "0",
"total_rebate_lseth": "0"
}
]
}
]Account ID or Key of the account to add discounted fee rate to
0.05OK
Invalid discount rate" {message:discountRateValidation}
Unauthorized
Forbidden
Account not found
Discounted fee rate already exists for this account. To modify it, please use the update api endpoint.
Internal error
Account ID or Key of the account to get discount rate for
OK
Unauthorized
Forbidden
Account not found
Internal error
Account ID or Key of the account to update discounted fee rate for
0.05OK
Discount rate is already set to the requested value
Invalid discount rate" {message:discountRateValidation}
Unauthorized
Forbidden
Account not found
Internal error
Display LsETH values in units of wei or ether. If not present, LsETH is set by default.
OK
Bad Request
Unauthorized
Forbidden
Internal error
Date filter by year, month or day (eg. 2023, 2023-12, 2023-12-31). Note: times are UTC
Display LsETH values in units of wei or ether. If not present, LsETH is set by default.
OK
Bad Request
Unauthorized
Forbidden
Internal error
Wallet address
Start date (default: 1 year ago)
End date (default: current time)
Output as CSV
Page size (default: 100)
Next cursor
OK
Bad request
Not found
Internal error
Date filter by year, month or day (eg. 2023, 2023-12, 2023-12-31). Note: times are UTC
Display LsETH values in units of wei or ether. If not present, LsETH is set by default.
OK
Bad Request
Unauthorized
Forbidden
Internal error
Date filter by year, month or day (eg. 2023, 2023-12, 2023-12-31). Note: times are UTC
Display LsETH values in units of wei or ether. If not present, LsETH is set by default.
OK
Unauthorized
Forbidden
Internal error
0.3827486422527214612024-01-012024-01-31OK
Unauthorized
Forbidden
Internal error
["bb3e6114-af15-43a6-9b36-a5ec011d9d95"]2024-04-11lsethOK
Unauthorized
Forbidden
Internal error
["0x5d811a9d059dDAB0C18B385ad3b752f734f011cB"]2024-04-11ethOK
Unauthorized
Forbidden
Internal error
Account ID
Start date (default: 1 month ago)
End date (default: current time)
Export to CSV
Currency unit
OK
Bad request
Not found
Internal error
Wallet ID or address
Start date (default: 1 month ago)
End date (default: current time)
Export to CSV
Currency unit
OK
Bad request
Not found
Internal error
Display LsETH values in units of wei or ether. If not present, LsETH is set by default.
OK
Bad Request
Unauthorized
Forbidden
Internal error
Date filter by year, month or day (eg. 2023, 2023-12, 2023-12-31). Note: times are UTC
Display LsETH values in units of wei or ether. If not present, LsETH is set by default.
OK
Bad Request
Unauthorized
Forbidden
Internal error
Wallet address
Start date (default: 1 month ago)
End date (default: current time)
Currency unit
Export to CSV
Page size (default: 100)
Next cursor (default: empty)
OK
Bad request
Not found
Internal error
Wallet address
OK
Bad request
Not found
Internal error
Wallet address
Start date (default: 1 year ago)
End date (default: current time)
Output as CSV
Page size (default: 100)
Next cursor
OK
Bad request
Not found
Internal error
The address or addresses to query, separated by commas
OK
Bad Request
Unauthorized
Forbidden
Internal Error
Block height to query
OK
Unauthorized
Forbidden
Internal error
Comma separated list of addresses (if empty returns all addresses)
Block number at which to get balance for (latest by default)
Limit of elements to return (100 by default)
OK
Bad request
Unauthorized
Forbidden
Internal error
Account address to query the balance for
Block number at which to get balance for (latest by default)
OK
Bad request
Unauthorized
Forbidden
Internal error
Address of the balance to query balance for
Starting block height to query (0 by default)
Ending block height to query (latest by default)
Limit of elements to return (100 by default)
OK
Bad request
Unauthorized
Forbidden
Internal error
Unique identifier of the account (supplied by the client)
depositor_exampleAccount has been created
Bad request
Unauthorized
Forbidden
Internal error
Account ID or Key of the platform account
OK
Unauthorized
Forbidden
Not found
Internal error
Account ID or Key of the account to remove
OK
Bad request
Unauthorized
Forbidden
Not found
Internal error
Account ID or Key of the account to remove
OK
Bad request
Unauthorized
Forbidden
Not found
Internal error
Account ID or Key of the account to reactivate
OK
Bad request
Unauthorized
Forbidden
Not found
Internal error
Wallet ID or Address of the wallet (address in hex format prefixed with 0x)
OK
Bad request
Unauthorized
Forbidden
Not found
Internal error
Enable to only return allowlisted wallets
Enable to only return wallets on_platform
Offset for pagination
Limit for pagination
OK
Bad request
Unauthorized
Forbidden
Internal error
Account ID or Key of the account to add wallets to
Wallet address in hexadecimal format with 0x prefix
0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045Opt out of wallet being added to the OnPlatform list
trueThe type of wallet - chain or protocol it exists on
ETHOK
Bad request
Unauthorized
Forbidden
Internal error
Account ID or Key of the account
Enable to only return allowlisted wallets
Enable to only return wallets on_platform
Offset for pagination
Limit for pagination
OK
Bad request
Unauthorized
Forbidden
Internal error
Account ID or Key of the account to remove wallet from
Wallet ID or Address of the wallet to be removed
Enable to remove wallet from the allowlist
Enable to remove wallet on_platform
OK
Bad request
Unauthorized
Forbidden
Not found
Internal error
Depositor ID or Key of the depositor to pause wallet from
Wallet ID or Address of the wallet to be paused
Enable to pause wallet from the allowlist
Enable to pause wallet on_platform
OK
Bad request
Unauthorized
Forbidden
Not found
Conflict
Internal error
Depositor ID or Key of the depositor to reactivate wallet from
Wallet ID or Address of the wallet to be reactivated
Enable to reactivate wallet from the allowlist
Enable to reactivate wallet on_platform
OK
Bad request
Unauthorized
Forbidden
Not found
Conflict
Internal error
POST /v0/platform/accounts/{idOrKey}/discount_rate HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"target_fee_rate": 0.05
}GET /v0/platform/accounts/{idOrKey}/discount_rate HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"account_id": "36cc991e-d4r5-422c-8248-ac356e800fc1",
"created_at": "2023-12-31T23:59:59Z",
"removed_at": "2023-12-31T23:59:59Z",
"target_fee_rate": 0.05
}PATCH /v0/platform/accounts/{idOrKey}/discount_rate HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 24
{
"target_fee_rate": 0.05
}GET /eth/v0/protocol HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"a_srr_7d": 3.95,
"conversion_rate": 1.012345,
"date": "2023-01-02T03:04:05Z",
"gross_fee_lseth": 0.1851,
"gross_fee_rate": 0.15,
"oracle_report": "f071c15d86fd9ae82f62bb4bb04963f14e04045bbcac8b5439984733207821bc000000ef",
"protocol_service_fee_rate": 0.11,
"rewards_eth": 1.234,
"total_eth_staked": 122007944.381,
"total_lseth_supply": 120520123.456789,
"total_protocol_active_keys_count": 76,
"total_protocol_burns_lseth": 32,
"total_protocol_mints_lseth": 32
}GET /eth/v0/protocol/{date} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"a_srr_7d": 3.95,
"conversion_rate": 1.012345,
"date": "2023-01-02T03:04:05Z",
"gross_fee_lseth": 0.1851,
"gross_fee_rate": 0.15,
"oracle_report": "f071c15d86fd9ae82f62bb4bb04963f14e04045bbcac8b5439984733207821bc000000ef",
"protocol_service_fee_rate": 0.11,
"rewards_eth": 1.234,
"total_eth_staked": 122007944.381,
"total_lseth_supply": 120520123.456789,
"total_protocol_active_keys_count": 76,
"total_protocol_burns_lseth": 32,
"total_protocol_mints_lseth": 32
}
]GET /eth/v0/wallet/{address}/transactions HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"amount_eth": 10,
"amount_lseth": 9.5,
"conversion_rate": 0.96,
"date": "2024-06-21",
"finalized": true,
"transaction_hash": "0x5E9E16C6DEB4022399E4FCD387BCB59AC5855762",
"transaction_type": "Deposit"
}
],
"metadata": {
"next_cursor": {
"amount": 1,
"blockNumber": 1,
"date": "text",
"eventID": [
1
],
"finalized": true,
"newTotalEthSupply": 1,
"newTotalSupply": 1,
"transactionHash": [
1
],
"transactionType": "Deposit"
}
}
}GET /eth/v0/platforms/{date} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"conversion_rate": 1.012345,
"dao_fees_lseth": 0.00001234567,
"dao_fees_rate": 0.0015,
"date": "2023-01-02T03:04:05Z",
"gross_fee_lseth": 0.0001234,
"operator_fees_lseth": 0.000123456789,
"operator_fees_rate": 0.0035,
"oracle_report": "f071c15d86fd9ae82f62bb4bb04963f14e04045bbcac8b5439984733207821bc000000ef",
"org_id": "org_example1234",
"platform": {
"fees_lseth": 0.0001234567,
"fees_rate": 0.097,
"off_platform_rebate": {
"adjusted_total_net_outflows_fees_lseth": 0.0001234567,
"adjusted_total_net_outflows_lseth": 0.0001234567,
"adjusted_total_net_outflows_transfers_lseth": 0.0001234567,
"fees_paid_lseth": 0.0001234567,
"off_platform_attributable_fees_lseth": 0.0001234567,
"off_platform_balance_lseth": 0.0001234567,
"off_platform_fees_lseth": 0.0001234567,
"off_platform_gross_fee_lseth": 0.0001234567,
"outflow_ratio": 0.0001234567,
"total_burns_lseth": 32.1234,
"total_mints_lseth": 32.1234,
"total_net_outflows_lseth": 0.0001234567,
"total_on_platform_lseth": 0.0001234567,
"total_outflows_lseth": 0.0001234567,
"total_platform_transfers_in_lseth": 0.0001234567,
"total_platform_transfers_out_lseth": 0.0001234567
},
"on_platform_rebate": {
"on_platform_attributable_fees_lseth": 0.0001234567,
"on_platform_fees_lseth": 0.0001234567,
"on_platform_lseth": 120520123.456789,
"on_platform_ratio": 0.0001234567
},
"total_balance_lseth": 0.0001234567
},
"slashing_coverage_fees_lseth": 0.0000012345678,
"slashing_coverage_fees_rate": 0.003,
"tech_provider_fees_lseth": 0.0000123456789,
"tech_provider_fees_rate": 0.0035,
"total_eth_supply": 120520123.456789,
"total_lseth_supply": 120520123.456789,
"version": 3
}
]GET /eth/v0/operators/{date} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"conversion_rate": 1.012345,
"date": "2023-01-02T03:04:05Z",
"operator_active_keys_count": 5,
"operator_active_keys_ratio": 0.5,
"operator_fees_lseth": 0.00006,
"oracle_report": "f071c15d86fd9ae82f62bb4bb04963f14e04045bbcac8b5439984733207821bc000000ef",
"org_id": "org_example1234",
"total_active_keys_count": 10,
"total_operator_fees_lseth": 0.00012,
"version": 3
}
]POST /eth/v0/rewards HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 74
[
{
"balance": "0.382748642252721461",
"from": "2024-01-01",
"to": "2024-01-31"
}
]{
"accrued_rewards": 0.00003930554936445,
"lots": [
{
"accrued_rewards": 0.000038075574334017,
"balance": 0.3827486422527215,
"end_conversion_rate": 1.037253225665527,
"from": "2024-01-01",
"start_conversion_rate": 1.0371537463463845,
"to": "2024-01-31"
}
]
}POST /eth/v0/rewards/accounts HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 88
{
"accounts": [
"bb3e6114-af15-43a6-9b36-a5ec011d9d95"
],
"date": "2024-04-11",
"unit": "lseth"
}[
{
"account_id": "bb3e6114-af15-43a6-9b36-a5ec011d9d95",
"date": "2024-04-11",
"totals": {
"balance_lseth": 0.3827486422527215,
"rewards_eth": 0.00003930554936445
},
"wallets": [
{
"account_id": "ab3e5114-af15-45b8-9c43-a5ec011d9d95",
"address": "0x30e2a735D692fC28CD31C28F1A8259b4790f9A23",
"avg_srr_hist": 0.00534633387,
"balance_lseth": 0.3827486422527215,
"burns_lseth": 0.1,
"conversion_rate": 1.037253225665527,
"dao_fees_eth": 4.25550536674e-7,
"date": "2024-04-11",
"fees_eth": 0.000006719219000121,
"gross_fees_eth": 0.000006264174837104,
"gross_protocol_fee_rate": 0.000006264174837104,
"gross_rewards_eth": 0.000006264174837104,
"mints_lseth": 0.48208860235174045,
"operator_fees_eth": 0.000006264174837104,
"oracle_report": "68bbc70ba87b9467831cc3ff56fc114f3659ba9e646042007d1d54f6b95f267d00000164",
"org_id": "org_aDL0aCAXyWYgHQ4W",
"platform_fees_at_discount_rate_eth": 0.000006264174837104,
"platform_fees_eth": 0.00000519619602676,
"previous_conversion_rate": 1.0371537463463845,
"provider_fees_eth": 1.56781776669e-7,
"rebate_eth": 0.000006264174837104,
"rebate_lseth": 0.000006264174837104,
"rewards_eth": 0.000038075574334017,
"slashing_fees_eth": 1.34384380002e-7,
"target_fee_rate": 0.08,
"total_burns_lseth": 0.109,
"total_dao_fees_eth": 4.39297316428e-7,
"total_fees_eth": 0.000006936273417258,
"total_gross_fees_eth": 0.000006264174837104,
"total_gross_rewards_eth": 0.000006264174837104,
"total_mints_lseth": 0.49174864225272147,
"total_operator_fees_eth": 0.000006264174837104,
"total_platform_fees_at_discount_rate_eth": 0.000006264174837104,
"total_platform_fees_eth": 0.000005364051442679,
"total_provider_fees_eth": 1.61846379739e-7,
"total_rebate_eth": 0.000006264174837104,
"total_rebate_lseth": 0.000006264174837104,
"total_rewards_eth": 0.00003930554936445,
"total_slashing_fees_eth": 1.38725468346e-7
}
]
}
]POST /eth/v0/rewards/wallets HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 93
{
"addresses": [
"0x5d811a9d059dDAB0C18B385ad3b752f734f011cB"
],
"date": "2024-04-11",
"unit": "eth"
}[
{
"account_id": "ab3e5114-af15-45b8-9c43-a5ec011d9d95",
"address": "0x30e2a735D692fC28CD31C28F1A8259b4790f9A23",
"avg_srr_hist": 0.00534633387,
"balance_lseth": 0.3827486422527215,
"burns_lseth": 0.1,
"conversion_rate": 1.037253225665527,
"dao_fees_eth": 4.25550536674e-7,
"date": "2024-04-11",
"fees_eth": 0.000006719219000121,
"gross_fees_eth": 0.000006264174837104,
"gross_protocol_fee_rate": 0.000006264174837104,
"gross_rewards_eth": 0.000006264174837104,
"mints_lseth": 0.48208860235174045,
"operator_fees_eth": 0.000006264174837104,
"oracle_report": "68bbc70ba87b9467831cc3ff56fc114f3659ba9e646042007d1d54f6b95f267d00000164",
"org_id": "org_aDL0aCAXyWYgHQ4W",
"platform_fees_at_discount_rate_eth": 0.000006264174837104,
"platform_fees_eth": 0.00000519619602676,
"previous_conversion_rate": 1.0371537463463845,
"provider_fees_eth": 1.56781776669e-7,
"rebate_eth": 0.000006264174837104,
"rebate_lseth": 0.000006264174837104,
"rewards_eth": 0.000038075574334017,
"slashing_fees_eth": 1.34384380002e-7,
"target_fee_rate": 0.08,
"total_burns_lseth": 0.109,
"total_dao_fees_eth": 4.39297316428e-7,
"total_fees_eth": 0.000006936273417258,
"total_gross_fees_eth": 0.000006264174837104,
"total_gross_rewards_eth": 0.000006264174837104,
"total_mints_lseth": 0.49174864225272147,
"total_operator_fees_eth": 0.000006264174837104,
"total_platform_fees_at_discount_rate_eth": 0.000006264174837104,
"total_platform_fees_eth": 0.000005364051442679,
"total_provider_fees_eth": 1.61846379739e-7,
"total_rebate_eth": 0.000006264174837104,
"total_rebate_lseth": 0.000006264174837104,
"total_rewards_eth": 0.00003930554936445,
"total_slashing_fees_eth": 1.38725468346e-7
}
]GET /eth/v0/rewards/accounts/{idOrKey}/summary HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
GET /eth/v0/rewards/wallets/{idOrAddress}/summary HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"account_id": "ab3e5114-af15-45b8-9c43-a5ec011d9d95",
"address": "0xF523F31Acf07Ff41D2616f9c1b73E762Ba8E5660",
"daily_reports": [
{
"address": "0xF523F31Acf07Ff41D2616f9c1b73E762Ba8E5660",
"balance_lseth": 0.00099376738985375,
"burns_lseth": 2.22405e-13,
"conversion_rate": 1.006282340620787,
"dao_fees_eth": 7.86854637e-10,
"date": "2024-04-01",
"fees_at_discount_rate_eth": 4.80412e-13,
"fees_eth": 8.282680389e-9,
"gross_fees_eth": 8.2826803894e-8,
"gross_protocol_fee_rate": 0.000006264174837104,
"gross_rewards_eth": 0.000006264174837104,
"mints_lseth": 4.4554123505e-8,
"operator_fees_eth": 1.242402058e-9,
"oracle_report": "68bbc70ba87b9467831cc3ff56fc114f3659ba9e646042007d1d54f6b95f267d00000164",
"platform_fees_at_discount_rate_eth": 0.000005236375878362,
"platform_fees_eth": 5.715049468e-9,
"previous_conversion_rate": 1.0371537463463845,
"provider_fees_eth": 2.89893814e-10,
"rebate_eth": 0.000006264174837104,
"rebate_lseth": 0.000006264174837104,
"rewards_eth": 7.4544123505e-8,
"slashing_fees_eth": 2.48480412e-10,
"target_fee_rate": 0.000006264174837104
}
],
"end_conversion_rate": 1.0454865181649966,
"from": "2024-04-01",
"org_id": "org_aDs4aCACyWYgMQ4A",
"start_conversion_rate": 1.006282340620787,
"to": "2024-04-01",
"total_burns_lseth": 0,
"total_dao_fees_eth": 4.34597684399e-7,
"total_fees_eth": 0.000006787291484265,
"total_gross_fees_eth": 0.000006787291484265,
"total_gross_rewards_eth": 0.000045747124673728,
"total_mints_lseth": 0.00099376738985375,
"total_operator_fees_eth": 8.18961611118e-7,
"total_platform_fees_at_discount_rate_eth": 0.000005236375878362,
"total_platform_fees_eth": 0.000005236375878362,
"total_provider_fees_eth": 1.60114936353e-7,
"total_rebate_eth": 0,
"total_rebate_lseth": 0,
"total_rewards_eth": 0.000038959833189463,
"total_slashing_fees_eth": 1.37241374012e-7
},
"metadata": {
"next_cursor": null
}
}GET /eth/v0/protocol HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"a_srr_7d": 3.95,
"conversion_rate": 1.012345,
"date": "2023-01-02T03:04:05Z",
"gross_fee_lseth": 0.1851,
"gross_fee_rate": 0.15,
"oracle_report": "f071c15d86fd9ae82f62bb4bb04963f14e04045bbcac8b5439984733207821bc000000ef",
"protocol_service_fee_rate": 0.11,
"rewards_eth": 1.234,
"total_eth_staked": 122007944.381,
"total_lseth_supply": 120520123.456789,
"total_protocol_active_keys_count": 76,
"total_protocol_burns_lseth": 32,
"total_protocol_mints_lseth": 32
}GET /eth/v0/protocol/{date} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"a_srr_7d": 3.95,
"conversion_rate": 1.012345,
"date": "2023-01-02T03:04:05Z",
"gross_fee_lseth": 0.1851,
"gross_fee_rate": 0.15,
"oracle_report": "f071c15d86fd9ae82f62bb4bb04963f14e04045bbcac8b5439984733207821bc000000ef",
"protocol_service_fee_rate": 0.11,
"rewards_eth": 1.234,
"total_eth_staked": 122007944.381,
"total_lseth_supply": 120520123.456789,
"total_protocol_active_keys_count": 76,
"total_protocol_burns_lseth": 32,
"total_protocol_mints_lseth": 32
}
]GET /eth/v0/wallet/{address}/rewards HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
GET /eth/v0/wallet/{address}/status HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"allowlisted": true,
"status": "ALLOWLISTED| PAUSED | DENIED"
}GET /eth/v0/wallet/{address}/transactions HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"amount_eth": 10,
"amount_lseth": 9.5,
"conversion_rate": 0.96,
"date": "2024-06-21",
"finalized": true,
"transaction_hash": "0x5E9E16C6DEB4022399E4FCD387BCB59AC5855762",
"transaction_type": "Deposit"
}
],
"metadata": {
"next_cursor": {
"amount": 1,
"blockNumber": 1,
"date": "text",
"eventID": [
1
],
"finalized": true,
"newTotalEthSupply": 1,
"newTotalSupply": 1,
"transactionHash": [
1
],
"transactionType": "Deposit"
}
}
}GET /eth/v0/redeems?owner=text HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"claimable_amount_lseth": 1,
"claimed_amount_eth": 1,
"claimed_amount_lseth": 1,
"height": 1,
"id": 1,
"max_redeemable_amount_eth": 1,
"owner": [
1
],
"requested_at": 1,
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "NOT_CLAIMED",
"timestamp": "text",
"total_amount_lseth": 1,
"withdrawal_event_id": 1
}
]{
"exit_time_hours": 1,
"mandatory_exit_delay_hours": 1,
"sweep_time_hours": 1
}GET /eth/v0/validators/queue HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
GET /eth/v0/status HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"active_validator_count": 58,
"active_validators_eth_balance": "128000000000000000000",
"block_number": 15034284,
"collected_rewards": "3200000000000000000000",
"contract_eth_balance": "5000000000000000000",
"conversion_rate": 1,
"deposit_count": 2,
"exited_validators_eth_balance": "128000000000000000000",
"exiting_validators_eth_balance": "128000000000000000000",
"funded_validator_count": 102,
"funded_valitor_count": 102,
"pending_validator_count": 2,
"pending_validators_eth_balance": "64000000000000000000",
"rebalance_deposit_to_redeem_mode": true,
"skimmed_validators_eth_balance": "128000000000000000000",
"slashing_containment_mode": false,
"stopped_validator_count": 42,
"total_eth_balance": "3200000000000000000000",
"total_eth_deposited": "3200000000000000000000",
"total_supply": "3200000000000000000000",
"total_validator_count": 100
}GET /eth/v0/status/{block_number} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"active_validator_count": 58,
"active_validators_eth_balance": "128000000000000000000",
"block_number": 15034284,
"collected_rewards": "3200000000000000000000",
"contract_eth_balance": "5000000000000000000",
"conversion_rate": 1,
"deposit_count": 2,
"exited_validators_eth_balance": "128000000000000000000",
"exiting_validators_eth_balance": "128000000000000000000",
"funded_validator_count": 102,
"funded_valitor_count": 102,
"pending_validator_count": 2,
"pending_validators_eth_balance": "64000000000000000000",
"rebalance_deposit_to_redeem_mode": true,
"skimmed_validators_eth_balance": "128000000000000000000",
"slashing_containment_mode": false,
"stopped_validator_count": 42,
"total_eth_balance": "3200000000000000000000",
"total_eth_deposited": "3200000000000000000000",
"total_supply": "3200000000000000000000",
"total_validator_count": 100
}GET /eth/v0/balances HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"address": "0x123456789985ca04a69c35978c3a3e778d6ef172",
"balance": "4200000000000000000000",
"block_number": 15034284
}
]GET /eth/v0/balances/{address} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"address": "0x123456789985ca04a69c35978c3a3e778d6ef172",
"balance": "4200000000000000000000",
"block_number": 15034284
}GET /eth/v0/balances/{address}/history HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
GET /eth/v0/contracts HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"allowlister": [
1
],
"deployment_block": 1,
"el_fee_recipient": [
1
],
"operators_registry": [
1
],
"oracle": [
1
],
"redeem_manager": [
1
],
"river": [
1
],
"withdraw": [
1
]
}POST /v0/platform/accounts HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 27
{
"key": "depositor_example"
}GET /v0/platform/accounts HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"created_at": "2024-01-24T13:07:50.335845Z",
"id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"key": "depositor_example",
"org_id": "org_28CLGCvsdG7TlOHf",
"status": "ACTIVE | PAUSED | REMOVED | DENIED",
"wallets": [
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}
]
}
]GET /v0/platform/accounts/{idOrKey} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"created_at": "2024-01-24T13:07:50.335845Z",
"id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"key": "depositor_example",
"org_id": "org_28CLGCvsdG7TlOHf",
"status": "ACTIVE | PAUSED | REMOVED | DENIED",
"wallets": [
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}
]
}PATCH /v0/platform/accounts/{idOrKey}/remove HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
PATCH /v0/platform/accounts/{idOrKey}/pause HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"created_at": "2024-01-24T13:07:50.335845Z",
"id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"key": "depositor_example",
"org_id": "org_28CLGCvsdG7TlOHf",
"status": "PAUSED",
"wallets": [
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}
]
}PATCH /v0/platform/accounts/{idOrKey}/reactivate HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"created_at": "2024-01-24T13:07:50.335845Z",
"id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"key": "depositor_example",
"org_id": "org_28CLGCvsdG7TlOHf",
"status": "ACTIVE",
"wallets": [
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}
]
}GET /v0/platform/wallets/{idOrAddress} HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}GET /v0/platform/wallets HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}
]POST /v0/platform/accounts/{idOrKey}/wallets HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 88
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"type": "ETH"
}GET /v0/platform/accounts/{idOrKey}/wallets HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}
]PATCH /v0/platform/accounts/{idOrKey}/wallets/{idOrAddress}/remove HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
PATCH /v0/platform/accounts/{idOrKey}/wallets/{idOrAddress}/pause HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
PATCH /v0/platform/accounts/{idOrKey}/wallets/{idOrAddress}/reactivate HTTP/1.1
Host: api.alluvial.finance
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
-3{
"account_id": "36cc991e-d4r5-422c-8248-ac356e800fc1",
"created_at": "2023-12-31T23:59:59Z",
"removed_at": "2023-12-31T23:59:59Z",
"target_fee_rate": 0.05
}{
"account_id": "36cc991e-d4r5-422c-8248-ac356e800fc1",
"created_at": "2023-12-31T23:59:59Z",
"removed_at": "2023-12-31T23:59:59Z",
"target_fee_rate": 0.05
}{
"data": {
"address": "0x30e2a735D692fC28CD31C28F1A8259b4790f9A23",
"daily_reports": [
{
"address": "0x30e2a735D692fC28CD31C28F1A8259b4790f9A23",
"avg_srr_hist": 0.00534633387,
"balance_lseth": 0.3827486422527215,
"burns_lseth": 0.1,
"conversion_rate": 1.037253225665527,
"date": "2024-04-11",
"fees_eth": 0.000006719219000121,
"mints_lseth": 0.48208860235174045,
"oracle_report": "68bbc70ba87b9467831cc3ff56fc114f3659ba9e646042007d1d54f6b95f267d00000164",
"previous_conversion_rate": 1.0371537463463845,
"rewards_eth": 0.000038075574334017,
"total_burns_lseth": 0.109,
"total_fees_eth": 0.000006936273417258,
"total_mints_lseth": 0.49174864225272147,
"total_rewards_eth": 0.00003930554936445
}
],
"end_conversion_rate": 1.0454865181649966,
"from": "2024-04-01",
"start_conversion_rate": 1.006282340620787,
"to": "2024-04-30",
"total_burns_lseth": 0.109,
"total_fees_eth": 0.000006936273417258,
"total_mints_lseth": 0.49174864225272147,
"total_rewards_eth": 0.00003930554936445
},
"metadata": {
"next_cursor": null
}
}{
"data": {
"account_id": "ab3e5114-af15-45b8-9c43-a5ec011d9d95",
"end_conversion_rate": 1.0454865181649966,
"from": "2024-04-01",
"org_id": "org_aDs4aCACyWYgMQ4A",
"start_conversion_rate": 1.006282340620787,
"to": "2024-04-30",
"wallets": [
{
"account_id": "ab3e5114-af15-45b8-9c43-a5ec011d9d95",
"address": "0xF523F31Acf07Ff41D2616f9c1b73E762Ba8E5660",
"daily_reports": [
{
"address": "0xF523F31Acf07Ff41D2616f9c1b73E762Ba8E5660",
"balance_lseth": 0.00099376738985375,
"burns_lseth": 2.22405e-13,
"conversion_rate": 1.006282340620787,
"dao_fees_eth": 7.86854637e-10,
"date": "2024-04-01",
"fees_at_discount_rate_eth": 4.80412e-13,
"fees_eth": 8.282680389e-9,
"gross_fees_eth": 8.2826803894e-8,
"gross_protocol_fee_rate": 0.000006264174837104,
"gross_rewards_eth": 0.000006264174837104,
"mints_lseth": 4.4554123505e-8,
"operator_fees_eth": 1.242402058e-9,
"oracle_report": "68bbc70ba87b9467831cc3ff56fc114f3659ba9e646042007d1d54f6b95f267d00000164",
"platform_fees_at_discount_rate_eth": 0.000005236375878362,
"platform_fees_eth": 5.715049468e-9,
"previous_conversion_rate": 1.0371537463463845,
"provider_fees_eth": 2.89893814e-10,
"rebate_eth": 0.000006264174837104,
"rebate_lseth": 0.000006264174837104,
"rewards_eth": 7.4544123505e-8,
"slashing_fees_eth": 2.48480412e-10,
"target_fee_rate": 0.000006264174837104
}
],
"end_conversion_rate": 1.0454865181649966,
"from": "2024-04-01",
"org_id": "org_aDs4aCACyWYgMQ4A",
"start_conversion_rate": 1.006282340620787,
"to": "2024-04-01",
"total_burns_lseth": 0,
"total_dao_fees_eth": 4.34597684399e-7,
"total_fees_eth": 0.000006787291484265,
"total_gross_fees_eth": 0.000006787291484265,
"total_gross_rewards_eth": 0.000045747124673728,
"total_mints_lseth": 0.00099376738985375,
"total_operator_fees_eth": 8.18961611118e-7,
"total_platform_fees_at_discount_rate_eth": 0.000005236375878362,
"total_platform_fees_eth": 0.000005236375878362,
"total_provider_fees_eth": 1.60114936353e-7,
"total_rebate_eth": 0,
"total_rebate_lseth": 0,
"total_rewards_eth": 0.000038959833189463,
"total_slashing_fees_eth": 1.37241374012e-7
}
]
},
"metadata": {
"next_cursor": null
}
}[
{
"address": "0x123456789985ca04a69c35978c3a3e778d6ef172",
"balance": "4200000000000000000000",
"block_number": 15034284
}
]{
"created_at": "2024-01-24T13:07:50.335845Z",
"id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"key": "depositor_example",
"org_id": "org_28CLGCvsdG7TlOHf",
"status": "ACTIVE"
}{
"created_at": "2024-01-24T13:07:50.335845Z",
"id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"key": "depositor_example",
"org_id": "org_28CLGCvsdG7TlOHf",
"status": "REMOVED",
"wallets": [
{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"status": "REMOVED",
"type": "ETH"
}
]
}{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "ALLOWLISTED",
"type": "ETH"
}{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"status": "REMOVED",
"type": "ETH"
}{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "PAUSED | ALLOWLISTED",
"type": "ETH"
}{
"account_id": "ac0d0cdf-92bc-4cbe-a180-a2efb2387d16",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"allowlisted": true,
"created_at": "2024-01-25T13:07:50.335845Z",
"id": "dd8eefc8-0cc4-4a27-adc0-e1ebebed598d",
"on_platform": true,
"status": "PAUSED | ALLOWLISTED",
"type": "ETH"
}const { ethers } = require('ethers');
const Contract = require('./Contract.json');
(async () => {
const nodeUrl = 'https://ethereum-hoodi-rpc.publicnode.com';
const provider = new ethers.providers.JsonRpcProvider(nodeUrl);
const signer = new ethers.Wallet('<INSERT WALLET SECRET>', provider);
const LsETHContract = new ethers.Contract(
Contract.address,
Contract.abi,
signer
);
const walletAddress = '<INSERT WALLET ADDRESS>';
const value = ethers.utils.parseEther('0.000001');
//Get estimate for gas limit
const redeem_estimation = await LsETHContract.estimateGas.requestRedeem(
value,
walletAddress,
{ gasLimit: 1 }
);
// Create Redeem Request
let tx = await LsETHContract.requestRedeem(value, walletAddress, {
gasLimit: redeem_estimation,
});
let receipt = await tx.wait();
console.log(tx);
})();const ethers = require('ethers');
const Contract = require('./RedeemManager.json');
async function main() {
const provider = new ethers.providers.WebSocketProvider(
'wss://ethereum-hoodi-rpc.publicnode.com',
17000
);
const redeemManagerContract = new ethers.Contract(
Contract.address,
Contract.abi,
provider
);
redeemManagerContract.on(
'RequestedRedeem',
(owner, height, amount, maxRedeemableEth, id) => {
console.log('RequestedRedeem event');
console.log(`Owner of redeem ${owner}`);
console.log(`Height ${height.toString()}`);
console.log(`Amount of LsETH to redeem ${amount.toString()}`);
console.log(
`Maximum amount of ETH to redeem ${maxRedeemableEth.toString()}`
);
console.log(`Request Redeem ID ${id}`);
}
);
}
main();node websocket.jsRequestedRedeem event
Owner of redeem <WALLET ADDRESS>
Height 4980971589444881813
Amount of LsETH to redeem 10000000
Maximum amount of ETH to redeem 10212074
Request Redeem ID 18curl -X 'GET' \
'https://api.staging.alluvial.finance/eth/v0/redeems?owner=<WALLET ADDRESS>' \
-H 'accept: application/json' \
-H 'Authorization: Bearer e...jk'[
{
"id": 18,
"withdrawal_event_id": -1,
"total_amount_lseth": "10000000",
"claimed_amount_lseth": "0",
"claimable_amount_lseth": "0",
"max_redeemable_amount_eth": "10209790",
"owner": "<WALLET ADDRESS>",
"height": "4980971589354881813",
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "PENDING_SATISFACTION",
"requested_at": 9017542
}
]curl 'https://api.staging.alluvial.finance/eth/v0/redeems/18/projection' \
-H 'Authorization: Bearer e...jk'{
"projected_redeemable_at": "2023-05-19T19:16:24Z"
}redeemManagerContract.on(
'ReportedWithdrawal',
(height, amount, ethAmount, id) => {
console.log('ReportedWithdrawal event');
console.log(`Height ${height.toString()}`);
console.log(`Amount of LsETH to redeem ${amount.toString()}`);
console.log(`ETH amount being withdrawn ${ethAmount.toString()}`);
console.log(`Withdrawal event ID ${id}`);
}
);ReportedWithdrawal event
Height 4980971589444881813
Amount of LsETH to redeem 10000000
ETH amount being withdrawn 10212074
Withdrawal event ID 10const { ethers } = require('ethers');
const Contract = require('./Contract.json');
(async () => {
const LsETHContract = new ethers.Contract(
Contract.address,
Contract.abi,
provider
);
let arrRequestId = [18];
let resolveRedeem = await LsETHContract.resolveRedeemRequests(arrRequestId);
console.log(resolveRedeem.toString());
})();10curl 'https://api.staging.alluvial.finance/eth/v0/redeems/18' \
-H 'Authorization: Bearer e...jk'[
{
"id": 18,
"withdrawal_event_id": 10,
"total_amount_lseth": "10000000",
"claimed_amount_lseth": "0",
"claimable_amount_lseth": "10000000",
"max_redeemable_amount_eth": "10209790",
"owner": "<WALLET ADDRESS>",
"height": "4980971589354881813",
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "FULLY_SATISFIED",
"requested_at": 9017542
}
]const arrRequestId = [18];
const arrWithdrawalId = [10];
//Get estimate for gas limit
const claim_estimation = await LsETHContract.estimateGas.claimRedeemRequests(
arrRequestId,
arrWithdrawalId,
{ gasLimit: 1 }
);
const claimRedeemRequests = await LsETHContract.claimRedeemRequests(
arrRequestId,
arrWithdrawalId,
{ gasLimit: claim_estimation }
);
const receipt = await claimRedeemRequests.wait();
console.log(claimRedeemRequests);redeemManagerContract.on(
'ClaimedRedeemRequest',
(
redeemRequestId,
recipient,
ethAmount,
lsEthAmount,
remainingLsEthAmount
) => {
console.log('ClaimedRedeemRequest event');
console.log(`Redeem Request ID ${redeemRequestId}`);
console.log(`Recipient of redeem request ${recipient}`);
console.log(`Amount of ETH ${ethAmount.toString()}`);
console.log(`Amount of LsETH ${lsEthAmount.toString()}`);
console.log(`Amount of remaining LsETH ${remainingLsEthAmount.toString()}`);
}
);ClaimedRedeemRequest event
Redeem Request ID 18
Recipient of redeem request <WALLET ADDRESS>
Amount of ETH 10209790
Amount of LsETH 10000000
Amount of remaining LsETH 0redeemManagerContract.on(
'SatisfiedRedeemRequest',
(
redeemRequestId,
withdrawalEventId,
lsEthAmountSatisfied,
ethAmountSatisfied,
lsEthAmountRemaining,
ethAmountExceeding
) => {
console.log('SatisfiedRedeemRequest event');
console.log(`Redeem Request ID ${redeemRequestId}`);
console.log(`Withdrawal ID ${withdrawalEventId}`);
console.log(`Amount of LsETH satisfied ${lsEthAmountSatisfied.toString()}`);
console.log(`Amount of ETH satisfied ${ethAmountSatisfied.toString()}`);
console.log(
`Amount of LsETH left to satisfy ${lsEthAmountRemaining.toString()}`
);
console.log(
`Amount of ETH added to buffer ${ethAmountExceeding.toString()}`
);
}
);SatisfiedRedeemRequest event
Redeem Request ID 18
Withdrawal ID 10
Amount of LsETH satisfied 10000000
Amount of ETH satisfied 10209790
Amount of LsETH left to satisfy 0
Amount of ETH added to buffer 163curl -X 'GET' \
'https://api.staging.alluvial.finance/eth/v0/redeems?owner=<WALLET ADDRESS>' \
-H 'accept: application/json' \
-H 'Authorization: Bearer e...jk'{
"id": 18,
"withdrawal_event_id": -3,
"total_amount_lseth": "10000000",
"claimed_amount_lseth": "10000000",
"claimable_amount_lseth": "0",
"max_redeemable_amount_eth": "10209790",
"owner": "<WALLET ADDRESS>",
"height": "4980971589354881813",
"status_claim": "FULLY_CLAIMED",
"status_satisfaction": "FULLY_SATISFIED",
"requested_at": 9017542
}curl -X 'GET' \
'https://api.staging.alluvial.finance/eth/v0/redeems_info' \
-H 'accept: application/json' \
-H 'Authorization: Bearer e...jk'{
"total_amount_withdrawal_stack_lseth": "204462016832064499274",
"total_amount_redeem_queue_lseth": "237456822758541259805"
}curl -X 'GET' \
'https://api.staging.alluvial.finance/eth/v0/redeems_info/projection'\
-H 'accept: application/json' \
-H 'Authorization: Bearer e...jk'{
"projected_fulfilled_at": "2023-06-15T11:02:24Z"
}const { ethers } = require('ethers');
const Contract = require('../Contract.json');
const walletAddress = '0xbe79ff177a8F6a0D9656cF47D8687f43666a4d1e';
(async () => {
const nodeUrl = 'https://ethereum-hoodi-rpc.publicnode.com';
const provider = new ethers.providers.JsonRpcProvider(nodeUrl);
const gasPrice = await provider.getGasPrice();
const signer = new ethers.Wallet('<INSERT WALLET PRIVATE KEY>', provider);
const riverContract = new ethers.Contract(
Contract.address,
Contract.abi,
signer
);
const value = ethers.utils.parseEther('0.000000000001');
//Get estimate for gas limit
const redeem_estimation = await riverContract.estimateGas.requestRedeem(
value,
walletAddress,
{ gasLimit: 1 }
);
// Create Redeem Request
let tx = await riverContract.requestRedeem(value, walletAddress, {
gasLimit: redeem_estimation,
});
// ***** Start resolve redeem function block *****
// Uncomment when running claimRedeemRequests()
//let arrRequestId = [18];
//let resolveRedeem = await LsETHContract.resolveRedeemRequests(arrRequestId);
// console.log(resolveRedeem.toString())
// ***** Stop resolve redeem function block *****
// ***** Start claiming function block *****
// Get estimate for gas limit
// const claim_estimation = await LsETHContract.estimateGas.claimRedeemRequests(arrRequestId, arrWithdrawalId, { gasLimit: 1});
//let arrRequestId = [18];
//const arrWithdrawalId = [10]
//const claimRedeemRequests = await LsETHContract.claimRedeemRequests(arrRequestId, arrWithdrawalId, { gasLimit: claim_estimation});
//const receipt = await claimRedeemRequests.wait();
//console.log(claimRedeemRequests);
// ***** end claiming function block *****
})();{
"id": 1,
"withdrawal_event_id": -1,
"total_amount_lseth": "1000000",
"claimed_amount_lseth": "0",
"claimable_amount_lseth": "0",
"max_redeemable_amount_eth": "1023507",
"owner": "<WALLET ADDRESS>",
"height": "201956822758540259700",
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "PENDING_SATISFACTION",
"requested_at": 9134158
}{
"id": 1,
"withdrawal_event_id": 1,
"total_amount_lseth": "1000000",
"claimed_amount_lseth": "0",
"claimable_amount_lseth": "900000",
"max_redeemable_amount_eth": "1023507",
"owner": "<WALLET ADDRESS>",
"height": "201956822758540259700",
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "PARTIALLY_SATISFIED",
"requested_at": 9134158
}{
"id": 1,
"withdrawal_event_id": 1,
"total_amount_lseth": "1000000",
"claimed_amount_lseth": "0",
"claimable_amount_lseth": "1000000",
"max_redeemable_amount_eth": "1023507",
"owner": "<WALLET ADDRESS>",
"height": "201956822758540259700",
"status_claim": "NOT_CLAIMED",
"status_satisfaction": "FULLY_SATISFIED",
"requested_at": 9134158
}{
"id": 1,
"withdrawal_event_id": -1,
"total_amount_lseth": "1000000",
"claimed_amount_lseth": "900000",
"claimable_amount_lseth": "0",
"max_redeemable_amount_eth": "1023507",
"owner": "<WALLET ADDRESS>",
"height": "201956822758540259700",
"status_claim": "PARTIALLY_CLAIMED",
"status_satisfaction": "PENDING_SATISFACTION",
"requested_at": 9134158
}{
"id": 1,
"withdrawal_event_id": 2,
"total_amount_lseth": "1000000",
"claimed_amount_lseth": "900000",
"claimable_amount_lseth": "60000",
"max_redeemable_amount_eth": "1023507",
"owner": "<WALLET ADDRESS>",
"height": "201956822758540259700",
"status_claim": "PARTIALLY_CLAIMED",
"status_satisfaction": "PARTIALLY_SATISFIED",
"requested_at": 9134158
}{
"id": 1,
"withdrawal_event_id": 2,
"total_amount_lseth": "1000000",
"claimed_amount_lseth": "900000",
"claimable_amount_lseth": "100000",
"max_redeemable_amount_eth": "1023507",
"owner": "<WALLET ADDRESS>",
"height": "201956822758540259700",
"status_claim": "PARTIALLY_CLAIMED",
"status_satisfaction": "FULLY_SATISFIED",
"requested_at": 9134158
}{
"id": 1,
"withdrawal_event_id": -3,
"total_amount_lseth": "1000000",
"claimed_amount_lseth": "1000000",
"claimable_amount_lseth": "0",
"max_redeemable_amount_eth": "1023507",
"owner": "<WALLET ADDRESS>",
"height": "201956822758540259700",
"status_claim": "FULLY_CLAIMED",
"status_satisfaction": "FULLY_SATISFIED",
"requested_at": 9134158
}const fs = require('fs');
const path = require('path');
const { FireblocksSDK } = require('fireblocks-sdk');
const { inspect } = require('util');const createVault = async () => {
const name = 'LsETH blog';
const vaultAccount = await fireblocks.createVaultAccount(name);
console.log(inspect(vaultAccount, false, null, true));
};
createVault();{
"id": "6",
"name": "LsETH blog",
"hiddenOnUI": false,
"assets": [],
"autoFuel": false
}const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS;
const getAssets = async() => {
const supportedAssets = await fireblocks.getSupportedAssets();
supportedAssets.forEach((asset, index, array) => {
if (asset.contractAddress == CONTRACT_ADDRESS) {
console.log(JSON.stringify(asset))
)
}
})
}
getAssets();{
"id": "LSETH_ETH_TEST3_4E2A",
"name": "Liquid Staked ETH",
"type": "ERC20",
"contractAddress": "0x3ecCAdA3e11c1Cc3e9B5a53176A67cc3ABDD3E46",
"nativeAsset": "ETH_TEST3",
"decimals": 18
}const addAssetToVault = async () => {
const vaultWallet = await fireblocks.createVaultAsset(
6,
'LSETH_ETH_TEST3_4E2A'
);
console.log(inspect(vaultWallet, false, null, true));
};
addAssetToVault();{
"id": "6",
"address": "<FIREBLOCKS ADDRESS>",
"legacyAddress": "",
"tag": ""
}const {
FireblocksWeb3Provider,
ChainId,
} = require('@fireblocks/fireblocks-web3-provider');
const ethers = require('ethers');{
"abi": [ { INSERT ABI FILE HERE } ],
}const ABI = require('./Contract.json').abi;const eip1193Provider = new FireblocksWeb3Provider({
privateKey: process.env.FIREBLOCKS_API_PRIVATE_KEY_PATH,
apiKey: process.env.FIREBLOCKS_API_KEY,
vaultAccountIds: process.env.FIREBLOCKS_VAULT_ACCOUNT_IDS,
chainId: ChainId.GOERLI,
// apiBaseUrl: ApiBaseUrl.Sandbox // If using a sandbox workspace
});const createDeposit = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const gasPrice = await provider.getGasPrice();
const deposit_estimation = await LsETHContract.estimateGas.deposit({
from: FIREBLOCKS_ADDRESS,
value: ethers.utils.parseUnits('0.00000001', 'ether'),
gasLimit: ethers.utils.hexlify(1),
nonce: provider.getTransactionCount(FIREBLOCKS_ADDRESS, 'latest'),
});
let tx = await LsETHContract.deposit({
from: FIREBLOCKS_ADDRESS,
value: ethers.utils.parseUnits('0.000000001', 'ether'),
gasPrice: gasPrice,
gasLimit: deposit_estimation,
nonce: provider.getTransactionCount(FIREBLOCKS_ADDRESS, 'latest'),
});
let receipt = await tx.wait();
console.log(receipt);
};
createDeposit();const getTx = async () => {
const transactions = await fireblocks.getTransactions({
txHash: '<INSERT TX HASH>',
});
console.log(JSON.stringify(transactions));
};
getTx();{
"id": "LSETH_ETH_TEST3_4E2A",
"total": "0.000000000974731883",
"balance": "0.000000000974731883",
"lockedAmount": "0",
"available": "0.000000000974731883",
"pending": "0",
"frozen": "0",
"staked": "0",
"blockHeight": "9212224",
"blockHash": "0xc1d94ab995a5db95ddaa10b85ef47b24a38b9ea7249ac7c64bb46a1288fa33bc"
}const createRedeemRequest = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const value = ethers.utils.parseEther('0.000001');
const redeem_estimation = await LsETHContract.estimateGas.requestRedeem(
value,
FIREBLOCKS_ADDRESS,
{ gasLimit: 1 }
);
const tx = await LsETHContract.requestRedeem(value, FIREBLOCKS_ADDRESS, {
gasLimit: redeem_estimation,
});
let receipt = await tx.wait();
console.log(receipt);
};
createRedeemRequest();const resolveRedeemRequest = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const value = ethers.utils.parseEther('0.000001');
const arrRequestId = [53];
const resolveRedeem = await LsETHContract.resolveRedeemRequests(arrRequestId);
console.log(resolveRedeem.toString());
};
resolveRedeemRequest();const createClaimRedeemRequest = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const arrRequestId = [53];
const arrWithdrawalId = [111];
const claim_estimation = await LsETHContract.estimateGas.claimRedeemRequests(
arrRequestId,
arrWithdrawalId,
{ gasLimit: 1 }
);
const claimRedeemRequests = await LsETHContract.claimRedeemRequests(
arrRequestId,
arrWithdrawalId,
{ gasLimit: claim_estimation }
);
const receipt = await claimRedeemRequests.wait();
console.log(claimRedeemRequests);
};
createClaimRedeemRequest();//General dependencies
require('dotenv').config();
const fs = require('fs');
const path = require('path');
const { inspect } = require('util');
//Fireblocks SDKs
const { FireblocksSDK } = require('fireblocks-sdk');
const {
FireblocksWeb3Provider,
ChainId,
} = require('@fireblocks/fireblocks-web3-provider');
const ethers = require('ethers');
const baseUrl = 'https://api.fireblocks.io';
const apiSecret = fs.readFileSync(path.resolve('./fb.key'), 'utf8');
const apiKey = process.env.API_KEY;
const ABI = require('./Contract.json').abi;
const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS;
const FIREBLOCKS_ADDRESS = process.env.FIREBLOCKS_ADDRESS;
const fireblocks = new FireblocksSDK(apiSecret, apiKey, baseUrl);
const eip1193Provider = new FireblocksWeb3Provider({
apiBaseUrl: baseUrl,
privateKey: apiSecret,
apiKey: apiKey,
vaultAccountIds: 3,
chainId: ChainId.GOERLI,
});
const createVault = async () => {
const name = 'LsETH blog';
const vaultAccount = await fireblocks.createVaultAccount(name);
console.log(inspect(vaultAccount, false, null, true));
};
//createVault()
const getAssets = async () => {
const supportedAssets = await fireblocks.getSupportedAssets();
supportedAssets.forEach((asset, index, array) => {
if (asset.contractAddress == CONTRACT_ADDRESS) {
console.log(JSON.stringify(asset));
}
});
};
//getAssets()
const addAssetToVault = async () => {
const vaultWallet = await fireblocks.createVaultAsset(
6,
'LSETH_ETH_TEST3_4E2A'
);
console.log(inspect(vaultWallet, false, null, true));
};
//addAssetToVault()
const createDeposit = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const gasPrice = await provider.getGasPrice();
const deposit_estimation = await LsETHContract.estimateGas.deposit({
from: FIREBLOCKS_ADDRESS,
value: ethers.utils.parseUnits('0.00000001', 'ether'),
gasLimit: ethers.utils.hexlify(1),
nonce: provider.getTransactionCount(FIREBLOCKS_ADDRESS, 'latest'),
});
let tx = await LsETHContract.deposit({
from: FIREBLOCKS_ADDRESS,
value: ethers.utils.parseUnits('0.000000001', 'ether'),
gasPrice: gasPrice,
gasLimit: deposit_estimation,
nonce: provider.getTransactionCount(FIREBLOCKS_ADDRESS, 'latest'),
});
let receipt = await tx.wait();
console.log(receipt);
};
//createDeposit()
const getTx = async () => {
const transactions = await fireblocks.getTransactions({
txHash:
'0x124e9ef06e38ab0e3ff78d066f8f2eea54b18210390a229c251a0d578853ae20',
});
console.log(JSON.stringify(transactions));
};
//getTx()
const getBalance = async () => {
const vaultAsset = await fireblocks.getVaultAccountAsset(
3,
'LSETH_ETH_TEST3_4E2A'
);
console.log(JSON.stringify(vaultAsset));
};
//getBalance()
const createRedeemRequest = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const value = ethers.utils.parseEther('0.000001');
const redeem_estimation = await LsETHContract.estimateGas.requestRedeem(
value,
FIREBLOCKS_ADDRESS,
{ gasLimit: 1 }
);
const tx = await LsETHContract.requestRedeem(value, FIREBLOCKS_ADDRESS, {
gasLimit: redeem_estimation,
});
let receipt = await tx.wait();
console.log(receipt);
};
//createRedeemRequest();
const resolveRedeemRequest = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const value = ethers.utils.parseEther('0.000001');
const arrRequestId = [53];
const resolveRedeem = await LsETHContract.resolveRedeemRequests(arrRequestId);
console.log(resolveRedeem.toString());
};
//resolveRedeemRequest();
const createClaimRedeemRequest = async () => {
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const LsETHContract = new ethers.Contract(
CONTRACT_ADDRESS,
ABI,
provider.getSigner()
);
const arrRequestId = [53];
const arrWithdrawalId = [111];
const claim_estimation = await LsETHContract.estimateGas.claimRedeemRequests(
arrRequestId,
arrWithdrawalId,
{ gasLimit: 1 }
);
const claimRedeemRequests = await LsETHContract.claimRedeemRequests(
arrRequestId,
arrWithdrawalId,
{ gasLimit: claim_estimation }
);
const receipt = await claimRedeemRequests.wait();
console.log(claimRedeemRequests);
};
//createClaimRedeemRequest();
const { ethers } = require('ethers');const Contract = require('./Contract.json');(async () => {
const nodeUrl = 'https://ethereum-hoodi-rpc.publicnode.com';
const provider = new ethers.providers.JsonRpcProvider(nodeUrl);
const gasPrice = await provider.getGasPrice();
const signer = new ethers.Wallet('<INSERT WALLET KEY>', provider);
const LsETHContract = new ethers.Contract(
Contract.address,
Contract.abi,
signer
);
const walletAddress = '<INSERT WALLET ADDRESS>';
})();// Get estimate for gas limit
const deposit_estimation = await LsETHContract.estimateGas.deposit({
from: walletAddress,
value: ethers.utils.parseUnits('0.00000001', 'ether'),
gasLimit: ethers.utils.hexlify(1),
nonce: provider.getTransactionCount(walletAddress, 'latest'),
});
// Deposit tx
let tx = await LsETHContract.deposit({
from: walletAddress,
value: ethers.utils.parseUnits('0.00000001', 'ether'),
gasPrice: gasPrice,
gasLimit: deposit_estimation,
nonce: provider.getTransactionCount(walletAddress, 'latest'),
});
let receipt = await tx.wait();
console.log(receipt);const { ethers } = require('ethers');
const Contract = require('./Contract.json');
const walletAddress = '0xbe79ff177a8F6a0D9656cF47D8687f43666a4d1e'(async () => {
const nodeUrl = 'https://ethereum-hoodi-rpc.publicnode.com';
const provider = new ethers.providers.JsonRpcProvider(nodeUrl);
const gasPrice = await provider.getGasPrice();
const signer = new ethers.Wallet('<INSERT WALLET KEY>', provider);
const LsETHContract = new ethers.Contract(
Contract.address,
Contract.abi,
signer
);
const walletAddress = '<INSERT WALLET ADDRESS>';
const value = ethers.utils.parseEther('0.000000000001');
const deposit_estimation = await LsETHContract.estimateGas.deposit({
from: walletAddress,
value: ethers.utils.parseUnits('0.00000001', 'ether'),
gasLimit: ethers.utils.hexlify(1),
nonce: provider.getTransactionCount(walletAddress, 'latest'),
});
let tx = await LsETHContract.deposit({
from: walletAddress,
value: ethers.utils.parseUnits('0.00000001', 'ether'),
gasPrice: gasPrice,
gasLimit: deposit_estimation,
nonce: provider.getTransactionCount(walletAddress, 'latest'),
});
let receipt = await tx.wait();
console.log(receipt);
})();{
"address": "0x1d8b30cC38Dba8aBce1ac29Ea27d9cFd05379A09",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "uint256",
"name": "_allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "AllowanceTooLow",
"type": "error"
},
{
"inputs": [],
"name": "BalanceTooLow",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Denied",
"type": "error"
},
{
"inputs": [],
"name": "EmptyDeposit",
"type": "error"
},
{
"inputs": [],
"name": "ErrorOnDeposit",
"type": "error"
},
{
"inputs": [],
"name": "InconsistentPublicKeys",
"type": "error"
},
{
"inputs": [],
"name": "InconsistentSignatures",
"type": "error"
},
{
"inputs": [],
"name": "InvalidArgument",
"type": "error"
},
{
"inputs": [],
"name": "InvalidCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "currentValidatorsExitedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "newValidatorsExitedBalance",
"type": "uint256"
}
],
"name": "InvalidDecreasingValidatorsExitedBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "currentValidatorsSkimmedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "newValidatorsSkimmedBalance",
"type": "uint256"
}
],
"name": "InvalidDecreasingValidatorsSkimmedBalance",
"type": "error"
},
{
"inputs": [],
"name": "InvalidEmptyString",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epoch",
"type": "uint256"
}
],
"name": "InvalidEpoch",
"type": "error"
},
{
"inputs": [],
"name": "InvalidFee",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "version",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expectedVersion",
"type": "uint256"
}
],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "InvalidPublicKeyCount",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requested",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "received",
"type": "uint256"
}
],
"name": "InvalidPulledClFundsAmount",
"type": "error"
},
{
"inputs": [],
"name": "InvalidSignatureCount",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "providedValidatorCount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "depositedValidatorCount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastReportedValidatorCount",
"type": "uint256"
}
],
"name": "InvalidValidatorCountReport",
"type": "error"
},
{
"inputs": [],
"name": "InvalidWithdrawalCredentials",
"type": "error"
},
{
"inputs": [],
"name": "InvalidZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "NoAvailableValidatorKeys",
"type": "error"
},
{
"inputs": [],
"name": "NotEnoughFunds",
"type": "error"
},
{
"inputs": [],
"name": "NullTransfer",
"type": "error"
},
{
"inputs": [],
"name": "SliceOutOfBounds",
"type": "error"
},
{
"inputs": [],
"name": "SliceOverflow",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "prevTotalEthIncludingExited",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "postTotalEthIncludingExited",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeElapsed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "relativeLowerBound",
"type": "uint256"
}
],
"name": "TotalValidatorBalanceDecreaseOutOfBound",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "prevTotalEthIncludingExited",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "postTotalEthIncludingExited",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timeElapsed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "annualAprUpperBound",
"type": "uint256"
}
],
"name": "TotalValidatorBalanceIncreaseOutOfBound",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "caller",
"type": "address"
}
],
"name": "Unauthorized",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
}
],
"name": "UnauthorizedTransfer",
"type": "error"
},
{
"inputs": [],
"name": "ZeroMintedShares",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "validatorCount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "validatorTotalBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "roundId",
"type": "bytes32"
}
],
"name": "ConsensusLayerDataUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "version",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "cdata",
"type": "bytes"
}
],
"name": "Initialize",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "epoch",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsSkimmedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsExitedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsExitingBalance",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "validatorsCount",
"type": "uint32"
},
{
"internalType": "uint32[]",
"name": "stoppedValidatorCountPerOperator",
"type": "uint32[]"
},
{
"internalType": "bool",
"name": "rebalanceDepositToRedeemMode",
"type": "bool"
},
{
"internalType": "bool",
"name": "slashingContainmentMode",
"type": "bool"
}
],
"indexed": false,
"internalType": "struct IOracleManagerV1.ConsensusLayerReport",
"name": "report",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "rewards",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "pulledELFees",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "pulledRedeemManagerExceedingEthBuffer",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "pulledCoverageFunds",
"type": "uint256"
}
],
"indexed": false,
"internalType": "struct IOracleManagerV1.ConsensusLayerDataReportingTrace",
"name": "trace",
"type": "tuple"
}
],
"name": "ProcessedConsensusLayerReport",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "pulledSkimmedEthAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "pullExitedEthAmount",
"type": "uint256"
}
],
"name": "PulledCLFunds",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "PulledCoverageFunds",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "PulledELFees",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "PulledRedeemManagerExceedingEth",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "redeemManagerDemand",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "suppliedRedeemManagerDemand",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "suppliedRedeemManagerDemandInEth",
"type": "uint256"
}
],
"name": "ReportedRedeemManager",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_collector",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_oldTotalUnderlyingBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_oldTotalSupply",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_newTotalUnderlyingBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_newTotalSupply",
"type": "uint256"
}
],
"name": "RewardsEarned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "SetAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "allowlist",
"type": "address"
}
],
"name": "SetAllowlist",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newAmount",
"type": "uint256"
}
],
"name": "SetBalanceCommittedToDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newAmount",
"type": "uint256"
}
],
"name": "SetBalanceToDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newAmount",
"type": "uint256"
}
],
"name": "SetBalanceToRedeem",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "annualAprUpperBound",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "relativeLowerBound",
"type": "uint256"
}
],
"name": "SetBounds",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "collector",
"type": "address"
}
],
"name": "SetCollector",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "coverageFund",
"type": "address"
}
],
"name": "SetCoverageFund",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "depositContract",
"type": "address"
}
],
"name": "SetDepositContractAddress",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldDepositedValidatorCount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newDepositedValidatorCount",
"type": "uint256"
}
],
"name": "SetDepositedValidatorCount",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "elFeeRecipient",
"type": "address"
}
],
"name": "SetELFeeRecipient",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"name": "SetGlobalFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "minNetAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "maxRelativeAmount",
"type": "uint256"
}
],
"name": "SetMaxDailyCommittableAmounts",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "metadataURI",
"type": "string"
}
],
"name": "SetMetadataURI",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operatorRegistry",
"type": "address"
}
],
"name": "SetOperatorsRegistry",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oracleAddress",
"type": "address"
}
],
"name": "SetOracle",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pendingAdmin",
"type": "address"
}
],
"name": "SetPendingAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "redeemManager",
"type": "address"
}
],
"name": "SetRedeemManager",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "epochsPerFrame",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "slotsPerEpoch",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "secondsPerSlot",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "genesisTime",
"type": "uint64"
},
{
"indexed": false,
"internalType": "uint64",
"name": "epochsToAssumedFinality",
"type": "uint64"
}
],
"name": "SetSpec",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
}
],
"name": "SetTotalSupply",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "withdrawalCredentials",
"type": "bytes32"
}
],
"name": "SetWithdrawalCredentials",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "depositor",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "UserDeposit",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"inputs": [],
"name": "DEPOSIT_SIZE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PUBLIC_KEY_LENGTH",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SIGNATURE_LENGTH",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_DEPOSIT_SIZE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "acceptAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOfUnderlying",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32[]",
"name": "_redeemRequestIds",
"type": "uint32[]"
},
{
"internalType": "uint32[]",
"name": "_withdrawalEventIds",
"type": "uint32[]"
}
],
"name": "claimRedeemRequests",
"outputs": [
{
"internalType": "uint8[]",
"name": "claimStatuses",
"type": "uint8[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_subtractableValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "deposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_recipient",
"type": "address"
}
],
"name": "depositAndTransfer",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_maxCount",
"type": "uint256"
}
],
"name": "depositToConsensusLayer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAllowlist",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBalanceToDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBalanceToRedeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCLSpec",
"outputs": [
{
"components": [
{
"internalType": "uint64",
"name": "epochsPerFrame",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "slotsPerEpoch",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "secondsPerSlot",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "genesisTime",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "epochsToAssumedFinality",
"type": "uint64"
}
],
"internalType": "struct CLSpec.CLSpecStruct",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCLValidatorCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCLValidatorTotalBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCollector",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCommittedBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCoverageFund",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentEpochId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCurrentFrame",
"outputs": [
{
"internalType": "uint256",
"name": "_startEpochId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_startTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_endTime",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDailyCommittableLimits",
"outputs": [
{
"components": [
{
"internalType": "uint128",
"name": "minDailyNetCommittableAmount",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "maxDailyRelativeCommittableAmount",
"type": "uint128"
}
],
"internalType": "struct DailyCommittableLimits.DailyCommittableLimitsStruct",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDepositedValidatorCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getELFeeRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExpectedEpochId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_epochId",
"type": "uint256"
}
],
"name": "getFrameFirstEpochId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getGlobalFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLastCompletedEpochId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLastConsensusLayerReport",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "epoch",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsSkimmedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsExitedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsExitingBalance",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "validatorsCount",
"type": "uint32"
},
{
"internalType": "bool",
"name": "rebalanceDepositToRedeemMode",
"type": "bool"
},
{
"internalType": "bool",
"name": "slashingContainmentMode",
"type": "bool"
}
],
"internalType": "struct IOracleManagerV1.StoredConsensusLayerReport",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMetadataURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOperatorsRegistry",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOracle",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPendingAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getRedeemManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getReportBounds",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "annualAprUpperBound",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "relativeLowerBound",
"type": "uint256"
}
],
"internalType": "struct ReportBounds.ReportBoundsStruct",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getWithdrawalCredentials",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_additionalValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_depositContractAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_elFeeRecipientAddress",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_withdrawalCredentials",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_oracleAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_systemAdministratorAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_allowlistAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_operatorRegistryAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_collectorAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "_globalFee",
"type": "uint256"
}
],
"name": "initRiverV1",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_redeemManager",
"type": "address"
},
{
"internalType": "uint64",
"name": "_epochsPerFrame",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_slotsPerEpoch",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_secondsPerSlot",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_genesisTime",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_epochsToAssumedFinality",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "_annualAprUpperBound",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_relativeLowerBound",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "_minDailyNetCommittableAmount_",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "_maxDailyRelativeCommittableAmount_",
"type": "uint128"
}
],
"name": "initRiverV1_1",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "initRiverV1_2",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_epoch",
"type": "uint256"
}
],
"name": "isValidEpoch",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newAdmin",
"type": "address"
}
],
"name": "proposeAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_lsETHAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_recipient",
"type": "address"
}
],
"name": "requestRedeem",
"outputs": [
{
"internalType": "uint32",
"name": "_redeemRequestId",
"type": "uint32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32[]",
"name": "_redeemRequestIds",
"type": "uint32[]"
}
],
"name": "resolveRedeemRequests",
"outputs": [
{
"internalType": "int64[]",
"name": "withdrawalEventIds",
"type": "int64[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "sendCLFunds",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "sendCoverageFunds",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "sendELFees",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "sendRedeemManagerExceedingFunds",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newAllowlist",
"type": "address"
}
],
"name": "setAllowlist",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint64",
"name": "epochsPerFrame",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "slotsPerEpoch",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "secondsPerSlot",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "genesisTime",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "epochsToAssumedFinality",
"type": "uint64"
}
],
"internalType": "struct CLSpec.CLSpecStruct",
"name": "_newValue",
"type": "tuple"
}
],
"name": "setCLSpec",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newCollector",
"type": "address"
}
],
"name": "setCollector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "epoch",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsSkimmedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsExitedBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "validatorsExitingBalance",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "validatorsCount",
"type": "uint32"
},
{
"internalType": "uint32[]",
"name": "stoppedValidatorCountPerOperator",
"type": "uint32[]"
},
{
"internalType": "bool",
"name": "rebalanceDepositToRedeemMode",
"type": "bool"
},
{
"internalType": "bool",
"name": "slashingContainmentMode",
"type": "bool"
}
],
"internalType": "struct IOracleManagerV1.ConsensusLayerReport",
"name": "_report",
"type": "tuple"
}
],
"name": "setConsensusLayerData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newCoverageFund",
"type": "address"
}
],
"name": "setCoverageFund",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint128",
"name": "minDailyNetCommittableAmount",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "maxDailyRelativeCommittableAmount",
"type": "uint128"
}
],
"internalType": "struct DailyCommittableLimits.DailyCommittableLimitsStruct",
"name": "_dcl",
"type": "tuple"
}
],
"name": "setDailyCommittableLimits",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newELFeeRecipient",
"type": "address"
}
],
"name": "setELFeeRecipient",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newFee",
"type": "uint256"
}
],
"name": "setGlobalFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_metadataURI",
"type": "string"
}
],
"name": "setMetadataURI",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_oracleAddress",
"type": "address"
}
],
"name": "setOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "annualAprUpperBound",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "relativeLowerBound",
"type": "uint256"
}
],
"internalType": "struct ReportBounds.ReportBoundsStruct",
"name": "_newValue",
"type": "tuple"
}
],
"name": "setReportBounds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_underlyingAssetAmount",
"type": "uint256"
}
],
"name": "sharesFromUnderlyingBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalUnderlyingSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_shares",
"type": "uint256"
}
],
"name": "underlyingBalanceFromShares",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}