@stake-dao/reader 0.2.21 → 0.3.0

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.
Files changed (107) hide show
  1. package/dist/esm/abis/lockersMulticall.js +17 -0
  2. package/dist/esm/abis/lockersMulticall.js.map +1 -1
  3. package/dist/esm/bytecodes/index.js +13 -0
  4. package/dist/esm/bytecodes/index.js.map +1 -1
  5. package/dist/esm/bytecodes/votemarket/batchCurveGauges.js +32 -0
  6. package/dist/esm/bytecodes/votemarket/batchCurveGauges.js.map +1 -0
  7. package/dist/esm/bytecodes/votemarket/batchGaugesMetadata.js +58 -0
  8. package/dist/esm/bytecodes/votemarket/batchGaugesMetadata.js.map +1 -0
  9. package/dist/esm/index.js +6 -0
  10. package/dist/esm/index.js.map +1 -1
  11. package/dist/esm/lockers/fetch/index.js +67 -167
  12. package/dist/esm/lockers/fetch/index.js.map +1 -1
  13. package/dist/esm/lockers/fetch/parsePeg.js +21 -0
  14. package/dist/esm/lockers/fetch/parsePeg.js.map +1 -0
  15. package/dist/esm/lockers/fetch/parseVoteBoosterData.js +28 -0
  16. package/dist/esm/lockers/fetch/parseVoteBoosterData.js.map +1 -0
  17. package/dist/esm/lockers/utils/callsForLockers/depositorCalls.js +5 -5
  18. package/dist/esm/lockers/utils/callsForLockers/depositorCalls.js.map +1 -1
  19. package/dist/esm/lockers/utils/callsForLockers/feeCalls.js +13 -11
  20. package/dist/esm/lockers/utils/callsForLockers/feeCalls.js.map +1 -1
  21. package/dist/esm/lockers/utils/callsForLockers/index.js +2 -4
  22. package/dist/esm/lockers/utils/callsForLockers/index.js.map +1 -1
  23. package/dist/esm/lockers/utils/callsForLockers/pegCalls.js +9 -11
  24. package/dist/esm/lockers/utils/callsForLockers/pegCalls.js.map +1 -1
  25. package/dist/esm/lockers/utils/callsForLockers/veCalls.js +4 -4
  26. package/dist/esm/lockers/utils/callsForLockers/veCalls.js.map +1 -1
  27. package/dist/esm/lockers/utils/endpoints.js +2 -22
  28. package/dist/esm/lockers/utils/endpoints.js.map +1 -1
  29. package/dist/esm/lockers/utils/getBribesRewardsData.js +0 -1
  30. package/dist/esm/lockers/utils/getBribesRewardsData.js.map +1 -1
  31. package/dist/esm/lockers/utils/getCherries.js +34 -0
  32. package/dist/esm/lockers/utils/getCherries.js.map +1 -0
  33. package/dist/esm/lockers/utils/getHttpCalls.js +5 -7
  34. package/dist/esm/lockers/utils/getHttpCalls.js.map +1 -1
  35. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  36. package/dist/esm/votemarket/curve/config.js +6 -0
  37. package/dist/esm/votemarket/curve/config.js.map +1 -0
  38. package/dist/esm/votemarket/curve/fetchCurveGauges.js +86 -0
  39. package/dist/esm/votemarket/curve/fetchCurveGauges.js.map +1 -0
  40. package/dist/types/abis/lockersMulticall.d.ts +16 -0
  41. package/dist/types/abis/lockersMulticall.d.ts.map +1 -1
  42. package/dist/types/bytecodes/index.d.ts +2 -0
  43. package/dist/types/bytecodes/index.d.ts.map +1 -1
  44. package/dist/types/bytecodes/votemarket/batchCurveGauges.d.ts +4 -0
  45. package/dist/types/bytecodes/votemarket/batchCurveGauges.d.ts.map +1 -0
  46. package/dist/types/bytecodes/votemarket/batchGaugesMetadata.d.ts +4 -0
  47. package/dist/types/bytecodes/votemarket/batchGaugesMetadata.d.ts.map +1 -0
  48. package/dist/types/index.d.ts +1 -0
  49. package/dist/types/index.d.ts.map +1 -1
  50. package/dist/types/lockers/fetch/index.d.ts +88 -2
  51. package/dist/types/lockers/fetch/index.d.ts.map +1 -1
  52. package/dist/types/lockers/fetch/parsePeg.d.ts +3 -0
  53. package/dist/types/lockers/fetch/parsePeg.d.ts.map +1 -0
  54. package/dist/types/lockers/fetch/parseVoteBoosterData.d.ts +13 -0
  55. package/dist/types/lockers/fetch/parseVoteBoosterData.d.ts.map +1 -0
  56. package/dist/types/lockers/utils/callsForLockers/depositorCalls.d.ts +2 -1
  57. package/dist/types/lockers/utils/callsForLockers/depositorCalls.d.ts.map +1 -1
  58. package/dist/types/lockers/utils/callsForLockers/feeCalls.d.ts +3 -1
  59. package/dist/types/lockers/utils/callsForLockers/feeCalls.d.ts.map +1 -1
  60. package/dist/types/lockers/utils/callsForLockers/index.d.ts +2 -1
  61. package/dist/types/lockers/utils/callsForLockers/index.d.ts.map +1 -1
  62. package/dist/types/lockers/utils/callsForLockers/pegCalls.d.ts +3 -2
  63. package/dist/types/lockers/utils/callsForLockers/pegCalls.d.ts.map +1 -1
  64. package/dist/types/lockers/utils/callsForLockers/veCalls.d.ts +2 -1
  65. package/dist/types/lockers/utils/callsForLockers/veCalls.d.ts.map +1 -1
  66. package/dist/types/lockers/utils/endpoints.d.ts +2 -2
  67. package/dist/types/lockers/utils/endpoints.d.ts.map +1 -1
  68. package/dist/types/lockers/utils/getBribesRewardsData.d.ts +10 -12
  69. package/dist/types/lockers/utils/getBribesRewardsData.d.ts.map +1 -1
  70. package/dist/types/lockers/utils/getCherries.d.ts +4 -0
  71. package/dist/types/lockers/utils/getCherries.d.ts.map +1 -0
  72. package/dist/types/lockers/utils/getHttpCalls.d.ts +5 -1
  73. package/dist/types/lockers/utils/getHttpCalls.d.ts.map +1 -1
  74. package/dist/types/votemarket/curve/config.d.ts +4 -0
  75. package/dist/types/votemarket/curve/config.d.ts.map +1 -0
  76. package/dist/types/votemarket/curve/fetchCurveGauges.d.ts +16 -0
  77. package/dist/types/votemarket/curve/fetchCurveGauges.d.ts.map +1 -0
  78. package/package.json +2 -2
  79. package/src/abis/lockersMulticall.ts +17 -0
  80. package/src/bytecodes/index.ts +18 -0
  81. package/src/bytecodes/votemarket/batchCurveGauges.ts +34 -0
  82. package/src/bytecodes/votemarket/batchGaugesMetadata.ts +67 -0
  83. package/src/index.ts +9 -0
  84. package/src/lockers/fetch/index.ts +104 -227
  85. package/src/lockers/fetch/parsePeg.ts +25 -0
  86. package/src/lockers/fetch/parseVoteBoosterData.ts +34 -0
  87. package/src/lockers/utils/callsForLockers/depositorCalls.ts +7 -6
  88. package/src/lockers/utils/callsForLockers/feeCalls.ts +17 -15
  89. package/src/lockers/utils/callsForLockers/index.ts +6 -10
  90. package/src/lockers/utils/callsForLockers/pegCalls.ts +11 -12
  91. package/src/lockers/utils/callsForLockers/veCalls.ts +6 -5
  92. package/src/lockers/utils/endpoints.ts +2 -25
  93. package/src/lockers/utils/getBribesRewardsData.ts +11 -2
  94. package/src/lockers/utils/getCherries.ts +48 -0
  95. package/src/lockers/utils/getHttpCalls.ts +6 -7
  96. package/src/votemarket/curve/config.ts +6 -0
  97. package/src/votemarket/curve/fetchCurveGauges.ts +119 -0
  98. package/dist/esm/lockers/utils/callsForLockers/gaugeControllerCalls.js +0 -8
  99. package/dist/esm/lockers/utils/callsForLockers/gaugeControllerCalls.js.map +0 -1
  100. package/dist/esm/lockers/utils/getCherriesLeaderBoard.js +0 -22
  101. package/dist/esm/lockers/utils/getCherriesLeaderBoard.js.map +0 -1
  102. package/dist/types/lockers/utils/callsForLockers/gaugeControllerCalls.d.ts +0 -11
  103. package/dist/types/lockers/utils/callsForLockers/gaugeControllerCalls.d.ts.map +0 -1
  104. package/dist/types/lockers/utils/getCherriesLeaderBoard.d.ts +0 -2
  105. package/dist/types/lockers/utils/getCherriesLeaderBoard.d.ts.map +0 -1
  106. package/src/lockers/utils/callsForLockers/gaugeControllerCalls.ts +0 -8
  107. package/src/lockers/utils/getCherriesLeaderBoard.ts +0 -34
