@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.
- package/dist/esm/abis/lockersMulticall.js +17 -0
- package/dist/esm/abis/lockersMulticall.js.map +1 -1
- package/dist/esm/bytecodes/index.js +13 -0
- package/dist/esm/bytecodes/index.js.map +1 -1
- package/dist/esm/bytecodes/votemarket/batchCurveGauges.js +32 -0
- package/dist/esm/bytecodes/votemarket/batchCurveGauges.js.map +1 -0
- package/dist/esm/bytecodes/votemarket/batchGaugesMetadata.js +58 -0
- package/dist/esm/bytecodes/votemarket/batchGaugesMetadata.js.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lockers/fetch/index.js +67 -167
- package/dist/esm/lockers/fetch/index.js.map +1 -1
- package/dist/esm/lockers/fetch/parsePeg.js +21 -0
- package/dist/esm/lockers/fetch/parsePeg.js.map +1 -0
- package/dist/esm/lockers/fetch/parseVoteBoosterData.js +28 -0
- package/dist/esm/lockers/fetch/parseVoteBoosterData.js.map +1 -0
- package/dist/esm/lockers/utils/callsForLockers/depositorCalls.js +5 -5
- package/dist/esm/lockers/utils/callsForLockers/depositorCalls.js.map +1 -1
- package/dist/esm/lockers/utils/callsForLockers/feeCalls.js +13 -11
- package/dist/esm/lockers/utils/callsForLockers/feeCalls.js.map +1 -1
- package/dist/esm/lockers/utils/callsForLockers/index.js +2 -4
- package/dist/esm/lockers/utils/callsForLockers/index.js.map +1 -1
- package/dist/esm/lockers/utils/callsForLockers/pegCalls.js +9 -11
- package/dist/esm/lockers/utils/callsForLockers/pegCalls.js.map +1 -1
- package/dist/esm/lockers/utils/callsForLockers/veCalls.js +4 -4
- package/dist/esm/lockers/utils/callsForLockers/veCalls.js.map +1 -1
- package/dist/esm/lockers/utils/endpoints.js +2 -22
- package/dist/esm/lockers/utils/endpoints.js.map +1 -1
- package/dist/esm/lockers/utils/getBribesRewardsData.js +0 -1
- package/dist/esm/lockers/utils/getBribesRewardsData.js.map +1 -1
- package/dist/esm/lockers/utils/getCherries.js +34 -0
- package/dist/esm/lockers/utils/getCherries.js.map +1 -0
- package/dist/esm/lockers/utils/getHttpCalls.js +5 -7
- package/dist/esm/lockers/utils/getHttpCalls.js.map +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/votemarket/curve/config.js +6 -0
- package/dist/esm/votemarket/curve/config.js.map +1 -0
- package/dist/esm/votemarket/curve/fetchCurveGauges.js +86 -0
- package/dist/esm/votemarket/curve/fetchCurveGauges.js.map +1 -0
- package/dist/types/abis/lockersMulticall.d.ts +16 -0
- package/dist/types/abis/lockersMulticall.d.ts.map +1 -1
- package/dist/types/bytecodes/index.d.ts +2 -0
- package/dist/types/bytecodes/index.d.ts.map +1 -1
- package/dist/types/bytecodes/votemarket/batchCurveGauges.d.ts +4 -0
- package/dist/types/bytecodes/votemarket/batchCurveGauges.d.ts.map +1 -0
- package/dist/types/bytecodes/votemarket/batchGaugesMetadata.d.ts +4 -0
- package/dist/types/bytecodes/votemarket/batchGaugesMetadata.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lockers/fetch/index.d.ts +88 -2
- package/dist/types/lockers/fetch/index.d.ts.map +1 -1
- package/dist/types/lockers/fetch/parsePeg.d.ts +3 -0
- package/dist/types/lockers/fetch/parsePeg.d.ts.map +1 -0
- package/dist/types/lockers/fetch/parseVoteBoosterData.d.ts +13 -0
- package/dist/types/lockers/fetch/parseVoteBoosterData.d.ts.map +1 -0
- package/dist/types/lockers/utils/callsForLockers/depositorCalls.d.ts +2 -1
- package/dist/types/lockers/utils/callsForLockers/depositorCalls.d.ts.map +1 -1
- package/dist/types/lockers/utils/callsForLockers/feeCalls.d.ts +3 -1
- package/dist/types/lockers/utils/callsForLockers/feeCalls.d.ts.map +1 -1
- package/dist/types/lockers/utils/callsForLockers/index.d.ts +2 -1
- package/dist/types/lockers/utils/callsForLockers/index.d.ts.map +1 -1
- package/dist/types/lockers/utils/callsForLockers/pegCalls.d.ts +3 -2
- package/dist/types/lockers/utils/callsForLockers/pegCalls.d.ts.map +1 -1
- package/dist/types/lockers/utils/callsForLockers/veCalls.d.ts +2 -1
- package/dist/types/lockers/utils/callsForLockers/veCalls.d.ts.map +1 -1
- package/dist/types/lockers/utils/endpoints.d.ts +2 -2
- package/dist/types/lockers/utils/endpoints.d.ts.map +1 -1
- package/dist/types/lockers/utils/getBribesRewardsData.d.ts +10 -12
- package/dist/types/lockers/utils/getBribesRewardsData.d.ts.map +1 -1
- package/dist/types/lockers/utils/getCherries.d.ts +4 -0
- package/dist/types/lockers/utils/getCherries.d.ts.map +1 -0
- package/dist/types/lockers/utils/getHttpCalls.d.ts +5 -1
- package/dist/types/lockers/utils/getHttpCalls.d.ts.map +1 -1
- package/dist/types/votemarket/curve/config.d.ts +4 -0
- package/dist/types/votemarket/curve/config.d.ts.map +1 -0
- package/dist/types/votemarket/curve/fetchCurveGauges.d.ts +16 -0
- package/dist/types/votemarket/curve/fetchCurveGauges.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/abis/lockersMulticall.ts +17 -0
- package/src/bytecodes/index.ts +18 -0
- package/src/bytecodes/votemarket/batchCurveGauges.ts +34 -0
- package/src/bytecodes/votemarket/batchGaugesMetadata.ts +67 -0
- package/src/index.ts +9 -0
- package/src/lockers/fetch/index.ts +104 -227
- package/src/lockers/fetch/parsePeg.ts +25 -0
- package/src/lockers/fetch/parseVoteBoosterData.ts +34 -0
- package/src/lockers/utils/callsForLockers/depositorCalls.ts +7 -6
- package/src/lockers/utils/callsForLockers/feeCalls.ts +17 -15
- package/src/lockers/utils/callsForLockers/index.ts +6 -10
- package/src/lockers/utils/callsForLockers/pegCalls.ts +11 -12
- package/src/lockers/utils/callsForLockers/veCalls.ts +6 -5
- package/src/lockers/utils/endpoints.ts +2 -25
- package/src/lockers/utils/getBribesRewardsData.ts +11 -2
- package/src/lockers/utils/getCherries.ts +48 -0
- package/src/lockers/utils/getHttpCalls.ts +6 -7
- package/src/votemarket/curve/config.ts +6 -0
- package/src/votemarket/curve/fetchCurveGauges.ts +119 -0
- package/dist/esm/lockers/utils/callsForLockers/gaugeControllerCalls.js +0 -8
- package/dist/esm/lockers/utils/callsForLockers/gaugeControllerCalls.js.map +0 -1
- package/dist/esm/lockers/utils/getCherriesLeaderBoard.js +0 -22
- package/dist/esm/lockers/utils/getCherriesLeaderBoard.js.map +0 -1
- package/dist/types/lockers/utils/callsForLockers/gaugeControllerCalls.d.ts +0 -11
- package/dist/types/lockers/utils/callsForLockers/gaugeControllerCalls.d.ts.map +0 -1
- package/dist/types/lockers/utils/getCherriesLeaderBoard.d.ts +0 -2
- package/dist/types/lockers/utils/getCherriesLeaderBoard.d.ts.map +0 -1
- package/src/lockers/utils/callsForLockers/gaugeControllerCalls.ts +0 -8
- 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 {
|
|
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 {
|
|
13
|
-
import {
|
|
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
|
|
50
|
-
locker.sdToken
|
|
51
|
-
locker.
|
|
52
|
-
locker.
|
|
53
|
-
locker.
|
|
54
|
-
locker.
|
|
55
|
-
locker.
|
|
56
|
-
locker.
|
|
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.
|
|
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.
|
|
64
|
+
lockersFeeCalls.push(...feeCalls(locker.id, locker.modules.accumulator))
|
|
70
65
|
}
|
|
71
66
|
|
|
72
|
-
const [rawLockersData, rawLockersSideChainData] = (
|
|
73
|
-
|
|
67
|
+
const [rawLockersData, rawLockersSideChainData, rawLockersRewardsData] = await handlePromise(
|
|
68
|
+
[
|
|
74
69
|
multicall(provider, lockersCalls.concat(lockersFeeCalls), lockersMulticallAbi),
|
|
75
70
|
multichainMulticall(lockersSideChainsCalls, lockersMulticallAbi),
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
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
|
|
96
|
-
locker.sdToken
|
|
97
|
-
locker.
|
|
98
|
-
locker.
|
|
99
|
-
locker.
|
|
100
|
-
locker.
|
|
101
|
-
locker.
|
|
102
|
-
locker.
|
|
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
|
|
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],
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
const
|
|
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,
|
|
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.
|
|
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.
|
|
150
|
-
? formatUnits(chunkedRawLockersData[
|
|
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[
|
|
153
|
-
const veSdtTotalSupply = chainId === mainnet.id ? chunkedRawLockersData[
|
|
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
|
|
188
|
-
|
|
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,
|
|
195
|
-
veBalanceOfLocker: formatUnits(
|
|
196
|
-
|
|
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
|
-
|
|
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 :
|
|
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
|
|
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
|
|
268
|
-
|
|
160
|
+
let apr = streaming
|
|
161
|
+
? rewardPrice && tvl > 0
|
|
162
|
+
? ((Number(formatUnits(oneYearRate, r.decimals)) * rewardPrice) / tvl) * 100
|
|
163
|
+
: 0
|
|
164
|
+
: 0
|
|
269
165
|
|
|
270
|
-
|
|
271
|
-
|
|
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
|
|
281
|
-
|
|
282
|
-
|
|
170
|
+
token: r,
|
|
171
|
+
price: rewardPrice,
|
|
172
|
+
apr,
|
|
173
|
+
streaming,
|
|
174
|
+
periodFinish,
|
|
283
175
|
rate: formatUnits(rate, 0),
|
|
284
|
-
|
|
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:
|
|
183
|
+
let bribeRewards: TBribesRewards | undefined = undefined
|
|
301
184
|
|
|
302
185
|
if (chainId === mainnet.id) {
|
|
303
186
|
const data = getBribesRewardsData(
|
|
304
187
|
locker,
|
|
305
|
-
httpCalls
|
|
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
|
|
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
|
-
|
|
326
|
-
|
|
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.
|
|
335
|
-
const maxRewardsAprs = rewardsData.reduce((x, y) => x + y.
|
|
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) =>
|
|
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
|
|
222
|
+
if (httpCalls.cvgAprs?.[locker.modules.gauge]) {
|
|
341
223
|
alternativeYields.convergenceSdToken = {
|
|
342
|
-
label: locker.sdToken
|
|
224
|
+
label: locker.sdToken.symbol,
|
|
343
225
|
platform: 'Convergence',
|
|
344
226
|
href: 'https://app.cvg.finance/',
|
|
345
|
-
apr: httpCalls.cvgAprs[locker.
|
|
227
|
+
apr: httpCalls.cvgAprs[locker.modules.gauge].totalApr,
|
|
346
228
|
}
|
|
347
229
|
}
|
|
348
230
|
|
|
349
|
-
if (httpCalls
|
|
350
|
-
alternativeYields[`convergence${locker.sdToken
|
|
351
|
-
label: `${locker.sdToken
|
|
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
|
|
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:
|
|
245
|
+
veBalanceOfLocker: veBalanceOfLocker,
|
|
363
246
|
totalTokenLocked: totalTokenLocked,
|
|
364
|
-
veTotalSupply:
|
|
247
|
+
veTotalSupply: veTotalSupply,
|
|
365
248
|
lockIncentive: lockIncentive,
|
|
366
249
|
incentiveAmountInToken: incentiveAmountInToken,
|
|
367
|
-
|
|
368
|
-
|
|
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:
|
|
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),
|