@lidofinance/lido-csm-sdk 2.0.0-alpha.62 → 2.0.0-alpha.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,6 +16,8 @@
16
16
 
17
17
  ## Installation
18
18
 
19
+ Requires **Node.js >= 24**, `@lidofinance/lido-ethereum-sdk >= 4.8.0`, and `viem >= 2.46.0` (peer dependencies).
20
+
19
21
  Install via npm or yarn:
20
22
 
21
23
  ```bash
@@ -118,7 +120,7 @@ The SDK is designed for extensibility. You can instantiate individual modules di
118
120
 
119
121
  ## License
120
122
 
121
- This project is licensed under the MIT License. See the [LICENSE.txt](LICENSE.txt) file for details.
123
+ This project is licensed under the GPL-3.0-or-later License. See the [LICENSE.txt](LICENSE.txt) file for details.
122
124
 
123
125
  ## Changelog
124
126
 
@@ -2,6 +2,7 @@ require("../../_virtual/_rolldown/runtime.cjs");
2
2
  const require_contract_names = require("./contract-names.cjs");
3
3
  const require_module_name = require("./module-name.cjs");
4
4
  let _lidofinance_lido_ethereum_sdk = require("@lidofinance/lido-ethereum-sdk");
5
+ let viem = require("viem");
5
6
  //#region src/common/constants/module-config.ts
6
7
  const COMMON_ADDRESSES = {
7
8
  [_lidofinance_lido_ethereum_sdk.CHAINS.Mainnet]: {
@@ -65,7 +66,26 @@ const MODULE_CONFIG = {
65
66
  },
66
67
  [require_module_name.MODULE_NAME.CM]: {
67
68
  [_lidofinance_lido_ethereum_sdk.CHAINS.Mainnet]: {
68
- contractAddresses: {},
69
+ contractAddresses: {
70
+ [require_contract_names.CONTRACT_NAMES.curatedModule]: viem.zeroAddress,
71
+ [require_contract_names.CONTRACT_NAMES.accounting]: viem.zeroAddress,
72
+ [require_contract_names.CONTRACT_NAMES.ejector]: viem.zeroAddress,
73
+ [require_contract_names.CONTRACT_NAMES.exitPenalties]: viem.zeroAddress,
74
+ [require_contract_names.CONTRACT_NAMES.feeDistributor]: viem.zeroAddress,
75
+ [require_contract_names.CONTRACT_NAMES.feeOracle]: viem.zeroAddress,
76
+ [require_contract_names.CONTRACT_NAMES.parametersRegistry]: viem.zeroAddress,
77
+ [require_contract_names.CONTRACT_NAMES.validatorStrikes]: viem.zeroAddress,
78
+ [require_contract_names.CONTRACT_NAMES.verifier]: viem.zeroAddress,
79
+ [require_contract_names.CONTRACT_NAMES.hashConsensus]: viem.zeroAddress,
80
+ [require_contract_names.CONTRACT_NAMES.metaRegistry]: viem.zeroAddress,
81
+ [require_contract_names.CONTRACT_NAMES.curatedGatePO]: viem.zeroAddress,
82
+ [require_contract_names.CONTRACT_NAMES.curatedGatePTO]: viem.zeroAddress,
83
+ [require_contract_names.CONTRACT_NAMES.curatedGatePGO]: viem.zeroAddress,
84
+ [require_contract_names.CONTRACT_NAMES.curatedGateDO]: viem.zeroAddress,
85
+ [require_contract_names.CONTRACT_NAMES.curatedGateEEO]: viem.zeroAddress,
86
+ [require_contract_names.CONTRACT_NAMES.curatedGateIODC]: viem.zeroAddress,
87
+ [require_contract_names.CONTRACT_NAMES.curatedGateIODCP]: viem.zeroAddress
88
+ },
69
89
  moduleId: 4n
70
90
  },
71
91
  [_lidofinance_lido_ethereum_sdk.CHAINS.Hoodi]: {
@@ -1 +1 @@
1
- {"version":3,"file":"module-config.cjs","names":[],"sources":["../../../src/common/constants/module-config.ts"],"sourcesContent":["import { CHAINS } from '@lidofinance/lido-ethereum-sdk';\nimport { Address } from 'viem';\n\nimport { CONTRACT_NAMES } from './contract-names';\nimport { MODULE_NAME, PerModule } from './module-name';\nimport { PerSupportedChain } from './supported-chains';\n\ntype ContractAddressMap = { [key in CONTRACT_NAMES]?: Address };\n\ntype ModuleChainConfig = {\n contractAddresses: ContractAddressMap;\n moduleId: bigint;\n deploymentBlockNumber?: bigint;\n};\n\nexport type ModuleConfig = PerSupportedChain<ModuleChainConfig>;\n\nexport const COMMON_ADDRESSES: PerSupportedChain<ContractAddressMap> = {\n [CHAINS.Mainnet]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xFdDf38947aFB03C621C71b06C9C70bce73f12999',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e',\n [CONTRACT_NAMES.withdrawalVault]:\n '0xB9D7934878B5FB9610B3fE8A5e441e8fad7E293f',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x388C818CA8B9251b393131C08a736A67ccB19297',\n [CONTRACT_NAMES.stETH]: '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',\n [CONTRACT_NAMES.wstETH]: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',\n [CONTRACT_NAMES.smDiscovery]: '0x32893b74064160c626652c2c21a849fdd0bddfd6',\n },\n [CHAINS.Hoodi]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xCc820558B39ee15C7C45B59390B503b83fb499A8',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x8664d394C2B3278F26A1B44B967aEf99707eeAB2',\n [CONTRACT_NAMES.withdrawalVault]:\n '0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x9b108015fe433F173696Af3Aa0CF7CDb3E104258',\n [CONTRACT_NAMES.stETH]: '0x3508A952176b3c15387C97BE809eaffB1982176a',\n [CONTRACT_NAMES.wstETH]: '0x7E99eE3C66636DE415D2d7C880938F2f40f94De4',\n [CONTRACT_NAMES.smDiscovery]: '0xd4523c0925b2246325dcc1d919f2b84c0bcacad9',\n },\n};\n\nexport const MODULE_CONFIG: PerModule<ModuleConfig> = {\n [MODULE_NAME.CSM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F',\n [CONTRACT_NAMES.accounting]:\n '0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da',\n [CONTRACT_NAMES.ejector]: '0xc72b58aa02E0e98cF8A4a0E9Dce75e763800802C',\n [CONTRACT_NAMES.exitPenalties]:\n '0x06cd61045f958A209a0f8D746e103eCc625f4193',\n [CONTRACT_NAMES.feeDistributor]:\n '0xD99CC66fEC647E68294C6477B40fC7E0F6F618D0',\n [CONTRACT_NAMES.feeOracle]:\n '0x4D4074628678Bd302921c20573EEa1ed38DdF7FB',\n [CONTRACT_NAMES.parametersRegistry]:\n '0x9D28ad303C90DF524BA960d7a2DAC56DcC31e428',\n [CONTRACT_NAMES.validatorStrikes]:\n '0xaa328816027F2D32B9F56d190BC9Fa4A5C07637f',\n [CONTRACT_NAMES.verifier]: '0xdC5FE1782B6943f318E05230d688713a560063DC',\n [CONTRACT_NAMES.hashConsensus]:\n '0x71093efF8D8599b5fA340D665Ad60fA7C80688e4',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xcF33a38111d0B1246A3F38a838fb41D626B454f0',\n [CONTRACT_NAMES.icsGate]: '0xB314D4A76C457c93150d308787939063F4Cc67E0',\n },\n moduleId: 3n,\n deploymentBlockNumber: BigInt('0x13f7326'),\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0x79CEf36D84743222f37765204Bec41E92a93E59d',\n [CONTRACT_NAMES.accounting]:\n '0xA54b90BA34C5f326BC1485054080994e38FB4C60',\n [CONTRACT_NAMES.ejector]: '0xCAe028378d69D54dc8bF809e6C44CF751F997b80',\n [CONTRACT_NAMES.exitPenalties]:\n '0xD259b31083Be841E5C85b2D481Cfc17C14276800',\n [CONTRACT_NAMES.feeDistributor]:\n '0xaCd9820b0A2229a82dc1A0770307ce5522FF3582',\n [CONTRACT_NAMES.feeOracle]:\n '0xe7314f561B2e72f9543F1004e741bab6Fc51028B',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xA4aD5236963f9Fe4229864712269D8d79B65C5Ad',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x8fBA385C3c334D251eE413e79d4D3890db98693c',\n [CONTRACT_NAMES.verifier]: '0xC96406b0eADdAC5708aFCa04DcCA67BAdC9642Fd',\n [CONTRACT_NAMES.hashConsensus]:\n '0x54f74a10e4397dDeF85C4854d9dfcA129D72C637',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xd7bD8D2A9888D1414c770B35ACF55890B15de26a',\n [CONTRACT_NAMES.icsGate]: '0x10a254E724fe2b7f305F76f3F116a3969c53845f',\n [CONTRACT_NAMES.idvtcGate]:\n '0x887F8512F9998045f4b5993e6eaa6BCfE5F02A94',\n },\n moduleId: 4n,\n deploymentBlockNumber: BigInt('0x1374'),\n },\n },\n\n [MODULE_NAME.CM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {},\n moduleId: 4n,\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.curatedModule]:\n '0x87EB69Ae51317405FD285efD2326a4a11f6173b9',\n [CONTRACT_NAMES.accounting]:\n '0x7f7356D29aCd915F1934220956c3305808ceB235',\n [CONTRACT_NAMES.ejector]: '0xfDbde2B3554B69C84e0f8d7daB68D390Ff0f4394',\n [CONTRACT_NAMES.exitPenalties]:\n '0xad79e1d3B380cEb1a0e188fBAB91f85A446E9E54',\n [CONTRACT_NAMES.feeDistributor]:\n '0x0ced6de191E2A15f7BBAf9E32307626C9f6BD0Cd',\n [CONTRACT_NAMES.feeOracle]:\n '0x5D2F27000C80f6f7A03015Fd49dB7FEba3fBfa83',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xefb8e4091A75C4828826bf64595F392f87A07b37',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x4c427Ec826F403339719C0FABfb3209e80939eA6',\n [CONTRACT_NAMES.verifier]: '0x209190Ebc2Be80367a15d05e626784Eb94d6A880',\n [CONTRACT_NAMES.hashConsensus]:\n '0x920883908A78c1554f682006a8aB32E62Be09F33',\n [CONTRACT_NAMES.metaRegistry]:\n '0x857289cCBFBc4C134Cc312022a104CD9b38d8AAE',\n [CONTRACT_NAMES.curatedGatePO]:\n '0xF1862d120831eBE31f7202378Ff3Ae63A5658ae3',\n [CONTRACT_NAMES.curatedGatePTO]:\n '0x410A309dF81B782190188CDB3d215729cc6bC1f3',\n [CONTRACT_NAMES.curatedGatePGO]:\n '0xa5A604b172787e017b1b118F02fE54fC1D696519',\n [CONTRACT_NAMES.curatedGateDO]:\n '0xE966874cDB6A4282ED75Cd10439e3799e5531a2D',\n [CONTRACT_NAMES.curatedGateEEO]:\n '0x5c063da03e3f21443716D75a2205EE16706e1153',\n [CONTRACT_NAMES.curatedGateIODC]:\n '0x1cD655Ac53CfE8269DE0DBfc0140B074623C4A6B',\n [CONTRACT_NAMES.curatedGateIODCP]:\n '0x28518be9894C20135F280a9539617783b08a04c7',\n },\n moduleId: 5n,\n deploymentBlockNumber: BigInt('0x28a0f0'),\n },\n },\n};\n"],"mappings":";;;;;AAiBO,MAAM,mBAA0D;EACpE,+BAAA,OAAO,UAAU;GACf,uBAAA,eAAe,gBACd;GACD,uBAAA,eAAe,0BACd;GACD,uBAAA,eAAe,kBACd;GACD,uBAAA,eAAe,mBACd;GACD,uBAAA,eAAe,QAAQ;GACvB,uBAAA,eAAe,SAAS;GACxB,uBAAA,eAAe,cAAc;EAChC;EACC,+BAAA,OAAO,QAAQ;GACb,uBAAA,eAAe,gBACd;GACD,uBAAA,eAAe,0BACd;GACD,uBAAA,eAAe,kBACd;GACD,uBAAA,eAAe,mBACd;GACD,uBAAA,eAAe,QAAQ;GACvB,uBAAA,eAAe,SAAS;GACxB,uBAAA,eAAe,cAAc;EAChC;CACF;AAEO,MAAM,gBAAyC;EACnD,oBAAA,YAAY,MAAM;GAChB,+BAAA,OAAO,UAAU;GAChB,mBAAmB;KAChB,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,aACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,YACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,mBACd;KACD,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,UAAU;IAC5B;GACA,UAAU;GACV,uBAAuB,OAAO,YAAW;GAC3C;GACC,+BAAA,OAAO,QAAQ;GACd,mBAAmB;KAChB,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,aACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,YACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,mBACd;KACD,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,YACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,SAAQ;GACxC;EACF;EAEC,oBAAA,YAAY,KAAK;GACf,+BAAA,OAAO,UAAU;GAChB,mBAAmB,EAAC;GACpB,UAAU;GACZ;GACC,+BAAA,OAAO,QAAQ;GACd,mBAAmB;KAChB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,aACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,YACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,mBACd;KACD,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,eACd;KACD,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,kBACd;KACD,uBAAA,eAAe,mBACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,WAAU;GAC1C;EACF;CACF"}
1
+ {"version":3,"file":"module-config.cjs","names":[],"sources":["../../../src/common/constants/module-config.ts"],"sourcesContent":["import { CHAINS } from '@lidofinance/lido-ethereum-sdk';\nimport { Address, zeroAddress } from 'viem';\n\nimport { CONTRACT_NAMES } from './contract-names';\nimport { MODULE_NAME, PerModule } from './module-name';\nimport { PerSupportedChain } from './supported-chains';\n\ntype ContractAddressMap = { [key in CONTRACT_NAMES]?: Address };\n\ntype ModuleChainConfig = {\n contractAddresses: ContractAddressMap;\n moduleId: bigint;\n deploymentBlockNumber?: bigint;\n};\n\nexport type ModuleConfig = PerSupportedChain<ModuleChainConfig>;\n\nexport const COMMON_ADDRESSES: PerSupportedChain<ContractAddressMap> = {\n [CHAINS.Mainnet]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xFdDf38947aFB03C621C71b06C9C70bce73f12999',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e',\n [CONTRACT_NAMES.withdrawalVault]:\n '0xB9D7934878B5FB9610B3fE8A5e441e8fad7E293f',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x388C818CA8B9251b393131C08a736A67ccB19297',\n [CONTRACT_NAMES.stETH]: '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',\n [CONTRACT_NAMES.wstETH]: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',\n [CONTRACT_NAMES.smDiscovery]: '0x32893b74064160c626652c2c21a849fdd0bddfd6',\n },\n [CHAINS.Hoodi]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xCc820558B39ee15C7C45B59390B503b83fb499A8',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x8664d394C2B3278F26A1B44B967aEf99707eeAB2',\n [CONTRACT_NAMES.withdrawalVault]:\n '0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x9b108015fe433F173696Af3Aa0CF7CDb3E104258',\n [CONTRACT_NAMES.stETH]: '0x3508A952176b3c15387C97BE809eaffB1982176a',\n [CONTRACT_NAMES.wstETH]: '0x7E99eE3C66636DE415D2d7C880938F2f40f94De4',\n [CONTRACT_NAMES.smDiscovery]: '0xd4523c0925b2246325dcc1d919f2b84c0bcacad9',\n },\n};\n\nexport const MODULE_CONFIG: PerModule<ModuleConfig> = {\n [MODULE_NAME.CSM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F',\n [CONTRACT_NAMES.accounting]:\n '0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da',\n [CONTRACT_NAMES.ejector]: '0xc72b58aa02E0e98cF8A4a0E9Dce75e763800802C',\n [CONTRACT_NAMES.exitPenalties]:\n '0x06cd61045f958A209a0f8D746e103eCc625f4193',\n [CONTRACT_NAMES.feeDistributor]:\n '0xD99CC66fEC647E68294C6477B40fC7E0F6F618D0',\n [CONTRACT_NAMES.feeOracle]:\n '0x4D4074628678Bd302921c20573EEa1ed38DdF7FB',\n [CONTRACT_NAMES.parametersRegistry]:\n '0x9D28ad303C90DF524BA960d7a2DAC56DcC31e428',\n [CONTRACT_NAMES.validatorStrikes]:\n '0xaa328816027F2D32B9F56d190BC9Fa4A5C07637f',\n [CONTRACT_NAMES.verifier]: '0xdC5FE1782B6943f318E05230d688713a560063DC',\n [CONTRACT_NAMES.hashConsensus]:\n '0x71093efF8D8599b5fA340D665Ad60fA7C80688e4',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xcF33a38111d0B1246A3F38a838fb41D626B454f0',\n [CONTRACT_NAMES.icsGate]: '0xB314D4A76C457c93150d308787939063F4Cc67E0',\n },\n moduleId: 3n,\n deploymentBlockNumber: BigInt('0x13f7326'),\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0x79CEf36D84743222f37765204Bec41E92a93E59d',\n [CONTRACT_NAMES.accounting]:\n '0xA54b90BA34C5f326BC1485054080994e38FB4C60',\n [CONTRACT_NAMES.ejector]: '0xCAe028378d69D54dc8bF809e6C44CF751F997b80',\n [CONTRACT_NAMES.exitPenalties]:\n '0xD259b31083Be841E5C85b2D481Cfc17C14276800',\n [CONTRACT_NAMES.feeDistributor]:\n '0xaCd9820b0A2229a82dc1A0770307ce5522FF3582',\n [CONTRACT_NAMES.feeOracle]:\n '0xe7314f561B2e72f9543F1004e741bab6Fc51028B',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xA4aD5236963f9Fe4229864712269D8d79B65C5Ad',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x8fBA385C3c334D251eE413e79d4D3890db98693c',\n [CONTRACT_NAMES.verifier]: '0xC96406b0eADdAC5708aFCa04DcCA67BAdC9642Fd',\n [CONTRACT_NAMES.hashConsensus]:\n '0x54f74a10e4397dDeF85C4854d9dfcA129D72C637',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xd7bD8D2A9888D1414c770B35ACF55890B15de26a',\n [CONTRACT_NAMES.icsGate]: '0x10a254E724fe2b7f305F76f3F116a3969c53845f',\n [CONTRACT_NAMES.idvtcGate]:\n '0x887F8512F9998045f4b5993e6eaa6BCfE5F02A94',\n },\n moduleId: 4n,\n deploymentBlockNumber: BigInt('0x1374'),\n },\n },\n\n [MODULE_NAME.CM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {\n [CONTRACT_NAMES.curatedModule]: zeroAddress,\n [CONTRACT_NAMES.accounting]: zeroAddress,\n [CONTRACT_NAMES.ejector]: zeroAddress,\n [CONTRACT_NAMES.exitPenalties]: zeroAddress,\n [CONTRACT_NAMES.feeDistributor]: zeroAddress,\n [CONTRACT_NAMES.feeOracle]: zeroAddress,\n [CONTRACT_NAMES.parametersRegistry]: zeroAddress,\n [CONTRACT_NAMES.validatorStrikes]: zeroAddress,\n [CONTRACT_NAMES.verifier]: zeroAddress,\n [CONTRACT_NAMES.hashConsensus]: zeroAddress,\n [CONTRACT_NAMES.metaRegistry]: zeroAddress,\n [CONTRACT_NAMES.curatedGatePO]: zeroAddress,\n [CONTRACT_NAMES.curatedGatePTO]: zeroAddress,\n [CONTRACT_NAMES.curatedGatePGO]: zeroAddress,\n [CONTRACT_NAMES.curatedGateDO]: zeroAddress,\n [CONTRACT_NAMES.curatedGateEEO]: zeroAddress,\n [CONTRACT_NAMES.curatedGateIODC]: zeroAddress,\n [CONTRACT_NAMES.curatedGateIODCP]: zeroAddress,\n },\n moduleId: 4n,\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.curatedModule]:\n '0x87EB69Ae51317405FD285efD2326a4a11f6173b9',\n [CONTRACT_NAMES.accounting]:\n '0x7f7356D29aCd915F1934220956c3305808ceB235',\n [CONTRACT_NAMES.ejector]: '0xfDbde2B3554B69C84e0f8d7daB68D390Ff0f4394',\n [CONTRACT_NAMES.exitPenalties]:\n '0xad79e1d3B380cEb1a0e188fBAB91f85A446E9E54',\n [CONTRACT_NAMES.feeDistributor]:\n '0x0ced6de191E2A15f7BBAf9E32307626C9f6BD0Cd',\n [CONTRACT_NAMES.feeOracle]:\n '0x5D2F27000C80f6f7A03015Fd49dB7FEba3fBfa83',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xefb8e4091A75C4828826bf64595F392f87A07b37',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x4c427Ec826F403339719C0FABfb3209e80939eA6',\n [CONTRACT_NAMES.verifier]: '0x209190Ebc2Be80367a15d05e626784Eb94d6A880',\n [CONTRACT_NAMES.hashConsensus]:\n '0x920883908A78c1554f682006a8aB32E62Be09F33',\n [CONTRACT_NAMES.metaRegistry]:\n '0x857289cCBFBc4C134Cc312022a104CD9b38d8AAE',\n [CONTRACT_NAMES.curatedGatePO]:\n '0xF1862d120831eBE31f7202378Ff3Ae63A5658ae3',\n [CONTRACT_NAMES.curatedGatePTO]:\n '0x410A309dF81B782190188CDB3d215729cc6bC1f3',\n [CONTRACT_NAMES.curatedGatePGO]:\n '0xa5A604b172787e017b1b118F02fE54fC1D696519',\n [CONTRACT_NAMES.curatedGateDO]:\n '0xE966874cDB6A4282ED75Cd10439e3799e5531a2D',\n [CONTRACT_NAMES.curatedGateEEO]:\n '0x5c063da03e3f21443716D75a2205EE16706e1153',\n [CONTRACT_NAMES.curatedGateIODC]:\n '0x1cD655Ac53CfE8269DE0DBfc0140B074623C4A6B',\n [CONTRACT_NAMES.curatedGateIODCP]:\n '0x28518be9894C20135F280a9539617783b08a04c7',\n },\n moduleId: 5n,\n deploymentBlockNumber: BigInt('0x28a0f0'),\n },\n },\n};\n"],"mappings":";;;;;;AAiBO,MAAM,mBAA0D;EACpE,+BAAA,OAAO,UAAU;GACf,uBAAA,eAAe,gBACd;GACD,uBAAA,eAAe,0BACd;GACD,uBAAA,eAAe,kBACd;GACD,uBAAA,eAAe,mBACd;GACD,uBAAA,eAAe,QAAQ;GACvB,uBAAA,eAAe,SAAS;GACxB,uBAAA,eAAe,cAAc;EAChC;EACC,+BAAA,OAAO,QAAQ;GACb,uBAAA,eAAe,gBACd;GACD,uBAAA,eAAe,0BACd;GACD,uBAAA,eAAe,kBACd;GACD,uBAAA,eAAe,mBACd;GACD,uBAAA,eAAe,QAAQ;GACvB,uBAAA,eAAe,SAAS;GACxB,uBAAA,eAAe,cAAc;EAChC;CACF;AAEO,MAAM,gBAAyC;EACnD,oBAAA,YAAY,MAAM;GAChB,+BAAA,OAAO,UAAU;GAChB,mBAAmB;KAChB,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,aACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,YACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,mBACd;KACD,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,UAAU;IAC5B;GACA,UAAU;GACV,uBAAuB,OAAO,YAAW;GAC3C;GACC,+BAAA,OAAO,QAAQ;GACd,mBAAmB;KAChB,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,aACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,YACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,mBACd;KACD,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,YACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,SAAQ;GACxC;EACF;EAEC,oBAAA,YAAY,KAAK;GACf,+BAAA,OAAO,UAAU;GAChB,mBAAmB;KAChB,uBAAA,eAAe,gBAAgB,KAAA;KAC/B,uBAAA,eAAe,aAAa,KAAA;KAC5B,uBAAA,eAAe,UAAU,KAAA;KACzB,uBAAA,eAAe,gBAAgB,KAAA;KAC/B,uBAAA,eAAe,iBAAiB,KAAA;KAChC,uBAAA,eAAe,YAAY,KAAA;KAC3B,uBAAA,eAAe,qBAAqB,KAAA;KACpC,uBAAA,eAAe,mBAAmB,KAAA;KAClC,uBAAA,eAAe,WAAW,KAAA;KAC1B,uBAAA,eAAe,gBAAgB,KAAA;KAC/B,uBAAA,eAAe,eAAe,KAAA;KAC9B,uBAAA,eAAe,gBAAgB,KAAA;KAC/B,uBAAA,eAAe,iBAAiB,KAAA;KAChC,uBAAA,eAAe,iBAAiB,KAAA;KAChC,uBAAA,eAAe,gBAAgB,KAAA;KAC/B,uBAAA,eAAe,iBAAiB,KAAA;KAChC,uBAAA,eAAe,kBAAkB,KAAA;KACjC,uBAAA,eAAe,mBAAmB,KAAA;IACrC;GACA,UAAU;GACZ;GACC,+BAAA,OAAO,QAAQ;GACd,mBAAmB;KAChB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,aACd;KACD,uBAAA,eAAe,UAAU;KACzB,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,YACd;KACD,uBAAA,eAAe,qBACd;KACD,uBAAA,eAAe,mBACd;KACD,uBAAA,eAAe,WAAW;KAC1B,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,eACd;KACD,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,gBACd;KACD,uBAAA,eAAe,iBACd;KACD,uBAAA,eAAe,kBACd;KACD,uBAAA,eAAe,mBACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,WAAU;GAC1C;EACF;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { CONTRACT_NAMES } from "./contract-names.mjs";
2
2
  import { MODULE_NAME } from "./module-name.mjs";
3
3
  import { CHAINS } from "@lidofinance/lido-ethereum-sdk";
4
+ import { zeroAddress } from "viem";
4
5
  //#region src/common/constants/module-config.ts
5
6
  const COMMON_ADDRESSES = {
6
7
  [CHAINS.Mainnet]: {
@@ -64,7 +65,26 @@ const MODULE_CONFIG = {
64
65
  },
65
66
  [MODULE_NAME.CM]: {
66
67
  [CHAINS.Mainnet]: {
67
- contractAddresses: {},
68
+ contractAddresses: {
69
+ [CONTRACT_NAMES.curatedModule]: zeroAddress,
70
+ [CONTRACT_NAMES.accounting]: zeroAddress,
71
+ [CONTRACT_NAMES.ejector]: zeroAddress,
72
+ [CONTRACT_NAMES.exitPenalties]: zeroAddress,
73
+ [CONTRACT_NAMES.feeDistributor]: zeroAddress,
74
+ [CONTRACT_NAMES.feeOracle]: zeroAddress,
75
+ [CONTRACT_NAMES.parametersRegistry]: zeroAddress,
76
+ [CONTRACT_NAMES.validatorStrikes]: zeroAddress,
77
+ [CONTRACT_NAMES.verifier]: zeroAddress,
78
+ [CONTRACT_NAMES.hashConsensus]: zeroAddress,
79
+ [CONTRACT_NAMES.metaRegistry]: zeroAddress,
80
+ [CONTRACT_NAMES.curatedGatePO]: zeroAddress,
81
+ [CONTRACT_NAMES.curatedGatePTO]: zeroAddress,
82
+ [CONTRACT_NAMES.curatedGatePGO]: zeroAddress,
83
+ [CONTRACT_NAMES.curatedGateDO]: zeroAddress,
84
+ [CONTRACT_NAMES.curatedGateEEO]: zeroAddress,
85
+ [CONTRACT_NAMES.curatedGateIODC]: zeroAddress,
86
+ [CONTRACT_NAMES.curatedGateIODCP]: zeroAddress
87
+ },
68
88
  moduleId: 4n
69
89
  },
70
90
  [CHAINS.Hoodi]: {
@@ -1 +1 @@
1
- {"version":3,"file":"module-config.mjs","names":[],"sources":["../../../src/common/constants/module-config.ts"],"sourcesContent":["import { CHAINS } from '@lidofinance/lido-ethereum-sdk';\nimport { Address } from 'viem';\n\nimport { CONTRACT_NAMES } from './contract-names';\nimport { MODULE_NAME, PerModule } from './module-name';\nimport { PerSupportedChain } from './supported-chains';\n\ntype ContractAddressMap = { [key in CONTRACT_NAMES]?: Address };\n\ntype ModuleChainConfig = {\n contractAddresses: ContractAddressMap;\n moduleId: bigint;\n deploymentBlockNumber?: bigint;\n};\n\nexport type ModuleConfig = PerSupportedChain<ModuleChainConfig>;\n\nexport const COMMON_ADDRESSES: PerSupportedChain<ContractAddressMap> = {\n [CHAINS.Mainnet]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xFdDf38947aFB03C621C71b06C9C70bce73f12999',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e',\n [CONTRACT_NAMES.withdrawalVault]:\n '0xB9D7934878B5FB9610B3fE8A5e441e8fad7E293f',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x388C818CA8B9251b393131C08a736A67ccB19297',\n [CONTRACT_NAMES.stETH]: '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',\n [CONTRACT_NAMES.wstETH]: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',\n [CONTRACT_NAMES.smDiscovery]: '0x32893b74064160c626652c2c21a849fdd0bddfd6',\n },\n [CHAINS.Hoodi]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xCc820558B39ee15C7C45B59390B503b83fb499A8',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x8664d394C2B3278F26A1B44B967aEf99707eeAB2',\n [CONTRACT_NAMES.withdrawalVault]:\n '0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x9b108015fe433F173696Af3Aa0CF7CDb3E104258',\n [CONTRACT_NAMES.stETH]: '0x3508A952176b3c15387C97BE809eaffB1982176a',\n [CONTRACT_NAMES.wstETH]: '0x7E99eE3C66636DE415D2d7C880938F2f40f94De4',\n [CONTRACT_NAMES.smDiscovery]: '0xd4523c0925b2246325dcc1d919f2b84c0bcacad9',\n },\n};\n\nexport const MODULE_CONFIG: PerModule<ModuleConfig> = {\n [MODULE_NAME.CSM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F',\n [CONTRACT_NAMES.accounting]:\n '0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da',\n [CONTRACT_NAMES.ejector]: '0xc72b58aa02E0e98cF8A4a0E9Dce75e763800802C',\n [CONTRACT_NAMES.exitPenalties]:\n '0x06cd61045f958A209a0f8D746e103eCc625f4193',\n [CONTRACT_NAMES.feeDistributor]:\n '0xD99CC66fEC647E68294C6477B40fC7E0F6F618D0',\n [CONTRACT_NAMES.feeOracle]:\n '0x4D4074628678Bd302921c20573EEa1ed38DdF7FB',\n [CONTRACT_NAMES.parametersRegistry]:\n '0x9D28ad303C90DF524BA960d7a2DAC56DcC31e428',\n [CONTRACT_NAMES.validatorStrikes]:\n '0xaa328816027F2D32B9F56d190BC9Fa4A5C07637f',\n [CONTRACT_NAMES.verifier]: '0xdC5FE1782B6943f318E05230d688713a560063DC',\n [CONTRACT_NAMES.hashConsensus]:\n '0x71093efF8D8599b5fA340D665Ad60fA7C80688e4',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xcF33a38111d0B1246A3F38a838fb41D626B454f0',\n [CONTRACT_NAMES.icsGate]: '0xB314D4A76C457c93150d308787939063F4Cc67E0',\n },\n moduleId: 3n,\n deploymentBlockNumber: BigInt('0x13f7326'),\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0x79CEf36D84743222f37765204Bec41E92a93E59d',\n [CONTRACT_NAMES.accounting]:\n '0xA54b90BA34C5f326BC1485054080994e38FB4C60',\n [CONTRACT_NAMES.ejector]: '0xCAe028378d69D54dc8bF809e6C44CF751F997b80',\n [CONTRACT_NAMES.exitPenalties]:\n '0xD259b31083Be841E5C85b2D481Cfc17C14276800',\n [CONTRACT_NAMES.feeDistributor]:\n '0xaCd9820b0A2229a82dc1A0770307ce5522FF3582',\n [CONTRACT_NAMES.feeOracle]:\n '0xe7314f561B2e72f9543F1004e741bab6Fc51028B',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xA4aD5236963f9Fe4229864712269D8d79B65C5Ad',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x8fBA385C3c334D251eE413e79d4D3890db98693c',\n [CONTRACT_NAMES.verifier]: '0xC96406b0eADdAC5708aFCa04DcCA67BAdC9642Fd',\n [CONTRACT_NAMES.hashConsensus]:\n '0x54f74a10e4397dDeF85C4854d9dfcA129D72C637',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xd7bD8D2A9888D1414c770B35ACF55890B15de26a',\n [CONTRACT_NAMES.icsGate]: '0x10a254E724fe2b7f305F76f3F116a3969c53845f',\n [CONTRACT_NAMES.idvtcGate]:\n '0x887F8512F9998045f4b5993e6eaa6BCfE5F02A94',\n },\n moduleId: 4n,\n deploymentBlockNumber: BigInt('0x1374'),\n },\n },\n\n [MODULE_NAME.CM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {},\n moduleId: 4n,\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.curatedModule]:\n '0x87EB69Ae51317405FD285efD2326a4a11f6173b9',\n [CONTRACT_NAMES.accounting]:\n '0x7f7356D29aCd915F1934220956c3305808ceB235',\n [CONTRACT_NAMES.ejector]: '0xfDbde2B3554B69C84e0f8d7daB68D390Ff0f4394',\n [CONTRACT_NAMES.exitPenalties]:\n '0xad79e1d3B380cEb1a0e188fBAB91f85A446E9E54',\n [CONTRACT_NAMES.feeDistributor]:\n '0x0ced6de191E2A15f7BBAf9E32307626C9f6BD0Cd',\n [CONTRACT_NAMES.feeOracle]:\n '0x5D2F27000C80f6f7A03015Fd49dB7FEba3fBfa83',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xefb8e4091A75C4828826bf64595F392f87A07b37',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x4c427Ec826F403339719C0FABfb3209e80939eA6',\n [CONTRACT_NAMES.verifier]: '0x209190Ebc2Be80367a15d05e626784Eb94d6A880',\n [CONTRACT_NAMES.hashConsensus]:\n '0x920883908A78c1554f682006a8aB32E62Be09F33',\n [CONTRACT_NAMES.metaRegistry]:\n '0x857289cCBFBc4C134Cc312022a104CD9b38d8AAE',\n [CONTRACT_NAMES.curatedGatePO]:\n '0xF1862d120831eBE31f7202378Ff3Ae63A5658ae3',\n [CONTRACT_NAMES.curatedGatePTO]:\n '0x410A309dF81B782190188CDB3d215729cc6bC1f3',\n [CONTRACT_NAMES.curatedGatePGO]:\n '0xa5A604b172787e017b1b118F02fE54fC1D696519',\n [CONTRACT_NAMES.curatedGateDO]:\n '0xE966874cDB6A4282ED75Cd10439e3799e5531a2D',\n [CONTRACT_NAMES.curatedGateEEO]:\n '0x5c063da03e3f21443716D75a2205EE16706e1153',\n [CONTRACT_NAMES.curatedGateIODC]:\n '0x1cD655Ac53CfE8269DE0DBfc0140B074623C4A6B',\n [CONTRACT_NAMES.curatedGateIODCP]:\n '0x28518be9894C20135F280a9539617783b08a04c7',\n },\n moduleId: 5n,\n deploymentBlockNumber: BigInt('0x28a0f0'),\n },\n },\n};\n"],"mappings":";;;;AAiBO,MAAM,mBAA0D;EACpE,OAAO,UAAU;GACf,eAAe,gBACd;GACD,eAAe,0BACd;GACD,eAAe,kBACd;GACD,eAAe,mBACd;GACD,eAAe,QAAQ;GACvB,eAAe,SAAS;GACxB,eAAe,cAAc;EAChC;EACC,OAAO,QAAQ;GACb,eAAe,gBACd;GACD,eAAe,0BACd;GACD,eAAe,kBACd;GACD,eAAe,mBACd;GACD,eAAe,QAAQ;GACvB,eAAe,SAAS;GACxB,eAAe,cAAc;EAChC;CACF;AAEO,MAAM,gBAAyC;EACnD,YAAY,MAAM;GAChB,OAAO,UAAU;GAChB,mBAAmB;KAChB,eAAe,WAAW;KAC1B,eAAe,aACd;KACD,eAAe,UAAU;KACzB,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,YACd;KACD,eAAe,qBACd;KACD,eAAe,mBACd;KACD,eAAe,WAAW;KAC1B,eAAe,gBACd;KACD,eAAe,qBACd;KACD,eAAe,UAAU;IAC5B;GACA,UAAU;GACV,uBAAuB,OAAO,YAAW;GAC3C;GACC,OAAO,QAAQ;GACd,mBAAmB;KAChB,eAAe,WAAW;KAC1B,eAAe,aACd;KACD,eAAe,UAAU;KACzB,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,YACd;KACD,eAAe,qBACd;KACD,eAAe,mBACd;KACD,eAAe,WAAW;KAC1B,eAAe,gBACd;KACD,eAAe,qBACd;KACD,eAAe,UAAU;KACzB,eAAe,YACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,SAAQ;GACxC;EACF;EAEC,YAAY,KAAK;GACf,OAAO,UAAU;GAChB,mBAAmB,EAAC;GACpB,UAAU;GACZ;GACC,OAAO,QAAQ;GACd,mBAAmB;KAChB,eAAe,gBACd;KACD,eAAe,aACd;KACD,eAAe,UAAU;KACzB,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,YACd;KACD,eAAe,qBACd;KACD,eAAe,mBACd;KACD,eAAe,WAAW;KAC1B,eAAe,gBACd;KACD,eAAe,eACd;KACD,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,iBACd;KACD,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,kBACd;KACD,eAAe,mBACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,WAAU;GAC1C;EACF;CACF"}
1
+ {"version":3,"file":"module-config.mjs","names":[],"sources":["../../../src/common/constants/module-config.ts"],"sourcesContent":["import { CHAINS } from '@lidofinance/lido-ethereum-sdk';\nimport { Address, zeroAddress } from 'viem';\n\nimport { CONTRACT_NAMES } from './contract-names';\nimport { MODULE_NAME, PerModule } from './module-name';\nimport { PerSupportedChain } from './supported-chains';\n\ntype ContractAddressMap = { [key in CONTRACT_NAMES]?: Address };\n\ntype ModuleChainConfig = {\n contractAddresses: ContractAddressMap;\n moduleId: bigint;\n deploymentBlockNumber?: bigint;\n};\n\nexport type ModuleConfig = PerSupportedChain<ModuleChainConfig>;\n\nexport const COMMON_ADDRESSES: PerSupportedChain<ContractAddressMap> = {\n [CHAINS.Mainnet]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xFdDf38947aFB03C621C71b06C9C70bce73f12999',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e',\n [CONTRACT_NAMES.withdrawalVault]:\n '0xB9D7934878B5FB9610B3fE8A5e441e8fad7E293f',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x388C818CA8B9251b393131C08a736A67ccB19297',\n [CONTRACT_NAMES.stETH]: '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84',\n [CONTRACT_NAMES.wstETH]: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',\n [CONTRACT_NAMES.smDiscovery]: '0x32893b74064160c626652c2c21a849fdd0bddfd6',\n },\n [CHAINS.Hoodi]: {\n [CONTRACT_NAMES.stakingRouter]:\n '0xCc820558B39ee15C7C45B59390B503b83fb499A8',\n [CONTRACT_NAMES.validatorsExitBusOracle]:\n '0x8664d394C2B3278F26A1B44B967aEf99707eeAB2',\n [CONTRACT_NAMES.withdrawalVault]:\n '0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2',\n [CONTRACT_NAMES.lidoRewardsVault]:\n '0x9b108015fe433F173696Af3Aa0CF7CDb3E104258',\n [CONTRACT_NAMES.stETH]: '0x3508A952176b3c15387C97BE809eaffB1982176a',\n [CONTRACT_NAMES.wstETH]: '0x7E99eE3C66636DE415D2d7C880938F2f40f94De4',\n [CONTRACT_NAMES.smDiscovery]: '0xd4523c0925b2246325dcc1d919f2b84c0bcacad9',\n },\n};\n\nexport const MODULE_CONFIG: PerModule<ModuleConfig> = {\n [MODULE_NAME.CSM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F',\n [CONTRACT_NAMES.accounting]:\n '0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da',\n [CONTRACT_NAMES.ejector]: '0xc72b58aa02E0e98cF8A4a0E9Dce75e763800802C',\n [CONTRACT_NAMES.exitPenalties]:\n '0x06cd61045f958A209a0f8D746e103eCc625f4193',\n [CONTRACT_NAMES.feeDistributor]:\n '0xD99CC66fEC647E68294C6477B40fC7E0F6F618D0',\n [CONTRACT_NAMES.feeOracle]:\n '0x4D4074628678Bd302921c20573EEa1ed38DdF7FB',\n [CONTRACT_NAMES.parametersRegistry]:\n '0x9D28ad303C90DF524BA960d7a2DAC56DcC31e428',\n [CONTRACT_NAMES.validatorStrikes]:\n '0xaa328816027F2D32B9F56d190BC9Fa4A5C07637f',\n [CONTRACT_NAMES.verifier]: '0xdC5FE1782B6943f318E05230d688713a560063DC',\n [CONTRACT_NAMES.hashConsensus]:\n '0x71093efF8D8599b5fA340D665Ad60fA7C80688e4',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xcF33a38111d0B1246A3F38a838fb41D626B454f0',\n [CONTRACT_NAMES.icsGate]: '0xB314D4A76C457c93150d308787939063F4Cc67E0',\n },\n moduleId: 3n,\n deploymentBlockNumber: BigInt('0x13f7326'),\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.csModule]: '0x79CEf36D84743222f37765204Bec41E92a93E59d',\n [CONTRACT_NAMES.accounting]:\n '0xA54b90BA34C5f326BC1485054080994e38FB4C60',\n [CONTRACT_NAMES.ejector]: '0xCAe028378d69D54dc8bF809e6C44CF751F997b80',\n [CONTRACT_NAMES.exitPenalties]:\n '0xD259b31083Be841E5C85b2D481Cfc17C14276800',\n [CONTRACT_NAMES.feeDistributor]:\n '0xaCd9820b0A2229a82dc1A0770307ce5522FF3582',\n [CONTRACT_NAMES.feeOracle]:\n '0xe7314f561B2e72f9543F1004e741bab6Fc51028B',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xA4aD5236963f9Fe4229864712269D8d79B65C5Ad',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x8fBA385C3c334D251eE413e79d4D3890db98693c',\n [CONTRACT_NAMES.verifier]: '0xC96406b0eADdAC5708aFCa04DcCA67BAdC9642Fd',\n [CONTRACT_NAMES.hashConsensus]:\n '0x54f74a10e4397dDeF85C4854d9dfcA129D72C637',\n [CONTRACT_NAMES.permissionlessGate]:\n '0xd7bD8D2A9888D1414c770B35ACF55890B15de26a',\n [CONTRACT_NAMES.icsGate]: '0x10a254E724fe2b7f305F76f3F116a3969c53845f',\n [CONTRACT_NAMES.idvtcGate]:\n '0x887F8512F9998045f4b5993e6eaa6BCfE5F02A94',\n },\n moduleId: 4n,\n deploymentBlockNumber: BigInt('0x1374'),\n },\n },\n\n [MODULE_NAME.CM]: {\n [CHAINS.Mainnet]: {\n contractAddresses: {\n [CONTRACT_NAMES.curatedModule]: zeroAddress,\n [CONTRACT_NAMES.accounting]: zeroAddress,\n [CONTRACT_NAMES.ejector]: zeroAddress,\n [CONTRACT_NAMES.exitPenalties]: zeroAddress,\n [CONTRACT_NAMES.feeDistributor]: zeroAddress,\n [CONTRACT_NAMES.feeOracle]: zeroAddress,\n [CONTRACT_NAMES.parametersRegistry]: zeroAddress,\n [CONTRACT_NAMES.validatorStrikes]: zeroAddress,\n [CONTRACT_NAMES.verifier]: zeroAddress,\n [CONTRACT_NAMES.hashConsensus]: zeroAddress,\n [CONTRACT_NAMES.metaRegistry]: zeroAddress,\n [CONTRACT_NAMES.curatedGatePO]: zeroAddress,\n [CONTRACT_NAMES.curatedGatePTO]: zeroAddress,\n [CONTRACT_NAMES.curatedGatePGO]: zeroAddress,\n [CONTRACT_NAMES.curatedGateDO]: zeroAddress,\n [CONTRACT_NAMES.curatedGateEEO]: zeroAddress,\n [CONTRACT_NAMES.curatedGateIODC]: zeroAddress,\n [CONTRACT_NAMES.curatedGateIODCP]: zeroAddress,\n },\n moduleId: 4n,\n },\n [CHAINS.Hoodi]: {\n contractAddresses: {\n [CONTRACT_NAMES.curatedModule]:\n '0x87EB69Ae51317405FD285efD2326a4a11f6173b9',\n [CONTRACT_NAMES.accounting]:\n '0x7f7356D29aCd915F1934220956c3305808ceB235',\n [CONTRACT_NAMES.ejector]: '0xfDbde2B3554B69C84e0f8d7daB68D390Ff0f4394',\n [CONTRACT_NAMES.exitPenalties]:\n '0xad79e1d3B380cEb1a0e188fBAB91f85A446E9E54',\n [CONTRACT_NAMES.feeDistributor]:\n '0x0ced6de191E2A15f7BBAf9E32307626C9f6BD0Cd',\n [CONTRACT_NAMES.feeOracle]:\n '0x5D2F27000C80f6f7A03015Fd49dB7FEba3fBfa83',\n [CONTRACT_NAMES.parametersRegistry]:\n '0xefb8e4091A75C4828826bf64595F392f87A07b37',\n [CONTRACT_NAMES.validatorStrikes]:\n '0x4c427Ec826F403339719C0FABfb3209e80939eA6',\n [CONTRACT_NAMES.verifier]: '0x209190Ebc2Be80367a15d05e626784Eb94d6A880',\n [CONTRACT_NAMES.hashConsensus]:\n '0x920883908A78c1554f682006a8aB32E62Be09F33',\n [CONTRACT_NAMES.metaRegistry]:\n '0x857289cCBFBc4C134Cc312022a104CD9b38d8AAE',\n [CONTRACT_NAMES.curatedGatePO]:\n '0xF1862d120831eBE31f7202378Ff3Ae63A5658ae3',\n [CONTRACT_NAMES.curatedGatePTO]:\n '0x410A309dF81B782190188CDB3d215729cc6bC1f3',\n [CONTRACT_NAMES.curatedGatePGO]:\n '0xa5A604b172787e017b1b118F02fE54fC1D696519',\n [CONTRACT_NAMES.curatedGateDO]:\n '0xE966874cDB6A4282ED75Cd10439e3799e5531a2D',\n [CONTRACT_NAMES.curatedGateEEO]:\n '0x5c063da03e3f21443716D75a2205EE16706e1153',\n [CONTRACT_NAMES.curatedGateIODC]:\n '0x1cD655Ac53CfE8269DE0DBfc0140B074623C4A6B',\n [CONTRACT_NAMES.curatedGateIODCP]:\n '0x28518be9894C20135F280a9539617783b08a04c7',\n },\n moduleId: 5n,\n deploymentBlockNumber: BigInt('0x28a0f0'),\n },\n },\n};\n"],"mappings":";;;;;AAiBO,MAAM,mBAA0D;EACpE,OAAO,UAAU;GACf,eAAe,gBACd;GACD,eAAe,0BACd;GACD,eAAe,kBACd;GACD,eAAe,mBACd;GACD,eAAe,QAAQ;GACvB,eAAe,SAAS;GACxB,eAAe,cAAc;EAChC;EACC,OAAO,QAAQ;GACb,eAAe,gBACd;GACD,eAAe,0BACd;GACD,eAAe,kBACd;GACD,eAAe,mBACd;GACD,eAAe,QAAQ;GACvB,eAAe,SAAS;GACxB,eAAe,cAAc;EAChC;CACF;AAEO,MAAM,gBAAyC;EACnD,YAAY,MAAM;GAChB,OAAO,UAAU;GAChB,mBAAmB;KAChB,eAAe,WAAW;KAC1B,eAAe,aACd;KACD,eAAe,UAAU;KACzB,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,YACd;KACD,eAAe,qBACd;KACD,eAAe,mBACd;KACD,eAAe,WAAW;KAC1B,eAAe,gBACd;KACD,eAAe,qBACd;KACD,eAAe,UAAU;IAC5B;GACA,UAAU;GACV,uBAAuB,OAAO,YAAW;GAC3C;GACC,OAAO,QAAQ;GACd,mBAAmB;KAChB,eAAe,WAAW;KAC1B,eAAe,aACd;KACD,eAAe,UAAU;KACzB,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,YACd;KACD,eAAe,qBACd;KACD,eAAe,mBACd;KACD,eAAe,WAAW;KAC1B,eAAe,gBACd;KACD,eAAe,qBACd;KACD,eAAe,UAAU;KACzB,eAAe,YACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,SAAQ;GACxC;EACF;EAEC,YAAY,KAAK;GACf,OAAO,UAAU;GAChB,mBAAmB;KAChB,eAAe,gBAAgB;KAC/B,eAAe,aAAa;KAC5B,eAAe,UAAU;KACzB,eAAe,gBAAgB;KAC/B,eAAe,iBAAiB;KAChC,eAAe,YAAY;KAC3B,eAAe,qBAAqB;KACpC,eAAe,mBAAmB;KAClC,eAAe,WAAW;KAC1B,eAAe,gBAAgB;KAC/B,eAAe,eAAe;KAC9B,eAAe,gBAAgB;KAC/B,eAAe,iBAAiB;KAChC,eAAe,iBAAiB;KAChC,eAAe,gBAAgB;KAC/B,eAAe,iBAAiB;KAChC,eAAe,kBAAkB;KACjC,eAAe,mBAAmB;IACrC;GACA,UAAU;GACZ;GACC,OAAO,QAAQ;GACd,mBAAmB;KAChB,eAAe,gBACd;KACD,eAAe,aACd;KACD,eAAe,UAAU;KACzB,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,YACd;KACD,eAAe,qBACd;KACD,eAAe,mBACd;KACD,eAAe,WAAW;KAC1B,eAAe,gBACd;KACD,eAAe,eACd;KACD,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,iBACd;KACD,eAAe,gBACd;KACD,eAAe,iBACd;KACD,eAAe,kBACd;KACD,eAAe,mBACd;IACJ;GACA,UAAU;GACV,uBAAuB,OAAO,WAAU;GAC1C;EACF;CACF"}
@@ -42,6 +42,15 @@ var SDKError = class SDKError extends Error {
42
42
  this.code = code ?? require_sdk_error_code.ERROR_CODE.UNKNOWN_ERROR;
43
43
  this.decodedRevert = decodedRevert;
44
44
  }
45
+ /**
46
+ * @deprecated Use `message` (the idiomatic `Error` field) instead — this is
47
+ * a thin alias kept for pre-refactor consumers and will be removed in the
48
+ * next major. For structured access to a decoded contract revert, read
49
+ * `decodedRevert` ({ name, args }).
50
+ */
51
+ get errorMessage() {
52
+ return this.message || void 0;
53
+ }
45
54
  };
46
55
  function invariant(condition, message, code) {
47
56
  if (condition) return;
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error.cjs","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"sourcesContent":["import { classifyError } from './classify-error';\nimport { type DecodedRevert, decodeRevertData } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\nexport { ERROR_CODE } from './sdk-error-code';\n\nexport type SDKErrorProps = {\n code?: ERROR_CODE;\n error?: unknown;\n message?: string;\n decodedRevert?: DecodedRevert;\n};\n\nconst messageOf = (error: unknown): string =>\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n ? error.message\n : 'something went wrong';\n\n/**\n * Canonical `Name(arg1, arg2, ...)` label for a decoded contract revert.\n * Falls back to bare `Name` when the error has no args. Exposed so consumers\n * with a raw `decodedRevert` (e.g. from logs) can render the same string the\n * SDK uses as `Error.message`.\n */\nexport const formatDecodedRevert = (decoded: DecodedRevert): string => {\n if (!decoded.args.length) return decoded.name;\n const args = (decoded.args as readonly unknown[]).map(String).join(', ');\n return `${decoded.name}(${args})`;\n};\n\n/**\n * Typed wrapper around every error thrown by the SDK. Invariants:\n * - `code` is always set (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n * - `cause` preserves the original upstream error (typically a viem\n * `BaseError`) so consumers can walk the chain.\n * - `decodedRevert` is present iff the underlying error carried a custom\n * error selector decodable against the SDK's known ABIs.\n *\n * Branch on `code` for wallet / network conditions; narrow on\n * `decodedRevert.name` for typed contract revert args.\n *\n * @example\n * try { await sdk.bond.claimBondStETH(...) } catch (e) {\n * if (!(e instanceof SDKError)) throw e;\n * if (e.code === ERROR_CODE.USER_REJECTED) return;\n * if (e.decodedRevert?.name === 'AccessControlUnauthorizedAccount') {\n * const [account, role] = e.decodedRevert.args; // typed tuple\n * showRoleErrorToast(account, role);\n * }\n * }\n */\nexport class SDKError extends Error {\n /**\n * Wrap any thrown value into an `SDKError`. Pass `code` as a context hint\n * (e.g. `TRANSACTION_ERROR`); it is only used when {@link classifyError}\n * yields nothing. The classifier always wins because viem class detection\n * is strictly more specific than a context code.\n */\n public static from(error: unknown, code?: ERROR_CODE): SDKError {\n if (error instanceof SDKError) return error;\n\n const decodedRevert = decodeRevertData(error);\n const message = decodedRevert\n ? formatDecodedRevert(decodedRevert)\n : messageOf(error);\n\n const finalCode =\n classifyError(error, decodedRevert) ?? code ?? ERROR_CODE.UNKNOWN_ERROR;\n\n return new SDKError({ code: finalCode, error, message, decodedRevert });\n }\n\n /** Classified error category. Always set. See {@link ERROR_CODE}. */\n public code: ERROR_CODE;\n\n /**\n * Decoded contract revert, when the upstream error carried a selector\n * decodable against the SDK's combined ABI. Discriminated union: narrow on\n * `name` to get a typed `args` tuple.\n */\n public decodedRevert: DecodedRevert | undefined;\n\n /**\n * Original upstream error (typically a viem `BaseError`). Inherited from\n * `Error.cause`. Walk via `e.cause` to inspect the full chain.\n */\n declare public cause?: unknown;\n\n constructor({ code, error, message, decodedRevert }: SDKErrorProps) {\n super(message);\n this.name = 'SDKError';\n // Preserve full upstream error as `cause` — consumers walk it via the\n // standard Error chain. Previous code assigned `error.cause` and silently\n // dropped the top viem BaseError.\n if (error !== undefined) {\n this.cause = error;\n }\n if (error instanceof Error && error.stack) {\n this.stack = error.stack;\n }\n this.code = code ?? ERROR_CODE.UNKNOWN_ERROR;\n this.decodedRevert = decodedRevert;\n }\n}\n\n/**\n * Assert `condition` is truthy, otherwise throw an `SDKError` with the given\n * `message` and optional `code` (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n */\n// eslint-disable-next-line func-style\nexport function invariant(\n condition: any,\n message: string,\n code?: ERROR_CODE,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ message, code });\n}\n\n/**\n * Shortcut for argument validation: throws with\n * {@link ERROR_CODE.INVALID_ARGUMENT}.\n */\n// eslint-disable-next-line func-style\nexport function invariantArgument(\n condition: any,\n message: string,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ code: ERROR_CODE.INVALID_ARGUMENT, message });\n}\n\n/**\n * Await `func`; on rejection, rethrow as `SDKError.from(error, code)`.\n * `code` is a context fallback — the classifier still wins when it matches.\n */\nexport const withSDKError = async <TResult>(\n func: Promise<TResult>,\n code?: ERROR_CODE,\n): Promise<TResult> => {\n try {\n return await func;\n } catch (error) {\n throw SDKError.from(error, code);\n }\n};\n"],"mappings":";;;;AAaA,MAAM,aAAa,UACjB,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY,WACrB,MAAM,UACN;AAQC,MAAM,uBAAuB,YAAmC;AACrE,KAAI,CAAC,QAAQ,KAAK,OAAQ,QAAO,QAAQ;CACzC,MAAM,OAAQ,QAAQ,KAA4B,IAAI,OAAM,CAAE,KAAK,KAAI;AACvE,QAAO,GAAG,QAAQ,KAAI,GAAI,KAAI;;AAwBzB,IAAM,WAAN,MAAM,iBAAiB,MAAM;;;;;;;CAOlC,OAAc,KAAK,OAAgB,MAA6B;AAC9D,MAAI,iBAAiB,SAAU,QAAO;EAEtC,MAAM,gBAAgB,2BAAA,iBAAiB,MAAK;EAC5C,MAAM,UAAU,gBACZ,oBAAoB,cAAa,GACjC,UAAU,MAAK;AAKnB,SAAO,IAAI,SAAS;GAAE,MAFpB,uBAAA,cAAc,OAAO,cAAa,IAAK,QAAQ,uBAAA,WAAW;GAErB;GAAO;GAAS;GAAe,CAAA;;;CAIjE;;;;;;CAOA;CAQP,YAAY,EAAE,MAAM,OAAO,SAAS,iBAAgC;AAClE,QAAM,QAAO;AACb,OAAK,OAAO;AAIZ,MAAI,UAAU,KAAA,EACZ,MAAK,QAAQ;AAEf,MAAI,iBAAiB,SAAS,MAAM,MAClC,MAAK,QAAQ,MAAM;AAErB,OAAK,OAAO,QAAQ,uBAAA,WAAW;AAC/B,OAAK,gBAAgB;;;AASlB,SAAS,UACd,WACA,SACA,MACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE;EAAS;EAAM,CAAA;;AAQ/B,SAAS,kBACd,WACA,SACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE,MAAM,uBAAA,WAAW;EAAkB;EAAS,CAAA;;AAO5D,MAAM,eAAe,OAC1B,MACA,SACqB;AACrB,KAAI;AACF,SAAO,MAAM;UACN,OAAO;AACd,QAAM,SAAS,KAAK,OAAO,KAAI"}
1
+ {"version":3,"file":"sdk-error.cjs","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"sourcesContent":["import { classifyError } from './classify-error';\nimport { type DecodedRevert, decodeRevertData } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\nexport { ERROR_CODE } from './sdk-error-code';\n\nexport type SDKErrorProps = {\n code?: ERROR_CODE;\n error?: unknown;\n message?: string;\n decodedRevert?: DecodedRevert;\n};\n\nconst messageOf = (error: unknown): string =>\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n ? error.message\n : 'something went wrong';\n\n/**\n * Canonical `Name(arg1, arg2, ...)` label for a decoded contract revert.\n * Falls back to bare `Name` when the error has no args. Exposed so consumers\n * with a raw `decodedRevert` (e.g. from logs) can render the same string the\n * SDK uses as `Error.message`.\n */\nexport const formatDecodedRevert = (decoded: DecodedRevert): string => {\n if (!decoded.args.length) return decoded.name;\n const args = (decoded.args as readonly unknown[]).map(String).join(', ');\n return `${decoded.name}(${args})`;\n};\n\n/**\n * Typed wrapper around every error thrown by the SDK. Invariants:\n * - `code` is always set (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n * - `cause` preserves the original upstream error (typically a viem\n * `BaseError`) so consumers can walk the chain.\n * - `decodedRevert` is present iff the underlying error carried a custom\n * error selector decodable against the SDK's known ABIs.\n *\n * Branch on `code` for wallet / network conditions; narrow on\n * `decodedRevert.name` for typed contract revert args.\n *\n * @example\n * try { await sdk.bond.claimBondStETH(...) } catch (e) {\n * if (!(e instanceof SDKError)) throw e;\n * if (e.code === ERROR_CODE.USER_REJECTED) return;\n * if (e.decodedRevert?.name === 'AccessControlUnauthorizedAccount') {\n * const [account, role] = e.decodedRevert.args; // typed tuple\n * showRoleErrorToast(account, role);\n * }\n * }\n */\nexport class SDKError extends Error {\n /**\n * Wrap any thrown value into an `SDKError`. Pass `code` as a context hint\n * (e.g. `TRANSACTION_ERROR`); it is only used when {@link classifyError}\n * yields nothing. The classifier always wins because viem class detection\n * is strictly more specific than a context code.\n */\n public static from(error: unknown, code?: ERROR_CODE): SDKError {\n if (error instanceof SDKError) return error;\n\n const decodedRevert = decodeRevertData(error);\n const message = decodedRevert\n ? formatDecodedRevert(decodedRevert)\n : messageOf(error);\n\n const finalCode =\n classifyError(error, decodedRevert) ?? code ?? ERROR_CODE.UNKNOWN_ERROR;\n\n return new SDKError({ code: finalCode, error, message, decodedRevert });\n }\n\n /** Classified error category. Always set. See {@link ERROR_CODE}. */\n public code: ERROR_CODE;\n\n /**\n * Decoded contract revert, when the upstream error carried a selector\n * decodable against the SDK's combined ABI. Discriminated union: narrow on\n * `name` to get a typed `args` tuple.\n */\n public decodedRevert: DecodedRevert | undefined;\n\n /**\n * Original upstream error (typically a viem `BaseError`). Inherited from\n * `Error.cause`. Walk via `e.cause` to inspect the full chain.\n */\n declare public cause?: unknown;\n\n constructor({ code, error, message, decodedRevert }: SDKErrorProps) {\n super(message);\n this.name = 'SDKError';\n // Preserve full upstream error as `cause` — consumers walk it via the\n // standard Error chain. Previous code assigned `error.cause` and silently\n // dropped the top viem BaseError.\n if (error !== undefined) {\n this.cause = error;\n }\n if (error instanceof Error && error.stack) {\n this.stack = error.stack;\n }\n this.code = code ?? ERROR_CODE.UNKNOWN_ERROR;\n this.decodedRevert = decodedRevert;\n }\n\n /**\n * @deprecated Use `message` (the idiomatic `Error` field) instead — this is\n * a thin alias kept for pre-refactor consumers and will be removed in the\n * next major. For structured access to a decoded contract revert, read\n * `decodedRevert` ({ name, args }).\n */\n public get errorMessage(): string | undefined {\n return this.message || undefined;\n }\n}\n\n/**\n * Assert `condition` is truthy, otherwise throw an `SDKError` with the given\n * `message` and optional `code` (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n */\n// eslint-disable-next-line func-style\nexport function invariant(\n condition: any,\n message: string,\n code?: ERROR_CODE,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ message, code });\n}\n\n/**\n * Shortcut for argument validation: throws with\n * {@link ERROR_CODE.INVALID_ARGUMENT}.\n */\n// eslint-disable-next-line func-style\nexport function invariantArgument(\n condition: any,\n message: string,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ code: ERROR_CODE.INVALID_ARGUMENT, message });\n}\n\n/**\n * Await `func`; on rejection, rethrow as `SDKError.from(error, code)`.\n * `code` is a context fallback — the classifier still wins when it matches.\n */\nexport const withSDKError = async <TResult>(\n func: Promise<TResult>,\n code?: ERROR_CODE,\n): Promise<TResult> => {\n try {\n return await func;\n } catch (error) {\n throw SDKError.from(error, code);\n }\n};\n"],"mappings":";;;;AAaA,MAAM,aAAa,UACjB,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY,WACrB,MAAM,UACN;AAQC,MAAM,uBAAuB,YAAmC;AACrE,KAAI,CAAC,QAAQ,KAAK,OAAQ,QAAO,QAAQ;CACzC,MAAM,OAAQ,QAAQ,KAA4B,IAAI,OAAM,CAAE,KAAK,KAAI;AACvE,QAAO,GAAG,QAAQ,KAAI,GAAI,KAAI;;AAwBzB,IAAM,WAAN,MAAM,iBAAiB,MAAM;;;;;;;CAOlC,OAAc,KAAK,OAAgB,MAA6B;AAC9D,MAAI,iBAAiB,SAAU,QAAO;EAEtC,MAAM,gBAAgB,2BAAA,iBAAiB,MAAK;EAC5C,MAAM,UAAU,gBACZ,oBAAoB,cAAa,GACjC,UAAU,MAAK;AAKnB,SAAO,IAAI,SAAS;GAAE,MAFpB,uBAAA,cAAc,OAAO,cAAa,IAAK,QAAQ,uBAAA,WAAW;GAErB;GAAO;GAAS;GAAe,CAAA;;;CAIjE;;;;;;CAOA;CAQP,YAAY,EAAE,MAAM,OAAO,SAAS,iBAAgC;AAClE,QAAM,QAAO;AACb,OAAK,OAAO;AAIZ,MAAI,UAAU,KAAA,EACZ,MAAK,QAAQ;AAEf,MAAI,iBAAiB,SAAS,MAAM,MAClC,MAAK,QAAQ,MAAM;AAErB,OAAK,OAAO,QAAQ,uBAAA,WAAW;AAC/B,OAAK,gBAAgB;;;;;;;;CASvB,IAAW,eAAmC;AAC5C,SAAO,KAAK,WAAW,KAAA;;;AASpB,SAAS,UACd,WACA,SACA,MACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE;EAAS;EAAM,CAAA;;AAQ/B,SAAS,kBACd,WACA,SACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE,MAAM,uBAAA,WAAW;EAAkB;EAAS,CAAA;;AAO5D,MAAM,eAAe,OAC1B,MACA,SACqB;AACrB,KAAI;AACF,SAAO,MAAM;UACN,OAAO;AACd,QAAM,SAAS,KAAK,OAAO,KAAI"}
@@ -63,6 +63,13 @@ declare class SDKError extends Error {
63
63
  message,
64
64
  decodedRevert
65
65
  }: SDKErrorProps);
66
+ /**
67
+ * @deprecated Use `message` (the idiomatic `Error` field) instead — this is
68
+ * a thin alias kept for pre-refactor consumers and will be removed in the
69
+ * next major. For structured access to a decoded contract revert, read
70
+ * `decodedRevert` ({ name, args }).
71
+ */
72
+ get errorMessage(): string | undefined;
66
73
  }
67
74
  /**
68
75
  * Assert `condition` is truthy, otherwise throw an `SDKError` with the given
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error.d.cts","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"mappings":";;;;KAMY,aAAA;EACV,IAAA,GAAO,UAAA;EACP,KAAA;EACA,OAAA;EACA,aAAA,GAAgB,aAAA;AAAA;;;;;;;cAiBL,mBAAA,GAAuB,OAAA,EAAS,aAAA;AAA7C;;;;;AA2BA;;;;;;;;;;;;;;;;AA3BA,cA2Ba,QAAA,SAAiB,KAAA;EAOT;;;;;;EAAA,OAAL,IAAA,CAAK,KAAA,WAAgB,IAAA,GAAO,UAAA,GAAa,QAAA;EAsBjC;EAPf,IAAA,EAAM,UAAA;;;;;;EAON,aAAA,EAAe,aAAA;EAQK;;;;EAFZ,KAAA;;IAED,IAAA;IAAM,KAAA;IAAO,OAAA;IAAS;EAAA,GAAiB,aAAA;AAAA;;;;;iBAsBvC,SAAA,CACd,SAAA,OACA,OAAA,UACA,IAAA,GAAO,UAAA,WACE,SAAA;;;;;iBAWK,iBAAA,CACd,SAAA,OACA,OAAA,mBACS,SAAA;AAHX;;;;AAAA,cAaa,YAAA,YACX,IAAA,EAAM,OAAA,CAAQ,OAAA,GACd,IAAA,GAAO,UAAA,KACN,OAAA,CAAQ,OAAA"}
1
+ {"version":3,"file":"sdk-error.d.cts","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"mappings":";;;;KAMY,aAAA;EACV,IAAA,GAAO,UAAA;EACP,KAAA;EACA,OAAA;EACA,aAAA,GAAgB,aAAA;AAAA;;;;;;;cAiBL,mBAAA,GAAuB,OAAA,EAAS,aAAA;AAA7C;;;;;AA2BA;;;;;;;;;;;;;;;;AA3BA,cA2Ba,QAAA,SAAiB,KAAA;EAOT;;;;;;EAAA,OAAL,IAAA,CAAK,KAAA,WAAgB,IAAA,GAAO,UAAA,GAAa,QAAA;EAsBjC;EAPf,IAAA,EAAM,UAAA;;;;;;EAON,aAAA,EAAe,aAAA;EAQK;;;;EAFZ,KAAA;;IAED,IAAA;IAAM,KAAA;IAAO,OAAA;IAAS;EAAA,GAAiB,aAAA;EAsB9B;AAUzB;;;;;EAVyB,IAAZ,YAAA,CAAA;AAAA;;;;;iBAUG,SAAA,CACd,SAAA,OACA,OAAA,UACA,IAAA,GAAO,UAAA,WACE,SAAA;;;;;iBAWK,iBAAA,CACd,SAAA,OACA,OAAA,mBACS,SAAA;;;;AAUX;cAAa,YAAA,YACX,IAAA,EAAM,OAAA,CAAQ,OAAA,GACd,IAAA,GAAO,UAAA,KACN,OAAA,CAAQ,OAAA"}
@@ -63,6 +63,13 @@ declare class SDKError extends Error {
63
63
  message,
64
64
  decodedRevert
65
65
  }: SDKErrorProps);
66
+ /**
67
+ * @deprecated Use `message` (the idiomatic `Error` field) instead — this is
68
+ * a thin alias kept for pre-refactor consumers and will be removed in the
69
+ * next major. For structured access to a decoded contract revert, read
70
+ * `decodedRevert` ({ name, args }).
71
+ */
72
+ get errorMessage(): string | undefined;
66
73
  }
67
74
  /**
68
75
  * Assert `condition` is truthy, otherwise throw an `SDKError` with the given
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error.d.mts","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"mappings":";;;;KAMY,aAAA;EACV,IAAA,GAAO,UAAA;EACP,KAAA;EACA,OAAA;EACA,aAAA,GAAgB,aAAA;AAAA;;;;;;;cAiBL,mBAAA,GAAuB,OAAA,EAAS,aAAA;AAA7C;;;;;AA2BA;;;;;;;;;;;;;;;;AA3BA,cA2Ba,QAAA,SAAiB,KAAA;EAOT;;;;;;EAAA,OAAL,IAAA,CAAK,KAAA,WAAgB,IAAA,GAAO,UAAA,GAAa,QAAA;EAsBjC;EAPf,IAAA,EAAM,UAAA;;;;;;EAON,aAAA,EAAe,aAAA;EAQK;;;;EAFZ,KAAA;;IAED,IAAA;IAAM,KAAA;IAAO,OAAA;IAAS;EAAA,GAAiB,aAAA;AAAA;;;;;iBAsBvC,SAAA,CACd,SAAA,OACA,OAAA,UACA,IAAA,GAAO,UAAA,WACE,SAAA;;;;;iBAWK,iBAAA,CACd,SAAA,OACA,OAAA,mBACS,SAAA;AAHX;;;;AAAA,cAaa,YAAA,YACX,IAAA,EAAM,OAAA,CAAQ,OAAA,GACd,IAAA,GAAO,UAAA,KACN,OAAA,CAAQ,OAAA"}
1
+ {"version":3,"file":"sdk-error.d.mts","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"mappings":";;;;KAMY,aAAA;EACV,IAAA,GAAO,UAAA;EACP,KAAA;EACA,OAAA;EACA,aAAA,GAAgB,aAAA;AAAA;;;;;;;cAiBL,mBAAA,GAAuB,OAAA,EAAS,aAAA;AAA7C;;;;;AA2BA;;;;;;;;;;;;;;;;AA3BA,cA2Ba,QAAA,SAAiB,KAAA;EAOT;;;;;;EAAA,OAAL,IAAA,CAAK,KAAA,WAAgB,IAAA,GAAO,UAAA,GAAa,QAAA;EAsBjC;EAPf,IAAA,EAAM,UAAA;;;;;;EAON,aAAA,EAAe,aAAA;EAQK;;;;EAFZ,KAAA;;IAED,IAAA;IAAM,KAAA;IAAO,OAAA;IAAS;EAAA,GAAiB,aAAA;EAsB9B;AAUzB;;;;;EAVyB,IAAZ,YAAA,CAAA;AAAA;;;;;iBAUG,SAAA,CACd,SAAA,OACA,OAAA,UACA,IAAA,GAAO,UAAA,WACE,SAAA;;;;;iBAWK,iBAAA,CACd,SAAA,OACA,OAAA,mBACS,SAAA;;;;AAUX;cAAa,YAAA,YACX,IAAA,EAAM,OAAA,CAAQ,OAAA,GACd,IAAA,GAAO,UAAA,KACN,OAAA,CAAQ,OAAA"}
@@ -42,6 +42,15 @@ var SDKError = class SDKError extends Error {
42
42
  this.code = code ?? ERROR_CODE.UNKNOWN_ERROR;
43
43
  this.decodedRevert = decodedRevert;
44
44
  }
45
+ /**
46
+ * @deprecated Use `message` (the idiomatic `Error` field) instead — this is
47
+ * a thin alias kept for pre-refactor consumers and will be removed in the
48
+ * next major. For structured access to a decoded contract revert, read
49
+ * `decodedRevert` ({ name, args }).
50
+ */
51
+ get errorMessage() {
52
+ return this.message || void 0;
53
+ }
45
54
  };
46
55
  function invariant(condition, message, code) {
47
56
  if (condition) return;
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error.mjs","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"sourcesContent":["import { classifyError } from './classify-error';\nimport { type DecodedRevert, decodeRevertData } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\nexport { ERROR_CODE } from './sdk-error-code';\n\nexport type SDKErrorProps = {\n code?: ERROR_CODE;\n error?: unknown;\n message?: string;\n decodedRevert?: DecodedRevert;\n};\n\nconst messageOf = (error: unknown): string =>\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n ? error.message\n : 'something went wrong';\n\n/**\n * Canonical `Name(arg1, arg2, ...)` label for a decoded contract revert.\n * Falls back to bare `Name` when the error has no args. Exposed so consumers\n * with a raw `decodedRevert` (e.g. from logs) can render the same string the\n * SDK uses as `Error.message`.\n */\nexport const formatDecodedRevert = (decoded: DecodedRevert): string => {\n if (!decoded.args.length) return decoded.name;\n const args = (decoded.args as readonly unknown[]).map(String).join(', ');\n return `${decoded.name}(${args})`;\n};\n\n/**\n * Typed wrapper around every error thrown by the SDK. Invariants:\n * - `code` is always set (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n * - `cause` preserves the original upstream error (typically a viem\n * `BaseError`) so consumers can walk the chain.\n * - `decodedRevert` is present iff the underlying error carried a custom\n * error selector decodable against the SDK's known ABIs.\n *\n * Branch on `code` for wallet / network conditions; narrow on\n * `decodedRevert.name` for typed contract revert args.\n *\n * @example\n * try { await sdk.bond.claimBondStETH(...) } catch (e) {\n * if (!(e instanceof SDKError)) throw e;\n * if (e.code === ERROR_CODE.USER_REJECTED) return;\n * if (e.decodedRevert?.name === 'AccessControlUnauthorizedAccount') {\n * const [account, role] = e.decodedRevert.args; // typed tuple\n * showRoleErrorToast(account, role);\n * }\n * }\n */\nexport class SDKError extends Error {\n /**\n * Wrap any thrown value into an `SDKError`. Pass `code` as a context hint\n * (e.g. `TRANSACTION_ERROR`); it is only used when {@link classifyError}\n * yields nothing. The classifier always wins because viem class detection\n * is strictly more specific than a context code.\n */\n public static from(error: unknown, code?: ERROR_CODE): SDKError {\n if (error instanceof SDKError) return error;\n\n const decodedRevert = decodeRevertData(error);\n const message = decodedRevert\n ? formatDecodedRevert(decodedRevert)\n : messageOf(error);\n\n const finalCode =\n classifyError(error, decodedRevert) ?? code ?? ERROR_CODE.UNKNOWN_ERROR;\n\n return new SDKError({ code: finalCode, error, message, decodedRevert });\n }\n\n /** Classified error category. Always set. See {@link ERROR_CODE}. */\n public code: ERROR_CODE;\n\n /**\n * Decoded contract revert, when the upstream error carried a selector\n * decodable against the SDK's combined ABI. Discriminated union: narrow on\n * `name` to get a typed `args` tuple.\n */\n public decodedRevert: DecodedRevert | undefined;\n\n /**\n * Original upstream error (typically a viem `BaseError`). Inherited from\n * `Error.cause`. Walk via `e.cause` to inspect the full chain.\n */\n declare public cause?: unknown;\n\n constructor({ code, error, message, decodedRevert }: SDKErrorProps) {\n super(message);\n this.name = 'SDKError';\n // Preserve full upstream error as `cause` — consumers walk it via the\n // standard Error chain. Previous code assigned `error.cause` and silently\n // dropped the top viem BaseError.\n if (error !== undefined) {\n this.cause = error;\n }\n if (error instanceof Error && error.stack) {\n this.stack = error.stack;\n }\n this.code = code ?? ERROR_CODE.UNKNOWN_ERROR;\n this.decodedRevert = decodedRevert;\n }\n}\n\n/**\n * Assert `condition` is truthy, otherwise throw an `SDKError` with the given\n * `message` and optional `code` (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n */\n// eslint-disable-next-line func-style\nexport function invariant(\n condition: any,\n message: string,\n code?: ERROR_CODE,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ message, code });\n}\n\n/**\n * Shortcut for argument validation: throws with\n * {@link ERROR_CODE.INVALID_ARGUMENT}.\n */\n// eslint-disable-next-line func-style\nexport function invariantArgument(\n condition: any,\n message: string,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ code: ERROR_CODE.INVALID_ARGUMENT, message });\n}\n\n/**\n * Await `func`; on rejection, rethrow as `SDKError.from(error, code)`.\n * `code` is a context fallback — the classifier still wins when it matches.\n */\nexport const withSDKError = async <TResult>(\n func: Promise<TResult>,\n code?: ERROR_CODE,\n): Promise<TResult> => {\n try {\n return await func;\n } catch (error) {\n throw SDKError.from(error, code);\n }\n};\n"],"mappings":";;;;AAaA,MAAM,aAAa,UACjB,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY,WACrB,MAAM,UACN;AAQC,MAAM,uBAAuB,YAAmC;AACrE,KAAI,CAAC,QAAQ,KAAK,OAAQ,QAAO,QAAQ;CACzC,MAAM,OAAQ,QAAQ,KAA4B,IAAI,OAAM,CAAE,KAAK,KAAI;AACvE,QAAO,GAAG,QAAQ,KAAI,GAAI,KAAI;;AAwBzB,IAAM,WAAN,MAAM,iBAAiB,MAAM;;;;;;;CAOlC,OAAc,KAAK,OAAgB,MAA6B;AAC9D,MAAI,iBAAiB,SAAU,QAAO;EAEtC,MAAM,gBAAgB,iBAAiB,MAAK;EAC5C,MAAM,UAAU,gBACZ,oBAAoB,cAAa,GACjC,UAAU,MAAK;AAKnB,SAAO,IAAI,SAAS;GAAE,MAFpB,cAAc,OAAO,cAAa,IAAK,QAAQ,WAAW;GAErB;GAAO;GAAS;GAAe,CAAA;;;CAIjE;;;;;;CAOA;CAQP,YAAY,EAAE,MAAM,OAAO,SAAS,iBAAgC;AAClE,QAAM,QAAO;AACb,OAAK,OAAO;AAIZ,MAAI,UAAU,KAAA,EACZ,MAAK,QAAQ;AAEf,MAAI,iBAAiB,SAAS,MAAM,MAClC,MAAK,QAAQ,MAAM;AAErB,OAAK,OAAO,QAAQ,WAAW;AAC/B,OAAK,gBAAgB;;;AASlB,SAAS,UACd,WACA,SACA,MACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE;EAAS;EAAM,CAAA;;AAQ/B,SAAS,kBACd,WACA,SACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE,MAAM,WAAW;EAAkB;EAAS,CAAA;;AAO5D,MAAM,eAAe,OAC1B,MACA,SACqB;AACrB,KAAI;AACF,SAAO,MAAM;UACN,OAAO;AACd,QAAM,SAAS,KAAK,OAAO,KAAI"}
1
+ {"version":3,"file":"sdk-error.mjs","names":[],"sources":["../../../src/common/utils/sdk-error.ts"],"sourcesContent":["import { classifyError } from './classify-error';\nimport { type DecodedRevert, decodeRevertData } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\nexport { ERROR_CODE } from './sdk-error-code';\n\nexport type SDKErrorProps = {\n code?: ERROR_CODE;\n error?: unknown;\n message?: string;\n decodedRevert?: DecodedRevert;\n};\n\nconst messageOf = (error: unknown): string =>\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n ? error.message\n : 'something went wrong';\n\n/**\n * Canonical `Name(arg1, arg2, ...)` label for a decoded contract revert.\n * Falls back to bare `Name` when the error has no args. Exposed so consumers\n * with a raw `decodedRevert` (e.g. from logs) can render the same string the\n * SDK uses as `Error.message`.\n */\nexport const formatDecodedRevert = (decoded: DecodedRevert): string => {\n if (!decoded.args.length) return decoded.name;\n const args = (decoded.args as readonly unknown[]).map(String).join(', ');\n return `${decoded.name}(${args})`;\n};\n\n/**\n * Typed wrapper around every error thrown by the SDK. Invariants:\n * - `code` is always set (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n * - `cause` preserves the original upstream error (typically a viem\n * `BaseError`) so consumers can walk the chain.\n * - `decodedRevert` is present iff the underlying error carried a custom\n * error selector decodable against the SDK's known ABIs.\n *\n * Branch on `code` for wallet / network conditions; narrow on\n * `decodedRevert.name` for typed contract revert args.\n *\n * @example\n * try { await sdk.bond.claimBondStETH(...) } catch (e) {\n * if (!(e instanceof SDKError)) throw e;\n * if (e.code === ERROR_CODE.USER_REJECTED) return;\n * if (e.decodedRevert?.name === 'AccessControlUnauthorizedAccount') {\n * const [account, role] = e.decodedRevert.args; // typed tuple\n * showRoleErrorToast(account, role);\n * }\n * }\n */\nexport class SDKError extends Error {\n /**\n * Wrap any thrown value into an `SDKError`. Pass `code` as a context hint\n * (e.g. `TRANSACTION_ERROR`); it is only used when {@link classifyError}\n * yields nothing. The classifier always wins because viem class detection\n * is strictly more specific than a context code.\n */\n public static from(error: unknown, code?: ERROR_CODE): SDKError {\n if (error instanceof SDKError) return error;\n\n const decodedRevert = decodeRevertData(error);\n const message = decodedRevert\n ? formatDecodedRevert(decodedRevert)\n : messageOf(error);\n\n const finalCode =\n classifyError(error, decodedRevert) ?? code ?? ERROR_CODE.UNKNOWN_ERROR;\n\n return new SDKError({ code: finalCode, error, message, decodedRevert });\n }\n\n /** Classified error category. Always set. See {@link ERROR_CODE}. */\n public code: ERROR_CODE;\n\n /**\n * Decoded contract revert, when the upstream error carried a selector\n * decodable against the SDK's combined ABI. Discriminated union: narrow on\n * `name` to get a typed `args` tuple.\n */\n public decodedRevert: DecodedRevert | undefined;\n\n /**\n * Original upstream error (typically a viem `BaseError`). Inherited from\n * `Error.cause`. Walk via `e.cause` to inspect the full chain.\n */\n declare public cause?: unknown;\n\n constructor({ code, error, message, decodedRevert }: SDKErrorProps) {\n super(message);\n this.name = 'SDKError';\n // Preserve full upstream error as `cause` — consumers walk it via the\n // standard Error chain. Previous code assigned `error.cause` and silently\n // dropped the top viem BaseError.\n if (error !== undefined) {\n this.cause = error;\n }\n if (error instanceof Error && error.stack) {\n this.stack = error.stack;\n }\n this.code = code ?? ERROR_CODE.UNKNOWN_ERROR;\n this.decodedRevert = decodedRevert;\n }\n\n /**\n * @deprecated Use `message` (the idiomatic `Error` field) instead — this is\n * a thin alias kept for pre-refactor consumers and will be removed in the\n * next major. For structured access to a decoded contract revert, read\n * `decodedRevert` ({ name, args }).\n */\n public get errorMessage(): string | undefined {\n return this.message || undefined;\n }\n}\n\n/**\n * Assert `condition` is truthy, otherwise throw an `SDKError` with the given\n * `message` and optional `code` (defaults to {@link ERROR_CODE.UNKNOWN_ERROR}).\n */\n// eslint-disable-next-line func-style\nexport function invariant(\n condition: any,\n message: string,\n code?: ERROR_CODE,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ message, code });\n}\n\n/**\n * Shortcut for argument validation: throws with\n * {@link ERROR_CODE.INVALID_ARGUMENT}.\n */\n// eslint-disable-next-line func-style\nexport function invariantArgument(\n condition: any,\n message: string,\n): asserts condition {\n if (condition) return;\n\n throw new SDKError({ code: ERROR_CODE.INVALID_ARGUMENT, message });\n}\n\n/**\n * Await `func`; on rejection, rethrow as `SDKError.from(error, code)`.\n * `code` is a context fallback — the classifier still wins when it matches.\n */\nexport const withSDKError = async <TResult>(\n func: Promise<TResult>,\n code?: ERROR_CODE,\n): Promise<TResult> => {\n try {\n return await func;\n } catch (error) {\n throw SDKError.from(error, code);\n }\n};\n"],"mappings":";;;;AAaA,MAAM,aAAa,UACjB,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY,WACrB,MAAM,UACN;AAQC,MAAM,uBAAuB,YAAmC;AACrE,KAAI,CAAC,QAAQ,KAAK,OAAQ,QAAO,QAAQ;CACzC,MAAM,OAAQ,QAAQ,KAA4B,IAAI,OAAM,CAAE,KAAK,KAAI;AACvE,QAAO,GAAG,QAAQ,KAAI,GAAI,KAAI;;AAwBzB,IAAM,WAAN,MAAM,iBAAiB,MAAM;;;;;;;CAOlC,OAAc,KAAK,OAAgB,MAA6B;AAC9D,MAAI,iBAAiB,SAAU,QAAO;EAEtC,MAAM,gBAAgB,iBAAiB,MAAK;EAC5C,MAAM,UAAU,gBACZ,oBAAoB,cAAa,GACjC,UAAU,MAAK;AAKnB,SAAO,IAAI,SAAS;GAAE,MAFpB,cAAc,OAAO,cAAa,IAAK,QAAQ,WAAW;GAErB;GAAO;GAAS;GAAe,CAAA;;;CAIjE;;;;;;CAOA;CAQP,YAAY,EAAE,MAAM,OAAO,SAAS,iBAAgC;AAClE,QAAM,QAAO;AACb,OAAK,OAAO;AAIZ,MAAI,UAAU,KAAA,EACZ,MAAK,QAAQ;AAEf,MAAI,iBAAiB,SAAS,MAAM,MAClC,MAAK,QAAQ,MAAM;AAErB,OAAK,OAAO,QAAQ,WAAW;AAC/B,OAAK,gBAAgB;;;;;;;;CASvB,IAAW,eAAmC;AAC5C,SAAO,KAAK,WAAW,KAAA;;;AASpB,SAAS,UACd,WACA,SACA,MACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE;EAAS;EAAM,CAAA;;AAQ/B,SAAS,kBACd,WACA,SACmB;AACnB,KAAI,UAAW;AAEf,OAAM,IAAI,SAAS;EAAE,MAAM,WAAW;EAAkB;EAAS,CAAA;;AAO5D,MAAM,eAAe,OAC1B,MACA,SACqB;AACrB,KAAI;AACF,SAAO,MAAM;UACN,OAAO;AACd,QAAM,SAAS,KAAK,OAAO,KAAI"}
@@ -100,10 +100,7 @@ var CuratedGatesCollectionSDK = class extends (_a = require_csm_sdk_module.CsmSD
100
100
  super(props, name);
101
101
  __runInitializers(_init, 5, this);
102
102
  __publicField(this, "gates", /* @__PURE__ */ new Map());
103
- for (const gateName of require_contract_names.CURATED_GATES) {
104
- require_sdk_error.invariant(this.core.contractAddresses[gateName], `Curated gate ${gateName} address is not configured`, require_sdk_error_code.ERROR_CODE.NOT_SUPPORTED);
105
- this.gates.set(gateName, new require_curated_gate_sdk.CuratedGateSDK(props, gateName));
106
- }
103
+ for (const gateName of require_contract_names.CURATED_GATES) this.gates.set(gateName, new require_curated_gate_sdk.CuratedGateSDK(props, gateName));
107
104
  }
108
105
  getCount() {
109
106
  return this.gates.size;
@@ -1 +1 @@
1
- {"version":3,"file":"curated-gates-collection-sdk.cjs","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"sourcesContent":["import type { Address } from 'viem';\nimport {\n CsmSDKModule,\n CsmSDKProps,\n} from '../common/class-primitives/csm-sdk-module';\nimport { CURATED_GATES } from '../common/constants/contract-names';\nimport {\n Access,\n AccessLevel,\n ErrorHandler,\n Logger,\n} from '../common/decorators/index';\nimport { ERROR_CODE, invariant } from '../common/index';\nimport { CuratedGateSDK } from '../curated-gate-sdk/curated-gate-sdk';\nimport { TxSDK } from '../tx-sdk/index';\nimport type {\n CreateNodeOperatorInGateProps,\n GateItemEligibility,\n} from './types';\n\nexport class CuratedGatesCollectionSDK extends CsmSDKModule<{\n tx: TxSDK;\n}> {\n private readonly gates: Map<CURATED_GATES, CuratedGateSDK> = new Map();\n\n constructor(props: CsmSDKProps, name?: string) {\n super(props, name);\n\n for (const gateName of CURATED_GATES) {\n invariant(\n this.core.contractAddresses[gateName],\n `Curated gate ${gateName} address is not configured`,\n ERROR_CODE.NOT_SUPPORTED,\n );\n this.gates.set(gateName, new CuratedGateSDK(props, gateName));\n }\n }\n\n public getCount(): number {\n return this.gates.size;\n }\n\n public getAll(): ReadonlyMap<CURATED_GATES, CuratedGateSDK> {\n return this.gates;\n }\n\n public get(gateName: CURATED_GATES): CuratedGateSDK | undefined {\n return this.gates.get(gateName);\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public getOrThrow(gateName: CURATED_GATES): CuratedGateSDK {\n const gate = this.gates.get(gateName);\n invariant(gate, `Gate ${gateName} not found`, ERROR_CODE.NOT_SUPPORTED);\n return gate;\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public async getEligibility(\n address: Address,\n ): Promise<GateItemEligibility[]> {\n return Promise.all(\n Array.from(this.gates, async ([gateName, gate]) => {\n const eligibility = await gate.getEligibility(address);\n return {\n ...eligibility,\n gateName,\n };\n }),\n );\n }\n\n @Access({ level: AccessLevel.ANYONE })\n @Logger('Call:')\n @ErrorHandler()\n public async createNodeOperator(props: CreateNodeOperatorInGateProps) {\n const { gateName, ...gateProps } = props;\n\n const gate = this.getOrThrow(gateName);\n\n return gate.createNodeOperator(gateProps);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,yBAAA,qBAAA,iBAAA,IAAA;AAoBO,IAAM,4BAAN,eAAwC,KAAA,uBAAA,cA8B7C,kBAAA,CAAC,eAAA,OAAO,SAAQ,EACf,sBAAA,cAAa,CAAA,EAOd,sBAAA,CAAC,eAAA,OAAO,SAAQ,EACf,sBAAA,cAAa,CAAA,EAed,0BAAA;CAAC,eAAA,OAAO,EAAE,OAAO,qBAAA,YAAY,QAAQ,CAAA;CACpC,eAAA,OAAO,QAAO;CACd,sBAAA,cAAa;CAAA,EAxD+B,IAE5C;CAGD,YAAY,OAAoB,MAAe;AAC7C,QAAM,OAAO,KAAI;AANd,oBAAA,OAAA,GAAA,KAAA;AAGL,gBAAA,MAAiB,yBAA4C,IAAI,KAAI,CAAA;AAKnE,OAAA,MAAW,YAAY,uBAAA,eAAe;AACpC,qBAAA,UACE,KAAK,KAAK,kBAAkB,WAC5B,gBAAgB,SAAQ,6BACxB,uBAAA,WAAW,cACb;AACA,QAAK,MAAM,IAAI,UAAU,IAAI,yBAAA,eAAe,OAAO,SAAS,CAAA;;;CAIzD,WAAmB;AACxB,SAAO,KAAK,MAAM;;CAGb,SAAqD;AAC1D,SAAO,KAAK;;CAGP,IAAI,UAAqD;AAC9D,SAAO,KAAK,MAAM,IAAI,SAAQ;;CAKzB,WAAW,UAAyC;EACzD,MAAM,OAAO,KAAK,MAAM,IAAI,SAAQ;AACpC,oBAAA,UAAU,MAAM,QAAQ,SAAQ,aAAc,uBAAA,WAAW,cAAa;AACtE,SAAO;;CAKT,MAAa,eACX,SACgC;AAChC,SAAO,QAAQ,IACb,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC,UAAU,UAAU;AAEjD,UAAO;IACL,GAFkB,MAAM,KAAK,eAAe,QAAO;IAGnD;IACF;IACD,CACH;;CAMF,MAAa,mBAAmB,OAAsC;EACpE,MAAM,EAAE,UAAU,GAAG,cAAc;AAInC,SAFa,KAAK,WAAW,SAAQ,CAEzB,mBAAmB,UAAS;;;AA9DrC,QAAA,iBAAA,GAAA;AAgCL,kBAAA,OAAA,GAAO,cAFP,iBA9BW,0BAAA;AAwCX,kBAAA,OAAA,GAAa,kBAFb,qBAtCW,0BAAA;AAyDX,kBAAA,OAAA,GAAa,sBAHb,yBAtDW,0BAAA;AAAN,oBAAA,OAAM,0BAAA"}
1
+ {"version":3,"file":"curated-gates-collection-sdk.cjs","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"sourcesContent":["import type { Address } from 'viem';\nimport {\n CsmSDKModule,\n CsmSDKProps,\n} from '../common/class-primitives/csm-sdk-module';\nimport { CURATED_GATES } from '../common/constants/contract-names';\nimport {\n Access,\n AccessLevel,\n ErrorHandler,\n Logger,\n} from '../common/decorators/index';\nimport { ERROR_CODE, invariant } from '../common/index';\nimport { CuratedGateSDK } from '../curated-gate-sdk/curated-gate-sdk';\nimport { TxSDK } from '../tx-sdk/index';\nimport type {\n CreateNodeOperatorInGateProps,\n GateItemEligibility,\n} from './types';\n\nexport class CuratedGatesCollectionSDK extends CsmSDKModule<{\n tx: TxSDK;\n}> {\n private readonly gates: Map<CURATED_GATES, CuratedGateSDK> = new Map();\n\n constructor(props: CsmSDKProps, name?: string) {\n super(props, name);\n\n for (const gateName of CURATED_GATES) {\n this.gates.set(gateName, new CuratedGateSDK(props, gateName));\n }\n }\n\n public getCount(): number {\n return this.gates.size;\n }\n\n public getAll(): ReadonlyMap<CURATED_GATES, CuratedGateSDK> {\n return this.gates;\n }\n\n public get(gateName: CURATED_GATES): CuratedGateSDK | undefined {\n return this.gates.get(gateName);\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public getOrThrow(gateName: CURATED_GATES): CuratedGateSDK {\n const gate = this.gates.get(gateName);\n invariant(gate, `Gate ${gateName} not found`, ERROR_CODE.NOT_SUPPORTED);\n return gate;\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public async getEligibility(\n address: Address,\n ): Promise<GateItemEligibility[]> {\n return Promise.all(\n Array.from(this.gates, async ([gateName, gate]) => {\n const eligibility = await gate.getEligibility(address);\n return {\n ...eligibility,\n gateName,\n };\n }),\n );\n }\n\n @Access({ level: AccessLevel.ANYONE })\n @Logger('Call:')\n @ErrorHandler()\n public async createNodeOperator(props: CreateNodeOperatorInGateProps) {\n const { gateName, ...gateProps } = props;\n\n const gate = this.getOrThrow(gateName);\n\n return gate.createNodeOperator(gateProps);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,yBAAA,qBAAA,iBAAA,IAAA;AAoBO,IAAM,4BAAN,eAAwC,KAAA,uBAAA,cAyB7C,kBAAA,CAAC,eAAA,OAAO,SAAQ,EACf,sBAAA,cAAa,CAAA,EAOd,sBAAA,CAAC,eAAA,OAAO,SAAQ,EACf,sBAAA,cAAa,CAAA,EAed,0BAAA;CAAC,eAAA,OAAO,EAAE,OAAO,qBAAA,YAAY,QAAQ,CAAA;CACpC,eAAA,OAAO,QAAO;CACd,sBAAA,cAAa;CAAA,EAnD+B,IAE5C;CAGD,YAAY,OAAoB,MAAe;AAC7C,QAAM,OAAO,KAAI;AANd,oBAAA,OAAA,GAAA,KAAA;AAGL,gBAAA,MAAiB,yBAA4C,IAAI,KAAI,CAAA;AAKnE,OAAA,MAAW,YAAY,uBAAA,cACrB,MAAK,MAAM,IAAI,UAAU,IAAI,yBAAA,eAAe,OAAO,SAAS,CAAA;;CAIzD,WAAmB;AACxB,SAAO,KAAK,MAAM;;CAGb,SAAqD;AAC1D,SAAO,KAAK;;CAGP,IAAI,UAAqD;AAC9D,SAAO,KAAK,MAAM,IAAI,SAAQ;;CAKzB,WAAW,UAAyC;EACzD,MAAM,OAAO,KAAK,MAAM,IAAI,SAAQ;AACpC,oBAAA,UAAU,MAAM,QAAQ,SAAQ,aAAc,uBAAA,WAAW,cAAa;AACtE,SAAO;;CAKT,MAAa,eACX,SACgC;AAChC,SAAO,QAAQ,IACb,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC,UAAU,UAAU;AAEjD,UAAO;IACL,GAFkB,MAAM,KAAK,eAAe,QAAO;IAGnD;IACF;IACD,CACH;;CAMF,MAAa,mBAAmB,OAAsC;EACpE,MAAM,EAAE,UAAU,GAAG,cAAc;AAInC,SAFa,KAAK,WAAW,SAAQ,CAEzB,mBAAmB,UAAS;;;AAzDrC,QAAA,iBAAA,GAAA;AA2BL,kBAAA,OAAA,GAAO,cAFP,iBAzBW,0BAAA;AAmCX,kBAAA,OAAA,GAAa,kBAFb,qBAjCW,0BAAA;AAoDX,kBAAA,OAAA,GAAa,sBAHb,yBAjDW,0BAAA;AAAN,oBAAA,OAAM,0BAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"curated-gates-collection-sdk.d.cts","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"mappings":";;;;;;;;;;cAoBa,yBAAA,SAAkC,YAAA;EAC7C,EAAA,EAAI,KAAA;AAAA;EAAA,iBAEa,KAAA;cAEL,KAAA,EAAO,WAAA,EAAa,IAAA;EAazB,QAAA,CAAA;EAIA,MAAA,CAAA,GAAU,WAAA,CAAY,aAAA,EAAe,cAAA;EAIrC,GAAA,CAAI,QAAA,EAAU,aAAA,GAAgB,cAAA;EAM9B,UAAA,CAAW,QAAA,EAAU,aAAA,GAAgB,cAAA;EAQ/B,cAAA,CACX,OAAA,EAAS,OAAA,GACR,OAAA,CAAQ,mBAAA;EAeE,kBAAA,CAAmB,KAAA,EAAO,6BAAA,GAA6B,OAAA,CAAA,iCAAA,CAAA,iBAAA,CAAA,qBAAA;AAAA"}
1
+ {"version":3,"file":"curated-gates-collection-sdk.d.cts","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"mappings":";;;;;;;;;;cAoBa,yBAAA,SAAkC,YAAA;EAC7C,EAAA,EAAI,KAAA;AAAA;EAAA,iBAEa,KAAA;cAEL,KAAA,EAAO,WAAA,EAAa,IAAA;EAQzB,QAAA,CAAA;EAIA,MAAA,CAAA,GAAU,WAAA,CAAY,aAAA,EAAe,cAAA;EAIrC,GAAA,CAAI,QAAA,EAAU,aAAA,GAAgB,cAAA;EAM9B,UAAA,CAAW,QAAA,EAAU,aAAA,GAAgB,cAAA;EAQ/B,cAAA,CACX,OAAA,EAAS,OAAA,GACR,OAAA,CAAQ,mBAAA;EAeE,kBAAA,CAAmB,KAAA,EAAO,6BAAA,GAA6B,OAAA,CAAA,iCAAA,CAAA,iBAAA,CAAA,qBAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"curated-gates-collection-sdk.d.mts","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"mappings":";;;;;;;;;;cAoBa,yBAAA,SAAkC,YAAA;EAC7C,EAAA,EAAI,KAAA;AAAA;EAAA,iBAEa,KAAA;cAEL,KAAA,EAAO,WAAA,EAAa,IAAA;EAazB,QAAA,CAAA;EAIA,MAAA,CAAA,GAAU,WAAA,CAAY,aAAA,EAAe,cAAA;EAIrC,GAAA,CAAI,QAAA,EAAU,aAAA,GAAgB,cAAA;EAM9B,UAAA,CAAW,QAAA,EAAU,aAAA,GAAgB,cAAA;EAQ/B,cAAA,CACX,OAAA,EAAS,OAAA,GACR,OAAA,CAAQ,mBAAA;EAeE,kBAAA,CAAmB,KAAA,EAAO,6BAAA,GAA6B,OAAA,CAAA,iCAAA,CAAA,iBAAA,CAAA,qBAAA;AAAA"}
1
+ {"version":3,"file":"curated-gates-collection-sdk.d.mts","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"mappings":";;;;;;;;;;cAoBa,yBAAA,SAAkC,YAAA;EAC7C,EAAA,EAAI,KAAA;AAAA;EAAA,iBAEa,KAAA;cAEL,KAAA,EAAO,WAAA,EAAa,IAAA;EAQzB,QAAA,CAAA;EAIA,MAAA,CAAA,GAAU,WAAA,CAAY,aAAA,EAAe,cAAA;EAIrC,GAAA,CAAI,QAAA,EAAU,aAAA,GAAgB,cAAA;EAM9B,UAAA,CAAW,QAAA,EAAU,aAAA,GAAgB,cAAA;EAQ/B,cAAA,CACX,OAAA,EAAS,OAAA,GACR,OAAA,CAAQ,mBAAA;EAeE,kBAAA,CAAmB,KAAA,EAAO,6BAAA,GAA6B,OAAA,CAAA,iCAAA,CAAA,iBAAA,CAAA,qBAAA;AAAA"}
@@ -100,10 +100,7 @@ var CuratedGatesCollectionSDK = class extends (_a = CsmSDKModule, _getOrThrow_de
100
100
  super(props, name);
101
101
  __runInitializers(_init, 5, this);
102
102
  __publicField(this, "gates", /* @__PURE__ */ new Map());
103
- for (const gateName of CURATED_GATES) {
104
- invariant(this.core.contractAddresses[gateName], `Curated gate ${gateName} address is not configured`, ERROR_CODE.NOT_SUPPORTED);
105
- this.gates.set(gateName, new CuratedGateSDK(props, gateName));
106
- }
103
+ for (const gateName of CURATED_GATES) this.gates.set(gateName, new CuratedGateSDK(props, gateName));
107
104
  }
108
105
  getCount() {
109
106
  return this.gates.size;
@@ -1 +1 @@
1
- {"version":3,"file":"curated-gates-collection-sdk.mjs","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"sourcesContent":["import type { Address } from 'viem';\nimport {\n CsmSDKModule,\n CsmSDKProps,\n} from '../common/class-primitives/csm-sdk-module';\nimport { CURATED_GATES } from '../common/constants/contract-names';\nimport {\n Access,\n AccessLevel,\n ErrorHandler,\n Logger,\n} from '../common/decorators/index';\nimport { ERROR_CODE, invariant } from '../common/index';\nimport { CuratedGateSDK } from '../curated-gate-sdk/curated-gate-sdk';\nimport { TxSDK } from '../tx-sdk/index';\nimport type {\n CreateNodeOperatorInGateProps,\n GateItemEligibility,\n} from './types';\n\nexport class CuratedGatesCollectionSDK extends CsmSDKModule<{\n tx: TxSDK;\n}> {\n private readonly gates: Map<CURATED_GATES, CuratedGateSDK> = new Map();\n\n constructor(props: CsmSDKProps, name?: string) {\n super(props, name);\n\n for (const gateName of CURATED_GATES) {\n invariant(\n this.core.contractAddresses[gateName],\n `Curated gate ${gateName} address is not configured`,\n ERROR_CODE.NOT_SUPPORTED,\n );\n this.gates.set(gateName, new CuratedGateSDK(props, gateName));\n }\n }\n\n public getCount(): number {\n return this.gates.size;\n }\n\n public getAll(): ReadonlyMap<CURATED_GATES, CuratedGateSDK> {\n return this.gates;\n }\n\n public get(gateName: CURATED_GATES): CuratedGateSDK | undefined {\n return this.gates.get(gateName);\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public getOrThrow(gateName: CURATED_GATES): CuratedGateSDK {\n const gate = this.gates.get(gateName);\n invariant(gate, `Gate ${gateName} not found`, ERROR_CODE.NOT_SUPPORTED);\n return gate;\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public async getEligibility(\n address: Address,\n ): Promise<GateItemEligibility[]> {\n return Promise.all(\n Array.from(this.gates, async ([gateName, gate]) => {\n const eligibility = await gate.getEligibility(address);\n return {\n ...eligibility,\n gateName,\n };\n }),\n );\n }\n\n @Access({ level: AccessLevel.ANYONE })\n @Logger('Call:')\n @ErrorHandler()\n public async createNodeOperator(props: CreateNodeOperatorInGateProps) {\n const { gateName, ...gateProps } = props;\n\n const gate = this.getOrThrow(gateName);\n\n return gate.createNodeOperator(gateProps);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,yBAAA,qBAAA,iBAAA,IAAA;AAoBO,IAAM,4BAAN,eAAwC,KAAA,cA8B7C,kBAAA,CAAC,OAAO,SAAQ,EACf,cAAa,CAAA,EAOd,sBAAA,CAAC,OAAO,SAAQ,EACf,cAAa,CAAA,EAed,0BAAA;CAAC,OAAO,EAAE,OAAO,YAAY,QAAQ,CAAA;CACpC,OAAO,QAAO;CACd,cAAa;CAAA,EAxD+B,IAE5C;CAGD,YAAY,OAAoB,MAAe;AAC7C,QAAM,OAAO,KAAI;AANd,oBAAA,OAAA,GAAA,KAAA;AAGL,gBAAA,MAAiB,yBAA4C,IAAI,KAAI,CAAA;AAKnE,OAAA,MAAW,YAAY,eAAe;AACpC,aACE,KAAK,KAAK,kBAAkB,WAC5B,gBAAgB,SAAQ,6BACxB,WAAW,cACb;AACA,QAAK,MAAM,IAAI,UAAU,IAAI,eAAe,OAAO,SAAS,CAAA;;;CAIzD,WAAmB;AACxB,SAAO,KAAK,MAAM;;CAGb,SAAqD;AAC1D,SAAO,KAAK;;CAGP,IAAI,UAAqD;AAC9D,SAAO,KAAK,MAAM,IAAI,SAAQ;;CAKzB,WAAW,UAAyC;EACzD,MAAM,OAAO,KAAK,MAAM,IAAI,SAAQ;AACpC,YAAU,MAAM,QAAQ,SAAQ,aAAc,WAAW,cAAa;AACtE,SAAO;;CAKT,MAAa,eACX,SACgC;AAChC,SAAO,QAAQ,IACb,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC,UAAU,UAAU;AAEjD,UAAO;IACL,GAFkB,MAAM,KAAK,eAAe,QAAO;IAGnD;IACF;IACD,CACH;;CAMF,MAAa,mBAAmB,OAAsC;EACpE,MAAM,EAAE,UAAU,GAAG,cAAc;AAInC,SAFa,KAAK,WAAW,SAAQ,CAEzB,mBAAmB,UAAS;;;AA9DrC,QAAA,iBAAA,GAAA;AAgCL,kBAAA,OAAA,GAAO,cAFP,iBA9BW,0BAAA;AAwCX,kBAAA,OAAA,GAAa,kBAFb,qBAtCW,0BAAA;AAyDX,kBAAA,OAAA,GAAa,sBAHb,yBAtDW,0BAAA;AAAN,oBAAA,OAAM,0BAAA"}
1
+ {"version":3,"file":"curated-gates-collection-sdk.mjs","names":[],"sources":["../../src/curated-gates-collection-sdk/curated-gates-collection-sdk.ts"],"sourcesContent":["import type { Address } from 'viem';\nimport {\n CsmSDKModule,\n CsmSDKProps,\n} from '../common/class-primitives/csm-sdk-module';\nimport { CURATED_GATES } from '../common/constants/contract-names';\nimport {\n Access,\n AccessLevel,\n ErrorHandler,\n Logger,\n} from '../common/decorators/index';\nimport { ERROR_CODE, invariant } from '../common/index';\nimport { CuratedGateSDK } from '../curated-gate-sdk/curated-gate-sdk';\nimport { TxSDK } from '../tx-sdk/index';\nimport type {\n CreateNodeOperatorInGateProps,\n GateItemEligibility,\n} from './types';\n\nexport class CuratedGatesCollectionSDK extends CsmSDKModule<{\n tx: TxSDK;\n}> {\n private readonly gates: Map<CURATED_GATES, CuratedGateSDK> = new Map();\n\n constructor(props: CsmSDKProps, name?: string) {\n super(props, name);\n\n for (const gateName of CURATED_GATES) {\n this.gates.set(gateName, new CuratedGateSDK(props, gateName));\n }\n }\n\n public getCount(): number {\n return this.gates.size;\n }\n\n public getAll(): ReadonlyMap<CURATED_GATES, CuratedGateSDK> {\n return this.gates;\n }\n\n public get(gateName: CURATED_GATES): CuratedGateSDK | undefined {\n return this.gates.get(gateName);\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public getOrThrow(gateName: CURATED_GATES): CuratedGateSDK {\n const gate = this.gates.get(gateName);\n invariant(gate, `Gate ${gateName} not found`, ERROR_CODE.NOT_SUPPORTED);\n return gate;\n }\n\n @Logger('Utils:')\n @ErrorHandler()\n public async getEligibility(\n address: Address,\n ): Promise<GateItemEligibility[]> {\n return Promise.all(\n Array.from(this.gates, async ([gateName, gate]) => {\n const eligibility = await gate.getEligibility(address);\n return {\n ...eligibility,\n gateName,\n };\n }),\n );\n }\n\n @Access({ level: AccessLevel.ANYONE })\n @Logger('Call:')\n @ErrorHandler()\n public async createNodeOperator(props: CreateNodeOperatorInGateProps) {\n const { gateName, ...gateProps } = props;\n\n const gate = this.getOrThrow(gateName);\n\n return gate.createNodeOperator(gateProps);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,yBAAA,qBAAA,iBAAA,IAAA;AAoBO,IAAM,4BAAN,eAAwC,KAAA,cAyB7C,kBAAA,CAAC,OAAO,SAAQ,EACf,cAAa,CAAA,EAOd,sBAAA,CAAC,OAAO,SAAQ,EACf,cAAa,CAAA,EAed,0BAAA;CAAC,OAAO,EAAE,OAAO,YAAY,QAAQ,CAAA;CACpC,OAAO,QAAO;CACd,cAAa;CAAA,EAnD+B,IAE5C;CAGD,YAAY,OAAoB,MAAe;AAC7C,QAAM,OAAO,KAAI;AANd,oBAAA,OAAA,GAAA,KAAA;AAGL,gBAAA,MAAiB,yBAA4C,IAAI,KAAI,CAAA;AAKnE,OAAA,MAAW,YAAY,cACrB,MAAK,MAAM,IAAI,UAAU,IAAI,eAAe,OAAO,SAAS,CAAA;;CAIzD,WAAmB;AACxB,SAAO,KAAK,MAAM;;CAGb,SAAqD;AAC1D,SAAO,KAAK;;CAGP,IAAI,UAAqD;AAC9D,SAAO,KAAK,MAAM,IAAI,SAAQ;;CAKzB,WAAW,UAAyC;EACzD,MAAM,OAAO,KAAK,MAAM,IAAI,SAAQ;AACpC,YAAU,MAAM,QAAQ,SAAQ,aAAc,WAAW,cAAa;AACtE,SAAO;;CAKT,MAAa,eACX,SACgC;AAChC,SAAO,QAAQ,IACb,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC,UAAU,UAAU;AAEjD,UAAO;IACL,GAFkB,MAAM,KAAK,eAAe,QAAO;IAGnD;IACF;IACD,CACH;;CAMF,MAAa,mBAAmB,OAAsC;EACpE,MAAM,EAAE,UAAU,GAAG,cAAc;AAInC,SAFa,KAAK,WAAW,SAAQ,CAEzB,mBAAmB,UAAS;;;AAzDrC,QAAA,iBAAA,GAAA;AA2BL,kBAAA,OAAA,GAAO,cAFP,iBAzBW,0BAAA;AAmCX,kBAAA,OAAA,GAAa,kBAFb,qBAjCW,0BAAA;AAoDX,kBAAA,OAAA,GAAa,sBAHb,yBAjDW,0BAAA;AAAN,oBAAA,OAAM,0BAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lidofinance/lido-csm-sdk",
3
- "version": "2.0.0-alpha.62",
3
+ "version": "2.0.0-alpha.64",
4
4
  "license": "GPL-3.0-or-later",
5
5
  "sideEffects": false,
6
6
  "type": "module",