@@ -0,0 +1,34 @@
1
+ import type { BatchMetaData } from '../types.js'
2
+
3
+ const batchCurveGauges: BatchMetaData = {
4
+ bytecode: {
5
+ 1: '0x608060405234801561000f575f80fd5b50604051610dbb380380610dbb83398181016040528101906100319190610920565b5f732f50d538606fa9edd2b11e2446beb18c9d5846bb90505f82146100565781610058565b835b91505f8383610067919061099d565b67ffffffffffffffff8111156100805761007f6109d0565b5b6040519080825280602002602001820160405280156100b957816020015b6100a66108a1565b81526020019060019003908161009e5790505b5090505f8490505b83811015610377575f8373ffffffffffffffffffffffffffffffffffffffff1663b0539187836040518263ffffffff1660e01b81526004016101039190610a0c565b602060405180830381865afa15801561011e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101429190610a7f565b905061014c6108a1565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610192826103a660201b60201c565b826080018360a00182815250821515151581525050508473ffffffffffffffffffffffffffffffffffffffff16634e791a3a836040518263ffffffff1660e01b81526004016101e19190610ab9565b6020604051808303815f875af11580156101fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102219190610ad2565b8160200181815250508473ffffffffffffffffffffffffffffffffffffffff166395cfcec3836040518263ffffffff1660e01b81526004016102639190610ab9565b6020604051808303815f875af115801561027f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a39190610ad2565b8160400181815250508473ffffffffffffffffffffffffffffffffffffffff16636472eee18362093a80426102d89190610afd565b6040518363ffffffff1660e01b81526004016102f5929190610b30565b6020604051808303815f875af1158015610311573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103359190610ad2565b8160600181815250508084888561034c919061099d565b8151811061035d5761035c610b57565b5b6020026020010181905250505080806001019150506100c1565b505f8160405160200161038a9190610cdd565b6040516020818303038152906040529050602081018059038082f35b5f805f8390508073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561041457506040513d601f19601f820116820180604052508101906104119190610d27565b60015b610420575f9250610425565b809350505b6104348461043c60201b60201c565b915050915091565b5f808273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f3af973b1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104e59190610da4565b5f604051808303815f865af19150503d805f811461051e576040519150601f19603f3d011682016040523d82523d5f602084013e610523565b606091505b5050905080156105a2578273ffffffffffffffffffffffffffffffffffffffff16633af973b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610576573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059a9190610ad2565b91505061089c565b5f8373ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527fcd4d1c64000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161064a9190610da4565b5f604051808303815f865af19150503d805f8114610683576040519150601f19603f3d011682016040523d82523d5f602084013e610688565b606091505b50509050801561069c575f9250505061089c565b5f8473ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f2267716c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107449190610da4565b5f604051808303815f865af19150503d805f811461077d576040519150601f19603f3d011682016040523d82523d5f602084013e610782565b606091505b505090508015610797575f935050505061089c565b5f8573ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f809864e1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161083f9190610da4565b5f604051808303815f865af19150503d805f8114610878576040519150601f19603f3d011682016040523d82523d5f602084013e61087d565b606091505b505090508015610893575f94505050505061089c565b60019450505050505b919050565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581526020015f81525090565b5f80fd5b5f819050919050565b6108ff816108ed565b8114610909575f80fd5b50565b5f8151905061091a816108f6565b92915050565b5f805f60608486031215610937576109366108e9565b5b5f6109448682870161090c565b93505060206109558682870161090c565b92505060406109668682870161090c565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6109a7826108ed565b91506109b2836108ed565b92508282039050818111156109ca576109c9610970565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610a06816108ed565b82525050565b5f602082019050610a1f5f8301846109fd565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a4e82610a25565b9050919050565b610a5e81610a44565b8114610a68575f80fd5b50565b5f81519050610a7981610a55565b92915050565b5f60208284031215610a9457610a936108e9565b5b5f610aa184828501610a6b565b91505092915050565b610ab381610a44565b82525050565b5f602082019050610acc5f830184610aaa565b92915050565b5f60208284031215610ae757610ae66108e9565b5b5f610af48482850161090c565b91505092915050565b5f610b07826108ed565b9150610b12836108ed565b9250828201905080821115610b2a57610b29610970565b5b92915050565b5f604082019050610b435f830185610aaa565b610b5060208301846109fd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610bb681610a44565b82525050565b610bc5816108ed565b82525050565b5f8115159050919050565b610bdf81610bcb565b82525050565b60c082015f820151610bf95f850182610bad565b506020820151610c0c6020850182610bbc565b506040820151610c1f6040850182610bbc565b506060820151610c326060850182610bbc565b506080820151610c456080850182610bd6565b5060a0820151610c5860a0850182610bbc565b50505050565b5f610c698383610be5565b60c08301905092915050565b5f602082019050919050565b5f610c8b82610b84565b610c958185610b8e565b9350610ca083610b9e565b805f5b83811015610cd0578151610cb78882610c5e565b9750610cc283610c75565b925050600181019050610ca3565b5085935050505092915050565b5f6020820190508181035f830152610cf58184610c81565b905092915050565b610d0681610bcb565b8114610d10575f80fd5b50565b5f81519050610d2181610cfd565b92915050565b5f60208284031215610d3c57610d3b6108e9565b5b5f610d4984828501610d13565b91505092915050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610d7e82610d52565b610d888185610d5c565b9350610d98818560208601610d66565b80840191505092915050565b5f610daf8284610d74565b91508190509291505056fe',
6
+ },
7
+ inputType: {
8
+ 1: ['uint256 maxLength, uint256 skip, uint256 limit'],
9
+ },
10
+ outputTypeHr: {
11
+ 1: [
12
+ 'ReturnData[] memory returnData',
13
+ 'struct ReturnData { address gauge; uint256 weight; uint256 relativeWeight; uint256 futureRelativeWeight; bool isKilled; uint256 chainId; }',
14
+ ],
15
+ },
16
+ outputType: {
17
+ 1: [
18
+ {
19
+ type: 'tuple[]',
20
+ name: 'returnData',
21
+ components: [
22
+ { type: 'address', name: 'gauge' },
23
+ { type: 'uint256', name: 'weight' },
24
+ { type: 'uint256', name: 'relativeWeight' },
25
+ { type: 'uint256', name: 'futureRelativeWeight' },
26
+ { type: 'bool', name: 'isKilled' },
27
+ { type: 'uint256', name: 'chainId' },
28
+ ],
29
+ },
30
+ ],
31
+ },
32
+ }
33
+
34
+ export default batchCurveGauges
@@ -0,0 +1,67 @@
1
+ import type { BatchMetaData } from '../types.js'
2
+
3
+ const commonBytecode =
4
+ '0x608060405234801561000f575f80fd5b5060405161130938038061130983398181016040528101906100319190610dd1565b5f815190505f8167ffffffffffffffff81111561005157610050610c3b565b5b60405190808252806020026020018201604052801561008a57816020015b610077610b9e565b81526020019060019003908161006f5790505b5090505f5b8281101561038f5761009f610b9e565b5f8583815181106100b3576100b2610e18565b5b6020026020010151905080825f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f8173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101629190610e45565b90508083602001515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101ae816103be60201b60201c565b856020015160200186602001516040018760200151606001838152508390528390525050505f6101e3826105a360201b60201c565b90505f815190505f8167ffffffffffffffff81111561020557610204610c3b565b5b60405190808252806020026020018201604052801561023e57816020015b61022b610bda565b8152602001906001900390816102235790505b5090505f5b828110156103535783818151811061025e5761025d610e18565b5b602002602001015182828151811061027957610278610e18565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102df8482815181106102cc576102cb610e18565b5b60200260200101516103be60201b60201c565b8484815181106102f2576102f1610e18565b5b60200260200101516020018585815181106103105761030f610e18565b5b602002602001015160400186868151811061032e5761032d610e18565b5b6020026020010151606001838152508390528390525050508080600101915050610243565b508086604001819052508588888151811061037157610370610e18565b5b6020026020010181905250505050505050808060010191505061008f565b505f816040516020016103a29190611128565b6040516020818303038152906040529050602081018059038082f35b6060805f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561043e575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561059c575f8490508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561048f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104b791906111ea565b93508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610501573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061052991906111ea565b92508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610574573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610598919061125b565b9150505b9193909250565b60605f600467ffffffffffffffff8111156105c1576105c0610c3b565b5b6040519080825280602002602001820160405280156105ef5781602001602082028036833780820191505090505b5090505f808473ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527fa980497e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161069b91906112ca565b5f60405180830381855afa9150503d805f81146106d3576040519150601f19603f3d011682016040523d82523d5f602084013e6106d8565b606091505b50915091508180156106ea57505f8151115b1561086f578473ffffffffffffffffffffffffffffffffffffffff1663765337b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610738573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075c9190610e45565b835f8151811061076f5761076e610e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff16632621db2f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108169190610e45565b8360018151811061082a57610829610e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050829350505050610b01565b5f808673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f07546172000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161091891906112ca565b5f60405180830381855afa9150503d805f8114610950576040519150601f19603f3d011682016040523d82523d5f602084013e610955565b606091505b509150915081801561096757505f8151115b1561097e5761097b81610b0660201b60201c565b96505b61098e875f610b1360201b60201c565b855f815181106109a1576109a0610e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506109ec876001610b1360201b60201c565b85600181518110610a00576109ff610e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a4b876002610b1360201b60201c565b85600281518110610a5f57610a5e610e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610aaa876003610b1360201b60201c565b85600381518110610abe57610abd610e18565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084955050505050505b919050565b5f60208201519050919050565b5f8273ffffffffffffffffffffffffffffffffffffffff1663c6610657836040518263ffffffff1660e01b8152600401610b4d91906112ef565b602060405180830381865afa925050508015610b8757506040513d601f19601f82011682018060405250810190610b849190610e45565b60015b610b93575f9050610b98565b809150505b92915050565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff168152602001610bcd610bda565b8152602001606081525090565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610c7182610c2b565b810181811067ffffffffffffffff82111715610c9057610c8f610c3b565b5b80604052505050565b5f610ca2610c16565b9050610cae8282610c68565b919050565b5f67ffffffffffffffff821115610ccd57610ccc610c3b565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d0b82610ce2565b9050919050565b610d1b81610d01565b8114610d25575f80fd5b50565b5f81519050610d3681610d12565b92915050565b5f610d4e610d4984610cb3565b610c99565b90508083825260208201905060208402830185811115610d7157610d70610cde565b5b835b81811015610d9a5780610d868882610d28565b845260208401935050602081019050610d73565b5050509392505050565b5f82601f830112610db857610db7610c27565b5b8151610dc8848260208601610d3c565b91505092915050565b5f60208284031215610de657610de5610c1f565b5b5f82015167ffffffffffffffff811115610e0357610e02610c23565b5b610e0f84828501610da4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610e5a57610e59610c1f565b5b5f610e6784828501610d28565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610ea281610d01565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610eda82610ea8565b610ee48185610eb2565b9350610ef4818560208601610ec2565b610efd81610c2b565b840191505092915050565b5f819050919050565b610f1a81610f08565b82525050565b5f608083015f830151610f355f860182610e99565b5060208301518482036020860152610f4d8282610ed0565b91505060408301518482036040860152610f678282610ed0565b9150506060830151610f7c6060860182610f11565b508091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f610fbb8383610f20565b905092915050565b5f602082019050919050565b5f610fd982610f87565b610fe38185610f91565b935083602082028501610ff585610fa1565b805f5b8581101561103057848403895281516110118582610fb0565b945061101c83610fc3565b925060208a01995050600181019050610ff8565b50829750879550505050505092915050565b5f606083015f8301516110575f860182610e99565b506020830151848203602086015261106f8282610f20565b915050604083015184820360408601526110898282610fcf565b9150508091505092915050565b5f6110a18383611042565b905092915050565b5f602082019050919050565b5f6110bf82610e70565b6110c98185610e7a565b9350836020820285016110db85610e8a565b805f5b8581101561111657848403895281516110f78582611096565b9450611102836110a9565b925060208a019950506001810190506110de565b50829750879550505050505092915050565b5f6020820190508181035f83015261114081846110b5565b905092915050565b5f80fd5b5f67ffffffffffffffff82111561116657611165610c3b565b5b61116f82610c2b565b9050602081019050919050565b5f61118e6111898461114c565b610c99565b9050828152602081018484840111156111aa576111a9611148565b5b6111b5848285610ec2565b509392505050565b5f82601f8301126111d1576111d0610c27565b5b81516111e184826020860161117c565b91505092915050565b5f602082840312156111ff576111fe610c1f565b5b5f82015167ffffffffffffffff81111561121c5761121b610c23565b5b611228848285016111bd565b91505092915050565b61123a81610f08565b8114611244575f80fd5b50565b5f8151905061125581611231565b92915050565b5f602082840312156112705761126f610c1f565b5b5f61127d84828501611247565b91505092915050565b5f81519050919050565b5f81905092915050565b5f6112a482611286565b6112ae8185611290565b93506112be818560208601610ec2565b80840191505092915050565b5f6112d5828461129a565b915081905092915050565b6112e981610f08565b82525050565b5f6020820190506113025f8301846112e0565b9291505056fe'
5
+
6
+ const oldSolcBytecode =
7
+ '0x608060405234801561001057600080fd5b5060405161141c38038061141c83398181016040528101906100329190610e21565b60008151905060008167ffffffffffffffff81111561005457610053610c80565b5b60405190808252806020026020018201604052801561008d57816020015b61007a610bdb565b8152602001906001900390816100725790505b50905060005b828110156103aa576100a3610bdb565b60008583815181106100b8576100b7610e6a565b5b6020026020010151905080826000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008173ffffffffffffffffffffffffffffffffffffffff166382c630666040518163ffffffff1660e01b8152600401602060405180830381865afa158015610147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016b9190610e99565b90508083602001516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101b8816103da60201b60201c565b8560200151602001866020015160400187602001516060018381525083905283905250505060006101ee826105cb60201b60201c565b905060008151905060008167ffffffffffffffff81111561021257610211610c80565b5b60405190808252806020026020018201604052801561024b57816020015b610238610c18565b8152602001906001900390816102305790505b50905060005b828110156103685783818151811061026c5761026b610e6a565b5b602002602001015182828151811061028757610286610e6a565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102ee8482815181106102db576102da610e6a565b5b60200260200101516103da60201b60201c565b84848151811061030157610300610e6a565b5b602002602001015160200185858151811061031f5761031e610e6a565b5b602002602001015160400186868151811061033d5761033c610e6a565b5b602002602001015160600183815250839052839052505050808061036090610eff565b915050610251565b508086604001819052508588888151811061038657610385610e6a565b5b602002602001018190525050505050505080806103a290610eff565b915050610093565b506000816040516020016103be9190611229565b6040516020818303038152906040529050602081018059038082f35b60608060008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561045b575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156105c45760008490508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156104b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906104d991906112f1565b93508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610526573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061054f91906112f1565b92508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c09190611366565b9150505b9193909250565b60606000600467ffffffffffffffff8111156105ea576105e9610c80565b5b6040519080825280602002602001820160405280156106185781602001602082028036833780820191505090505b5090506000808473ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527fa980497e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106c591906113da565b600060405180830381855afa9150503d8060008114610700576040519150601f19603f3d011682016040523d82523d6000602084013e610705565b606091505b5091509150818015610718575060008151115b156108a2578473ffffffffffffffffffffffffffffffffffffffff1663765337b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078c9190610e99565b836000815181106107a05761079f610e6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff16632621db2f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108499190610e99565b8360018151811061085d5761085c610e6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050829350505050610b3b565b6000808673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f07546172000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161094c91906113da565b600060405180830381855afa9150503d8060008114610987576040519150601f19603f3d011682016040523d82523d6000602084013e61098c565b606091505b509150915081801561099f575060008151115b156109b6576109b381610b4060201b60201c565b96505b6109c7876000610b4e60201b60201c565b856000815181106109db576109da610e6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a26876001610b4e60201b60201c565b85600181518110610a3a57610a39610e6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a85876002610b4e60201b60201c565b85600281518110610a9957610a98610e6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610ae4876003610b4e60201b60201c565b85600381518110610af857610af7610e6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084955050505050505b919050565b600060208201519050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663c6610657836040518263ffffffff1660e01b8152600401610b899190611400565b602060405180830381865afa925050508015610bc357506040513d601f19601f82011682018060405250810190610bc09190610e99565b60015b610bd05760009050610bd5565b809150505b92915050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001610c0b610c18565b8152602001606081525090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610cb882610c6f565b810181811067ffffffffffffffff82111715610cd757610cd6610c80565b5b80604052505050565b6000610cea610c56565b9050610cf68282610caf565b919050565b600067ffffffffffffffff821115610d1657610d15610c80565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d5782610d2c565b9050919050565b610d6781610d4c565b8114610d7257600080fd5b50565b600081519050610d8481610d5e565b92915050565b6000610d9d610d9884610cfb565b610ce0565b90508083825260208201905060208402830185811115610dc057610dbf610d27565b5b835b81811015610de95780610dd58882610d75565b845260208401935050602081019050610dc2565b5050509392505050565b600082601f830112610e0857610e07610c6a565b5b8151610e18848260208601610d8a565b91505092915050565b600060208284031215610e3757610e36610c60565b5b600082015167ffffffffffffffff811115610e5557610e54610c65565b5b610e6184828501610df3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610eaf57610eae610c60565b5b6000610ebd84828501610d75565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000610f0a82610ef5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f3c57610f3b610ec6565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610f7c81610d4c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fbc578082015181840152602081019050610fa1565b60008484015250505050565b6000610fd382610f82565b610fdd8185610f8d565b9350610fed818560208601610f9e565b610ff681610c6f565b840191505092915050565b61100a81610ef5565b82525050565b60006080830160008301516110286000860182610f73565b50602083015184820360208601526110408282610fc8565b9150506040830151848203604086015261105a8282610fc8565b915050606083015161106f6060860182611001565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006110b28383611010565b905092915050565b6000602082019050919050565b60006110d28261107a565b6110dc8185611085565b9350836020820285016110ee85611096565b8060005b8581101561112a578484038952815161110b85826110a6565b9450611116836110ba565b925060208a019950506001810190506110f2565b50829750879550505050505092915050565b60006060830160008301516111546000860182610f73565b506020830151848203602086015261116c8282611010565b9150506040830151848203604086015261118682826110c7565b9150508091505092915050565b600061119f838361113c565b905092915050565b6000602082019050919050565b60006111bf82610f47565b6111c98185610f52565b9350836020820285016111db85610f63565b8060005b8581101561121757848403895281516111f88582611193565b9450611203836111a7565b925060208a019950506001810190506111df565b50829750879550505050505092915050565b6000602082019050818103600083015261124381846111b4565b905092915050565b600080fd5b600067ffffffffffffffff82111561126b5761126a610c80565b5b61127482610c6f565b9050602081019050919050565b600061129461128f84611250565b610ce0565b9050828152602081018484840111156112b0576112af61124b565b5b6112bb848285610f9e565b509392505050565b600082601f8301126112d8576112d7610c6a565b5b81516112e8848260208601611281565b91505092915050565b60006020828403121561130757611306610c60565b5b600082015167ffffffffffffffff81111561132557611324610c65565b5b611331848285016112c3565b91505092915050565b61134381610ef5565b811461134e57600080fd5b50565b6000815190506113608161133a565b92915050565b60006020828403121561137c5761137b610c60565b5b600061138a84828501611351565b91505092915050565b600081519050919050565b600081905092915050565b60006113b482611393565b6113be818561139e565b93506113ce818560208601610f9e565b80840191505092915050565b60006113e682846113a9565b915081905092915050565b6113fa81610ef5565b82525050565b600060208201905061141560008301846113f1565b9291505056fe'
8
+
9
+ const commonInputType = ['address[] gauges']
10
+
11
+ const commonOutputTypeHr = [
12
+ 'ReturnData[] returnData',
13
+ 'struct ReturnData { address gauge; Token lp; Token[] coins }',
14
+ 'struct Token { address _address; string name; string symbol; uint256 decimals; }',
15
+ ]
16
+
17
+ const commonOutputType = [
18
+ {
19
+ type: 'tuple[]',
20
+ name: 'returnData',
21
+ components: [
22
+ { type: 'address', name: 'gauge' },
23
+ {
24
+ type: 'tuple',
25
+ name: 'lp',
26
+ components: [
27
+ { type: 'address', name: '_address' },
28
+ { type: 'string', name: 'name' },
29
+ { type: 'string', name: 'symbol' },
30
+ { type: 'uint256', name: 'decimals' },
31
+ ],
32
+ },
33
+ {
34
+ type: 'tuple[]',
35
+ name: 'coins',
36
+ components: [
37
+ { type: 'address', name: '_address' },
38
+ { type: 'string', name: 'name' },
39
+ { type: 'string', name: 'symbol' },
40
+ { type: 'uint256', name: 'decimals' },
41
+ ],
42
+ },
43
+ ],
44
+ },
45
+ ]
46
+
47
+ // chainId 0 for all chain
48
+ // explicit chainId for exception
49
+ const batchGaugesMetadata: BatchMetaData = {
50
+ bytecode: {
51
+ 0: commonBytecode,
52
+ 250: oldSolcBytecode,
53
+ 42220: oldSolcBytecode,
54
+ 43114: oldSolcBytecode,
55
+ },
56
+ inputType: {
57
+ 0: commonInputType,
58
+ },
59
+ outputTypeHr: {
60
+ 0: commonOutputTypeHr,
61
+ },
62
+ outputType: {
63
+ 0: commonOutputType,
64
+ },
65
+ }
66
+
67
+ export default batchGaugesMetadata
package/src/index.ts CHANGED
@@ -51,3 +51,12 @@ export { default as getPendleApiData } from './strategies/pendle/getPendleApiDat
51
51
 
52
52
  /// --- END STATEGIES
53
53
  ///////////////////////////////////////////////////////////////
54
+
55
+ ////////////////////////////////////////////////////////////////
56
+ /// --- VOTEMARKET
57
+
58
+ // Curve
59
+ export { fetchCurveGauges } from './votemarket/curve/fetchCurveGauges.js'
60
+
61
+ /// --- END VOTEMARKET
62
+ ///////////////////////////////////////////////////////////////
@@ -1,23 +1,21 @@
1
- import { formatUnits, parseAbi, parseUnits, zeroAddress } from 'viem'
1
+ import { type Locker, ONE_YEAR, delegationWithId, lockers } from '@stake-dao/constants'
2
+ import { formatUnits, parseAbi, zeroAddress } from 'viem'
2
3
  import { mainnet } from 'viem/chains'
3
-
4
- import { ONE_YEAR, lockers, tokenWithId } from '@stake-dao/constants'
5
- import { delegationWithId } from '@stake-dao/constants'
6
- import { OneEther, Zero, getSdtInflationData } from '../../index.js'
7
- import { type Price } from '../../prices.js'
8
- import { type Call, multicall } from '../../utils.js'
9
- import { lockedAmountCallSideChain } from '../utils/index.js'
10
-
11
4
  import lockersMulticallAbi from '../../abis/lockersMulticall.js'
12
- import { type MultiChainCall, multichainMulticall } from '../../utils.js'
13
- import { getCherriesLeaderBoard } from '../utils/getCherriesLeaderBoard.js'
14
-
5
+ import { Zero, getSdtInflationData } from '../../index.js'
6
+ import type { Price } from '../../prices.js'
7
+ import { handlePromise } from '../../strategies/utils/promise.js'
8
+ import { type Call, type MultiChainCall, multicall, multichainMulticall } from '../../utils.js'
15
9
  import { extractFees, feeCalls } from '../utils/callsForLockers/feeCalls.js'
16
10
  import callsForLockers from '../utils/callsForLockers/index.js'
17
- import getBribesRewardsData from '../utils/getBribesRewardsData.js'
11
+ import getBribesRewardsData, { type TBribesRewards } from '../utils/getBribesRewardsData.js'
12
+ import { getCherriesLeaderBoard } from '../utils/getCherries.js'
18
13
  import getFees from '../utils/getFees.js'
19
14
  import getHttpCalls from '../utils/getHttpCalls.js'
15
+ import { lockedAmountCallSideChain } from '../utils/index.js'
20
16
  import substractFees from '../utils/substractFees.js'
17
+ import { parsePeg } from './parsePeg.js'
18
+ import { parseVoteBoosterData } from './parseVoteBoosterData.js'
21
19
 
22
20
  const callsForRewards = (gauge: string, rewards: any[]) =>
23
21
  rewards.map((r) => ({ address: gauge, name: 'reward_data', params: [r.address] }))
@@ -33,7 +31,7 @@ const callsForLockersSideChains = (lockerId: any, sideChains: any[]) => {
33
31
  }
34
32
 
35
33
  export const fetchLockers = async (provider: any, chainId: number, prices: Price[]) => {
36
- const chainLockers = lockers.filter((l) => l.chainId === chainId)
34
+ const chainLockers: Locker[] = lockers.filter((l) => l.chainId === chainId)
37
35
 
38
36
  const httpCalls = await getHttpCalls(chainId)
39
37
 
@@ -46,72 +44,60 @@ export const fetchLockers = async (provider: any, chainId: number, prices: Price
46
44
  lockersCalls.push(
47
45
  ...callsForLockers(
48
46
  locker.id,
49
- locker.token!.address,
50
- locker.sdToken!.address,
51
- locker.extensions.veToken,
52
- locker.extensions.depositor,
53
- locker.extensions.gaugeController,
54
- locker.extensions.gauge,
55
- locker.extensions.locker,
56
- locker.extensions.pool,
57
- locker.pegCalculator,
58
- locker.extensions.secondaryMarket,
59
- locker.extensions.voteBooster,
47
+ locker.token.address,
48
+ locker.sdToken.address,
49
+ locker.modules.veToken,
50
+ locker.modules.depositor,
51
+ locker.modules.gauge,
52
+ locker.modules.locker,
53
+ locker.secondaryMarket,
54
+ locker.voteBooster,
60
55
  ),
61
56
  )
62
- lockersRewardsCalls.push(...callsForRewards(locker.extensions.gauge, locker.rewards))
57
+ lockersRewardsCalls.push(...callsForRewards(locker.modules.gauge, locker.rewards))
63
58
  if (locker.extensions.sideChains) {
64
59
  lockersSideChainsCalls.push(...callsForLockersSideChains(locker.id, locker.extensions.sideChains))
65
60
  }
66
61
 
67
62
  // Add fee calls into another array
68
63
  // We will concat it with #lockersRewardsCalls to do only one multicall, the concat will push all fee calls at the end
69
- lockersFeeCalls.push(...feeCalls(locker.id, locker.extensions.accumulator))
64
+ lockersFeeCalls.push(...feeCalls(locker.id, locker.modules.accumulator))
70
65
  }
71
66
 
72
- const [rawLockersData, rawLockersSideChainData] = (
73
- await Promise.allSettled([
67
+ const [rawLockersData, rawLockersSideChainData, rawLockersRewardsData] = await handlePromise(
68
+ [
74
69
  multicall(provider, lockersCalls.concat(lockersFeeCalls), lockersMulticallAbi),
75
70
  multichainMulticall(lockersSideChainsCalls, lockersMulticallAbi),
76
- ])
77
- ).map((result) => (result.status === 'fulfilled' ? result.value : result.reason))
71
+ multicall(
72
+ provider,
73
+ lockersRewardsCalls,
74
+ parseAbi([
75
+ 'function reward_data(address) external view returns (address,address,uint256,uint256,uint256,uint256)',
76
+ ]),
77
+ ),
78
+ ],
79
+ 'lockerMulticalls',
80
+ )
78
81
 
79
82
  const lockersFees = extractFees(chainLockers, rawLockersData)
80
83
 
81
- const [sdtInflationData, rawLockersRewardsData]: any = await Promise.all([
82
- getSdtInflationData(provider),
83
- multicall(
84
- provider,
85
- lockersRewardsCalls,
86
- parseAbi([
87
- 'function reward_data(address) external view returns (address,address,uint256,uint256,uint256,uint256)',
88
- ]),
89
- ),
90
- ])
84
+ const sdtInflationData = chainId === mainnet.id ? await getSdtInflationData(provider) : undefined
91
85
 
92
86
  const lockerData = chainLockers.map(async (locker) => {
93
87
  const lockerCallsLength = callsForLockers(
94
88
  locker.id,
95
- locker.token!.address,
96
- locker.sdToken!.address,
97
- locker.extensions.veToken,
98
- locker.extensions.depositor,
99
- locker.extensions.gaugeController,
100
- locker.extensions.gauge,
101
- locker.extensions.locker,
102
- locker.extensions.pool,
103
- locker.pegCalculator,
104
- locker.extensions.secondaryMarket,
105
- locker.extensions.voteBooster,
89
+ locker.token.address,
90
+ locker.sdToken.address,
91
+ locker.modules.veToken,
92
+ locker.modules.depositor,
93
+ locker.modules.gauge,
94
+ locker.modules.locker,
95
+ locker.secondaryMarket,
96
+ locker.voteBooster,
106
97
  ).length
107
98
  const chunkedRawLockersData = rawLockersData.splice(0, lockerCallsLength)
108
99
 
109
- let gaugeRelativeWeight = '0'
110
- let gaugeTotalWeight = '0'
111
- let gaugeWeight = '0'
112
- let nextEffectiveTimestamp = '0'
113
-
114
- let airdropGraph: any = undefined
100
+ let airdropGraph: any
115
101
  if (locker.id === 'cake') {
116
102
  airdropGraph = await getCherriesLeaderBoard()
117
103
  }
@@ -119,190 +105,87 @@ export const fetchLockers = async (provider: any, chainId: number, prices: Price
119
105
  const lockerFee = lockersFees.find((l) => l.lockerId === locker.id)
120
106
  const fees = getFees(locker, lockerFee)
121
107
 
122
- const tokenLocked = formatUnits(chunkedRawLockersData[0].result[0], 0)
123
- const veBalanceOfLockerBN = chunkedRawLockersData[1].result
124
- const veBalanceOfLocker = formatUnits(veBalanceOfLockerBN, locker.token!.decimals)
125
- const totalTokenLocked = formatUnits(chunkedRawLockersData[2].result, 0)
126
- const veTotalSupplyBN = chunkedRawLockersData[3].result
127
- const veTotalSupply = formatUnits(veTotalSupplyBN, locker.token!.decimals)
108
+ const tokenLocked = formatUnits(chunkedRawLockersData[0].result[0], locker.token.decimals)
109
+ const veBalanceOfLocker = formatUnits(chunkedRawLockersData[1].result, locker.token.decimals)
110
+ const totalTokenLocked = formatUnits(chunkedRawLockersData[2].result, locker.token.decimals)
111
+ const veTotalSupply = formatUnits(chunkedRawLockersData[3].result, locker.token.decimals)
128
112
  const lockIncentive = formatUnits(chunkedRawLockersData[4].result, 0)
129
- const incentiveAmountInToken = formatUnits(chunkedRawLockersData[5].result, 0)
130
- if (chainId === mainnet.id) {
131
- gaugeRelativeWeight = formatUnits(chunkedRawLockersData[6].result, 0)
132
- gaugeTotalWeight = formatUnits(chunkedRawLockersData[7].result, 0)
133
- gaugeWeight = formatUnits(chunkedRawLockersData[8].result, 0)
134
- nextEffectiveTimestamp = formatUnits(chunkedRawLockersData[9].result, 0)
135
- }
113
+ const incentiveAmountInToken = formatUnits(chunkedRawLockersData[5].result, locker.token.decimals)
136
114
 
137
- const totalSupplyStakedStr =
138
- locker.extensions.gauge !== zeroAddress ? formatUnits(chunkedRawLockersData[10].result, 0) : '0'
139
115
  const totalSupplyStaked =
140
- locker.extensions.gauge !== zeroAddress
141
- ? formatUnits(chunkedRawLockersData[10].result, locker.token!.decimals)
142
- : '0'
143
-
144
- const gaugeWorkingSupplyStr =
145
- locker.chainId === mainnet.id && locker.extensions.gauge !== zeroAddress
146
- ? formatUnits(chunkedRawLockersData[11].result, 0)
147
- : '0'
116
+ locker.modules.gauge !== zeroAddress ? formatUnits(chunkedRawLockersData[6].result, locker.token.decimals) : '0'
148
117
  const gaugeWorkingSupply =
149
- locker.chainId === mainnet.id && locker.extensions.gauge !== zeroAddress
150
- ? formatUnits(chunkedRawLockersData[11].result, locker.token!.decimals)
118
+ locker.chainId === mainnet.id && locker.modules.gauge !== zeroAddress
119
+ ? formatUnits(chunkedRawLockersData[7].result, locker.token.decimals)
151
120
  : '0'
152
- const amountTokenNotLock = formatUnits(chunkedRawLockersData[12].result, 0)
153
- const veSdtTotalSupply = chainId === mainnet.id ? chunkedRawLockersData[13].result : '0'
154
-
155
- const voteBoosterBalance = locker.extensions.voteBooster
156
- ? {
157
- token: formatUnits(chunkedRawLockersData[14].result, locker.token!.decimals),
158
- sdToken: formatUnits(chunkedRawLockersData[15].result, locker.sdToken!.decimals),
159
- staked:
160
- locker.extensions.gauge !== zeroAddress
161
- ? formatUnits(chunkedRawLockersData[16].result, locker.sdToken!.decimals)
162
- : '0',
163
- working:
164
- locker.chainId === mainnet.id && locker.extensions.gauge !== zeroAddress
165
- ? formatUnits(chunkedRawLockersData[17].result, locker.sdToken!.decimals)
166
- : '0',
167
- }
168
- : undefined
169
-
170
- const voteBoosterBoost = locker.extensions.voteBooster
171
- ? Number(voteBoosterBalance!.working) > 0 && Number(voteBoosterBalance!.staked) > 0
172
- ? Number(voteBoosterBalance!.working) / (Number(voteBoosterBalance!.staked) * 0.4)
173
- : 1
174
- : undefined
175
-
176
- const voteBooster = locker.extensions.voteBooster
177
- ? { balance: voteBoosterBalance, boost: voteBoosterBoost }
178
- : undefined
179
-
180
- const rawPeg =
181
- locker.extensions.pool !== zeroAddress
182
- ? chunkedRawLockersData[locker.extensions.voteBooster ? 18 : 14].result
183
- : undefined
184
- const veTokenRate =
185
- locker.id === 'mav' ? formatUnits(chunkedRawLockersData[15].result[0], locker.token!.decimals) : '4'
121
+ const amountTokenNotLock = formatUnits(chunkedRawLockersData[8].result, locker.token.decimals)
122
+ const veSdtTotalSupply = chainId === mainnet.id ? chunkedRawLockersData[9].result : '0'
186
123
 
187
- const futureWeight =
188
- BigInt(gaugeTotalWeight) > Zero ? (BigInt(gaugeWeight) * OneEther * OneEther) / BigInt(gaugeTotalWeight) : Zero
124
+ const voteBooster = parseVoteBoosterData(locker, chunkedRawLockersData)
125
+ const peg = parsePeg(locker, chunkedRawLockersData)
126
+
127
+ const veTokenRate =
128
+ locker.id === 'mav' ? formatUnits(chunkedRawLockersData[11].result[0], locker.token.decimals) : '4'
189
129
 
190
130
  const sideChains = locker.extensions.sideChains?.map((sideChain) => {
191
131
  const tokenLocked = rawLockersSideChainData[sideChain.chainId].shift().result
192
132
  return {
193
133
  ...sideChain,
194
- tokenLocked: formatUnits(locker.id === 'mav' ? tokenLocked[0] : tokenLocked, 0),
195
- veBalanceOfLocker: formatUnits(rawLockersSideChainData[sideChain.chainId].shift().result, 0),
196
- veTotalSupply: formatUnits(rawLockersSideChainData[sideChain.chainId].shift().result, locker.token!.decimals),
134
+ tokenLocked: formatUnits(locker.id === 'mav' ? tokenLocked[0] : tokenLocked, locker.token.decimals),
135
+ veBalanceOfLocker: formatUnits(
136
+ rawLockersSideChainData[sideChain.chainId].shift().result,
137
+ locker.token.decimals,
138
+ ),
139
+ veTotalSupply: formatUnits(rawLockersSideChainData[sideChain.chainId].shift().result, locker.token.decimals),
197
140
  }
198
141
  })
199
142
 
200
- let parsedPeg = rawPeg
201
- switch (locker.id) {
202
- case 'bal': {
203
- parsedPeg = rawPeg[1] * BigInt(-1)
204
- break
205
- }
206
- case 'cake': {
207
- parsedPeg = rawPeg[0]
208
- break
209
- }
210
- }
211
- const peg =
212
- rawPeg && parsedPeg ? formatUnits(parsedPeg / parseUnits(locker.pegCalculator.basedOn.toString(), 0), 18) : '-'
213
-
214
- const tokenPrice = prices.find((p) => p.address === locker.token!.address)
143
+ const tokenPrice = prices.find((p) => p.address === locker.token.address)
215
144
  const tokenPriceInUsd = tokenPrice ? tokenPrice.usdPrice : 0
216
145
  const sdTokenPriceInUsd = peg !== '-' ? tokenPriceInUsd * Number(peg) : tokenPriceInUsd
217
146
 
218
- const tvl = totalSupplyStaked ? Number(totalSupplyStaked) * sdTokenPriceInUsd : undefined
147
+ const tvl = totalSupplyStaked ? Number(totalSupplyStaked) * sdTokenPriceInUsd : 0
219
148
 
220
149
  // Rewards APR
221
150
  const rewardsData = locker.rewards.map((r) => {
222
151
  const rawData = rawLockersRewardsData.shift().result
223
152
  const rewardPrice = prices.find((p) => p.address === r.address)?.usdPrice || 0
224
153
 
225
- const periodFinish = rawData ? rawData[2] : Zero
226
- const isFinished = Math.floor(Date.now() / 1000) > Number(periodFinish)
154
+ const periodFinish = Number(formatUnits(rawData ? rawData[2] : Zero, 0))
155
+ const streaming = periodFinish > Math.floor(Date.now() / 1000)
227
156
 
228
157
  const rate = rawData ? rawData[3] : Zero
229
158
  const oneYearRate = rate * BigInt(ONE_YEAR)
230
- const oneYearRewardInUsd = parseUnits(`${rewardPrice}`, locker.token!.decimals) * oneYearRate
231
-
232
- let maxApr = 0
233
- switch (locker.id) {
234
- case 'mav': {
235
- const MAV_AIRDROP = 10_000_000
236
- const veMavBalanceOfLocker =
237
- Number(veBalanceOfLocker) + sideChains?.reduce((acc, value) => acc + Number(value.veBalanceOfLocker), 0)
238
- const veMavTotalSupply =
239
- Number(veTotalSupply) + sideChains?.reduce((acc, value) => acc + Number(value.veTotalSupply), 0)
240
-
241
- const mavAirdropStakeDaoShare = MAV_AIRDROP * (veMavBalanceOfLocker / veMavTotalSupply)
242
- const airdropPerSdMav = mavAirdropStakeDaoShare / (veMavBalanceOfLocker / Number(veTokenRate))
243
-
244
- maxApr = airdropPerSdMav
245
- break
246
- }
247
- default: {
248
- if (isFinished) {
249
- maxApr = 0
250
- } else {
251
- maxApr =
252
- rewardPrice && (tvl || 0) > 0
253
- ? ((Number(formatUnits(oneYearRate, r.decimals)) * rewardPrice) / tvl!) * 100
254
- : 0
255
- }
256
- break
257
- }
258
- }
259
-
260
- // Remove fees from APR
261
- maxApr = substractFees(locker.id, maxApr, lockerFee)
262
- if (r.id === 'sdt' && locker.id !== 'cake') {
263
- maxApr = isFinished ? 0 : maxApr
264
- }
265
- const minApr = maxApr / (locker.id !== 'cake' && r.address === tokenWithId('sdt')!.address ? 2.5 : 1)
266
159
 
267
- let futureMinApr = minApr
268
- let futureMaxApr = maxApr
160
+ let apr = streaming
161
+ ? rewardPrice && tvl > 0
162
+ ? ((Number(formatUnits(oneYearRate, r.decimals)) * rewardPrice) / tvl) * 100
163
+ : 0
164
+ : 0
269
165
 
270
- if (r.id === 'sdt' && locker.id !== 'cake') {
271
- const futureRate = (sdtInflationData.lockersSdtPerSecond * futureWeight) / OneEther
272
- const futureOneYearRate = futureRate * BigInt(ONE_YEAR)
273
- const futureOneYearRewardInUsd = rewardPrice * Number(formatUnits(futureOneYearRate, locker.token!.decimals))
274
-
275
- futureMaxApr = rewardPrice && (tvl || 0) > 0 ? (futureOneYearRewardInUsd / tvl!) * 100 : 0
276
- futureMinApr = futureMaxApr / 2.5
277
- }
166
+ // Remove fees from APR
167
+ apr = substractFees(locker.id, apr, lockerFee)
278
168
 
279
169
  return {
280
- token: r.address,
281
- distributor: rawData ? rawData[1] : zeroAddress,
282
- periodFinish: formatUnits(periodFinish, 0),
170
+ token: r,
171
+ price: rewardPrice,
172
+ apr,
173
+ streaming,
174
+ periodFinish,
283
175
  rate: formatUnits(rate, 0),
284
- oneYearRate: formatUnits(oneYearRate, 0),
285
- oneYearRewardInUsd: formatUnits(oneYearRewardInUsd, 0),
286
- lastUpdate: rawData ? Number(formatUnits(rawData[4], 0)) : 0,
287
- integral: rawData ? formatUnits(rawData[5], 0) : '0',
288
- minApr: minApr,
289
- maxApr: maxApr,
290
- futureMinApr,
291
- futureMaxApr,
292
- rewardPrice,
293
- isFinished,
176
+ lastUpdate: rawData ? formatUnits(rawData[4], 0) : '0',
294
177
  isAirdrop: r.isAirdrop,
295
178
  }
296
179
  })
297
180
 
298
181
  let bribeMinApr = 0
299
182
  let bribeMaxApr = 0
300
- let bribeRewards: any = undefined
183
+ let bribeRewards: TBribesRewards | undefined = undefined
301
184
 
302
185
  if (chainId === mainnet.id) {
303
186
  const data = getBribesRewardsData(
304
187
  locker,
305
- httpCalls?.bribesData,
188
+ httpCalls.bribesData,
306
189
  veSdtTotalSupply,
307
190
  totalSupplyStaked,
308
191
  veBalanceOfLocker,
@@ -314,7 +197,7 @@ export const fetchLockers = async (provider: any, chainId: number, prices: Price
314
197
  bribeRewards = data.bribeRewards
315
198
  } else if (locker.id === 'cake') {
316
199
  const apr =
317
- (httpCalls?.bribesData?.[delegationWithId('cake')!] || 0) *
200
+ (httpCalls.bribesData?.[delegationWithId('cake')!] || 0) *
318
201
  (Number.parseFloat(veBalanceOfLocker) / Number.parseFloat(totalSupplyStaked))
319
202
  bribeMinApr = apr
320
203
  bribeMaxApr = apr
@@ -322,57 +205,51 @@ export const fetchLockers = async (provider: any, chainId: number, prices: Price
322
205
  bribeMinApr: apr,
323
206
  bribeMaxApr: apr,
324
207
  bribeAverageApr: apr,
325
- average: apr,
326
- minBoost: 0,
327
- maxBoost: 0,
208
+ minBoost: '0',
209
+ maxBoost: '0',
328
210
  hideBoostTab: true,
329
211
  token: 'sdcake',
330
212
  }
331
213
  }
332
214
 
333
215
  // Total APR
334
- const minRewardsAprs = rewardsData.reduce((x, y) => x + y.minApr, 0) + bribeMinApr
335
- const maxRewardsAprs = rewardsData.reduce((x, y) => x + y.maxApr, 0) + bribeMaxApr
216
+ const minRewardsAprs = rewardsData.reduce((x, y) => x + y.apr, 0) + bribeMinApr
217
+ const maxRewardsAprs = rewardsData.reduce((x, y) => x + y.apr, 0) + bribeMaxApr
336
218
 
337
219
  // Streaming status
338
- const streaming = rewardsData.some((r) => !r.isFinished)
220
+ const streaming = rewardsData.some((r) => r.streaming)
339
221
  const alternativeYields = JSON.parse(JSON.stringify(locker.alternativeYields || {})) // parse and stringify to avoid extensible issue
340
- if (httpCalls?.cvgAprs?.[locker.extensions.gauge]) {
222
+ if (httpCalls.cvgAprs?.[locker.modules.gauge]) {
341
223
  alternativeYields.convergenceSdToken = {
342
- label: locker.sdToken!.symbol,
224
+ label: locker.sdToken.symbol,
343
225
  platform: 'Convergence',
344
226
  href: 'https://app.cvg.finance/',
345
- apr: httpCalls.cvgAprs[locker.extensions.gauge].totalApr,
227
+ apr: httpCalls.cvgAprs[locker.modules.gauge].totalApr,
346
228
  }
347
229
  }
348
230
 
349
- if (httpCalls?.cvgAprs?.[locker.extensions.strategyGauge!]) {
350
- alternativeYields[`convergence${locker.sdToken!.symbol}Pool`] = {
351
- label: `${locker.sdToken!.symbol}/${locker.token!.symbol}`,
231
+ if (locker.extensions.strategyGauge && httpCalls.cvgAprs?.[locker.extensions.strategyGauge]) {
232
+ alternativeYields[`convergence${locker.sdToken.symbol}Pool`] = {
233
+ label: `${locker.sdToken.symbol}/${locker.token.symbol}`,
352
234
  platform: 'Convergence',
353
235
  href: 'https://app.cvg.finance/',
354
- apr: httpCalls.cvgAprs[locker.extensions.strategyGauge!].totalApr,
236
+ apr: locker.extensions.strategyGauge ? httpCalls.cvgAprs[locker.extensions.strategyGauge].totalApr : 0,
355
237
  }
356
238
  }
357
239
 
358
240
  return {
359
241
  ...locker,
242
+ rewards: rewardsData,
360
243
  fees,
361
244
  tokenLocked: tokenLocked,
362
- veBalanceOfLocker: formatUnits(veBalanceOfLockerBN, 0),
245
+ veBalanceOfLocker: veBalanceOfLocker,
363
246
  totalTokenLocked: totalTokenLocked,
364
- veTotalSupply: formatUnits(veTotalSupplyBN, 0),
247
+ veTotalSupply: veTotalSupply,
365
248
  lockIncentive: lockIncentive,
366
249
  incentiveAmountInToken: incentiveAmountInToken,
367
- gaugeRelativeWeight: gaugeRelativeWeight,
368
- gaugeTotalWeight: gaugeTotalWeight,
369
- gaugeWeight: gaugeWeight,
370
- futureWeight: formatUnits(futureWeight, 16),
371
- gaugeWorkingSupply: gaugeWorkingSupplyStr,
372
- nextEffectiveTimestamp: nextEffectiveTimestamp,
373
- totalSupplyStaked: totalSupplyStakedStr,
250
+ gaugeWorkingSupply: gaugeWorkingSupply,
251
+ totalSupplyStaked: totalSupplyStaked,
374
252
  amountTokenNotLock: amountTokenNotLock,
375
- rewardsData,
376
253
  bribeRewards,
377
254
  apr: [minRewardsAprs, maxRewardsAprs],
378
255
  streaming,
@@ -392,9 +269,9 @@ export const fetchLockers = async (provider: any, chainId: number, prices: Price
392
269
  })
393
270
 
394
271
  return {
395
- parsed: (await Promise.allSettled(lockerData)).map((r) => (r.status === 'fulfilled' ? r.value : r.reason)),
272
+ parsed: await Promise.all(lockerData),
396
273
  sdt:
397
- chainId === mainnet.id
274
+ chainId === mainnet.id && sdtInflationData
398
275
  ? {
399
276
  lockersSdtPerBlock: formatUnits(sdtInflationData.lockersSdtPerBlock, 18),
400
277
  lockersSdtPerSecond: formatUnits(sdtInflationData.lockersSdtPerSecond, 18),