@stake-dao/reader 0.4.33 → 0.4.34

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 (39) hide show
  1. package/dist/esm/bytecodes/votemarket/batchCampaigns.js +1 -1
  2. package/dist/esm/bytecodes/votemarket/batchCampaigns.js.map +1 -1
  3. package/dist/esm/bytecodes/votemarket/batchCampaignsRestrictedVotes.js +33 -0
  4. package/dist/esm/bytecodes/votemarket/batchCampaignsRestrictedVotes.js.map +1 -0
  5. package/dist/esm/bytecodes/votemarket/batchClaimableData.js +1 -1
  6. package/dist/esm/bytecodes/votemarket/batchClaimableData.js.map +1 -1
  7. package/dist/esm/index.js +2 -1
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js +2 -2
  10. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js.map +1 -1
  11. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  12. package/dist/esm/utils.js +13 -0
  13. package/dist/esm/utils.js.map +1 -1
  14. package/dist/esm/votemarket/fetchCampaigns.js +71 -10
  15. package/dist/esm/votemarket/fetchCampaigns.js.map +1 -1
  16. package/dist/esm/votemarket/fetchPendingRemoteCampaigns.js +102 -0
  17. package/dist/esm/votemarket/fetchPendingRemoteCampaigns.js.map +1 -0
  18. package/dist/types/bytecodes/votemarket/batchCampaignsRestrictedVotes.d.ts +4 -0
  19. package/dist/types/bytecodes/votemarket/batchCampaignsRestrictedVotes.d.ts.map +1 -0
  20. package/dist/types/index.d.ts +2 -1
  21. package/dist/types/index.d.ts.map +1 -1
  22. package/dist/types/utils.d.ts +1 -0
  23. package/dist/types/utils.d.ts.map +1 -1
  24. package/dist/types/votemarket/fetchCampaigns.d.ts +6 -1
  25. package/dist/types/votemarket/fetchCampaigns.d.ts.map +1 -1
  26. package/dist/types/votemarket/fetchPendingRemoteCampaigns.d.ts +46 -0
  27. package/dist/types/votemarket/fetchPendingRemoteCampaigns.d.ts.map +1 -0
  28. package/dist/types/votemarket/types.d.ts +1 -0
  29. package/dist/types/votemarket/types.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/bytecodes/votemarket/batchCampaigns.ts +1 -1
  32. package/src/bytecodes/votemarket/batchCampaignsRestrictedVotes.ts +35 -0
  33. package/src/bytecodes/votemarket/batchClaimableData.ts +1 -1
  34. package/src/index.ts +2 -1
  35. package/src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts +2 -2
  36. package/src/utils.ts +19 -0
  37. package/src/votemarket/fetchCampaigns.ts +109 -12
  38. package/src/votemarket/fetchPendingRemoteCampaigns.ts +141 -0
  39. package/src/votemarket/types.ts +1 -0
@@ -0,0 +1,35 @@
1
+ import type { BatchMetaData } from '../types.js'
2
+
3
+ const batchCampaignsRestrictedVotes: BatchMetaData = {
4
+ bytecode: {
5
+ 1: '0x608060405234801561000f575f80fd5b50604051610a7f380380610a7f833981810160405281019061003191906106e4565b5f815167ffffffffffffffff81111561004d5761004c6103fe565b5b60405190808252806020026020018201604052801561008657816020015b610073610345565b81526020019060019003908161006b5790505b5090505f8390505f8590505f5b8451811015610316576100a4610345565b8582815181106100b7576100b6610750565b5b60200260200101515f0151815f0181815250508582815181106100dd576100dc610750565b5b60200260200101516020015181602001818152505085828151811061010557610104610750565b5b602002602001015160400151816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f86838151811061015c5761015b610750565b5b60200260200101516060015190505f5b81518110156102e7575f8573ffffffffffffffffffffffffffffffffffffffff166370a082318484815181106101a5576101a4610750565b5b60200260200101516040518263ffffffff1660e01b81526004016101c9919061078c565b602060405180830381865afa1580156101e4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020891906107a5565b90505f8773ffffffffffffffffffffffffffffffffffffffff16630f467f9885858151811061023a57610239610750565b5b602002602001015187604001516040518363ffffffff1660e01b81526004016102649291906107d0565b606060405180830381865afa15801561027f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a391906107f7565b5091505061271081836102b69190610874565b6102c091906108e2565b856060018181516102d19190610912565b915081815250505050808060010191505061016c565b50818684815181106102fc576102fb610750565b5b602002602001018190525050508080600101915050610093565b505f836040516020016103299190610a5e565b6040516020818303038152906040529050602081018059038082f35b60405180608001604052805f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103b982610390565b9050919050565b6103c9816103af565b81146103d3575f80fd5b50565b5f815190506103e4816103c0565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610434826103ee565b810181811067ffffffffffffffff82111715610453576104526103fe565b5b80604052505050565b5f61046561037f565b9050610471828261042b565b919050565b5f67ffffffffffffffff8211156104905761048f6103fe565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f80fd5b5f819050919050565b6104bf816104ad565b81146104c9575f80fd5b50565b5f815190506104da816104b6565b92915050565b5f67ffffffffffffffff8211156104fa576104f96103fe565b5b602082029050602081019050919050565b5f61051d610518846104e0565b61045c565b905080838252602082019050602084028301858111156105405761053f6104a1565b5b835b81811015610569578061055588826103d6565b845260208401935050602081019050610542565b5050509392505050565b5f82601f830112610587576105866103ea565b5b815161059784826020860161050b565b91505092915050565b5f608082840312156105b5576105b46104a5565b5b6105bf608061045c565b90505f6105ce848285016104cc565b5f8301525060206105e1848285016104cc565b60208301525060406105f5848285016103d6565b604083015250606082015167ffffffffffffffff811115610619576106186104a9565b5b61062584828501610573565b60608301525092915050565b5f61064361063e84610476565b61045c565b90508083825260208201905060208402830185811115610666576106656104a1565b5b835b818110156106ad57805167ffffffffffffffff81111561068b5761068a6103ea565b5b80860161069889826105a0565b85526020850194505050602081019050610668565b5050509392505050565b5f82601f8301126106cb576106ca6103ea565b5b81516106db848260208601610631565b91505092915050565b5f805f606084860312156106fb576106fa610388565b5b5f610708868287016103d6565b9350506020610719868287016103d6565b925050604084015167ffffffffffffffff81111561073a5761073961038c565b5b610746868287016106b7565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610786816103af565b82525050565b5f60208201905061079f5f83018461077d565b92915050565b5f602082840312156107ba576107b9610388565b5b5f6107c7848285016104cc565b91505092915050565b5f6040820190506107e35f83018561077d565b6107f0602083018461077d565b9392505050565b5f805f6060848603121561080e5761080d610388565b5b5f61081b868287016104cc565b935050602061082c868287016104cc565b925050604061083d868287016104cc565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61087e826104ad565b9150610889836104ad565b9250828202610897816104ad565b915082820484148315176108ae576108ad610847565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6108ec826104ad565b91506108f7836104ad565b925082610907576109066108b5565b5b828204905092915050565b5f61091c826104ad565b9150610927836104ad565b925082820190508082111561093f5761093e610847565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610977816104ad565b82525050565b610986816103af565b82525050565b608082015f8201516109a05f85018261096e565b5060208201516109b3602085018261096e565b5060408201516109c6604085018261097d565b5060608201516109d9606085018261096e565b50505050565b5f6109ea838361098c565b60808301905092915050565b5f602082019050919050565b5f610a0c82610945565b610a16818561094f565b9350610a218361095f565b805f5b83811015610a51578151610a3888826109df565b9750610a43836109f6565b925050600181019050610a24565b5085935050505092915050565b5f6020820190508181035f830152610a768184610a02565b90509291505056fe',
6
+ },
7
+ inputType: {
8
+ 1: [
9
+ 'address _veToken, address _gaugeController, InputArg[] memory inputArgs',
10
+ 'struct InputArg { uint256 chainId; uint256 campaignId; address gauge; address[] addresses; }',
11
+ ],
12
+ },
13
+ outputTypeHr: {
14
+ 1: [
15
+ 'ReturnData[] memory returnData',
16
+ 'struct ReturnData { uint256 chainId; uint256 campaignId; address gauge; uint256 restrictedVotes; }',
17
+ ],
18
+ },
19
+ outputType: {
20
+ 1: [
21
+ {
22
+ type: 'tuple[]',
23
+ name: 'returnData',
24
+ components: [
25
+ { type: 'uint256', name: 'chainId' },
26
+ { type: 'uint256', name: 'campaignId' },
27
+ { type: 'address', name: 'gauge' },
28
+ { type: 'uint256', name: 'restrictedVotes' },
29
+ ],
30
+ },
31
+ ],
32
+ },
33
+ }
34
+
35
+ export default batchCampaignsRestrictedVotes
@@ -3,7 +3,7 @@ import type { BatchMetaData } from '../types.js'
3
3
  const batchClaimableData: BatchMetaData = {
4
4
  bytecode: {
5
5
  42161:
6
- '0x608060405234801561000f575f80fd5b50604051611fb2380380611fb28339818101604052810190610031919061139f565b5f825167ffffffffffffffff81111561004d5761004c61102d565b5b60405190808252806020026020018201604052801561008657816020015b610073610f28565b81526020019060019003908161006b5790505b509050845f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f62093a8090505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338013f026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610137573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015b919061143b565b73ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c7919061143b565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b8451811015610287575f85828151811061022557610224611466565b5b6020026020010151905061025b878287858151811061024757610246611466565b5b6020026020010151866102b660201b60201c565b84838151811061026e5761026d611466565b5b6020026020010181905250508080600101915050610208565b505f8260405160200161029a91906117e9565b6040516020818303038152906040529050602081018059038082f35b6102be610f28565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635598f8cc866040518263ffffffff1660e01b81526004016103189190611818565b61016060405180830381865afa158015610334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103589190611970565b90505f81610100015190505f826080015160ff1667ffffffffffffffff8111156103855761038461102d565b5b6040519080825280602002602001820160405280156103be57816020015b6103ab610f41565b8152602001906001900390816103a35790505b5090505f5b815181101561059f575f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317f3a7228a866040518363ffffffff1660e01b815260040161042892919061199c565b608060405180830381865afa158015610443573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104679190611a38565b90505f8160200151146104ac5780602001518560c001818152505080604001518560a00181815250508460800151856080019060ff16908160ff16815250505061059f565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fb08df28b6040518263ffffffff1660e01b81526004016105069190611818565b5f60405180830381865afa158015610520573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105489190611b23565b905061055e868c8b888e866105c260201b60201c565b84848151811061057157610570611466565b5b602002602001018190525087856105889190611b97565b9450828061059590611bca565b93505050506103c3565b604051806040016040528089815260200183815250945050505050949350505050565b6105ca610f41565b5f806105dc87876108a560201b60201c565b915091505f8214806105ed57505f81145b15610687576040518060e001604052808781526020015f81526020015f151581526020015f151581526020015f151581526020015f81526020015f67ffffffffffffffff8111156106415761064061102d565b5b60405190808252806020026020018201604052801561067a57816020015b610667610f7e565b81526020019060019003908161065f5790505b508152509250505061089b565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303f17e568c604001516040518263ffffffff1660e01b81526004016106e59190611c20565b602060405180830381865afa158015610700573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107249190611c39565b116107ba575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015610791573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b59190611c39565b610856565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303f17e568b604001516040518263ffffffff1660e01b81526004016108169190611c20565b602060405180830381865afa158015610831573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108559190611c39565b5b90505f61086e8b8b86868c8c8861093a60201b60201c565b90505f865111156108935761088a8b878a610c8760201b60201c565b8160c001819052505b809450505050505b9695505050505050565b5f805f5b845181101561092b57838582815181106108c6576108c5611466565b5b60200260200101515f01510361091e578481815181106108e9576108e8611466565b5b60200260200101516020015185828151811061090857610907611466565b5b6020026020010151604001519250925050610933565b80806001019150506108a9565b505f80915091505b9250929050565b610942610f41565b5f80805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166366629f1286888c6040518463ffffffff1660e01b81526004016109a193929190611c64565b602060405180830381865afa1580156109bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e09190611c39565b036109fa576109f789888886610e5a60201b60201c565b90505b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329597009876040518263ffffffff1660e01b8152600401610a559190611818565b608060405180830381865afa158015610a70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a949190611d41565b90506040518060e001604052808781526020018381526020015f801b83602001511415151581526020015f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e31c6a638e602001518b6040518363ffffffff1660e01b8152600401610b1f929190611d6c565b6040805180830381865afa158015610b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5d9190611de0565b6020015111151581526020015f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bef3ba998d8f602001518c6040518463ffffffff1660e01b8152600401610bcc93929190611e0b565b608060405180830381865afa158015610be7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0b9190611eb5565b606001511115158152602001826040015181526020015f67ffffffffffffffff811115610c3b57610c3a61102d565b5b604051908082528060200260200182016040528015610c7457816020015b610c61610f7e565b815260200190600190039081610c595790505b5081525092505050979650505050505050565b60605f835167ffffffffffffffff811115610ca557610ca461102d565b5b604051908082528060200260200182016040528015610cde57816020015b610ccb610f7e565b815260200190600190039081610cc35790505b5090505f5b8451811015610e4e57848181518110610cff57610cfe611466565b5b6020026020010151828281518110610d1a57610d19611466565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bef3ba99878481518110610da857610da7611466565b5b60200260200101518960200151886040518463ffffffff1660e01b8152600401610dd493929190611e0b565b608060405180830381865afa158015610def573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e139190611eb5565b6060015111828281518110610e2b57610e2a611466565b5b602002602001015160200190151590811515815250508080600101915050610ce3565b50809150509392505050565b5f805f90505f84670de0b6b3a7640000886080015160ff168960c00151610e819190611f0d565b610e8b9190611f3d565b610e959190611f0d565b90508660a00151811115610ecd57670de0b6b3a76400008760a0015187610ebc9190611f3d565b610ec69190611f0d565b9150610eef565b670de0b6b3a76400008187610ee29190611f3d565b610eec9190611f0d565b91505b670de0b6b3a76400008483610f049190611f3d565b610f0e9190611f0d565b82610f199190611f7e565b91508192505050949350505050565b60405180604001604052805f8152602001606081525090565b6040518060e001604052805f81526020015f81526020015f151581526020015f151581526020015f151581526020015f8152602001606081525090565b60405180604001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fe882610fbf565b9050919050565b610ff881610fde565b8114611002575f80fd5b50565b5f8151905061101381610fef565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6110638261101d565b810181811067ffffffffffffffff821117156110825761108161102d565b5b80604052505050565b5f611094610fae565b90506110a0828261105a565b919050565b5f67ffffffffffffffff8211156110bf576110be61102d565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b6110e6816110d4565b81146110f0575f80fd5b50565b5f81519050611101816110dd565b92915050565b5f611119611114846110a5565b61108b565b9050808382526020820190506020840283018581111561113c5761113b6110d0565b5b835b81811015611165578061115188826110f3565b84526020840193505060208101905061113e565b5050509392505050565b5f82601f83011261118357611182611019565b5b8151611193848260208601611107565b91505092915050565b5f67ffffffffffffffff8211156111b6576111b561102d565b5b602082029050602081019050919050565b5f67ffffffffffffffff8211156111e1576111e061102d565b5b602082029050602081019050919050565b5f80fd5b5f6060828403121561120b5761120a6111f2565b5b611215606061108b565b90505f611224848285016110f3565b5f830152506020611237848285016110f3565b602083015250604061124b848285016110f3565b60408301525092915050565b5f611269611264846111c7565b61108b565b9050808382526020820190506060840283018581111561128c5761128b6110d0565b5b835b818110156112b557806112a188826111f6565b84526020840193505060608101905061128e565b5050509392505050565b5f82601f8301126112d3576112d2611019565b5b81516112e3848260208601611257565b91505092915050565b5f6112fe6112f98461119c565b61108b565b90508083825260208201905060208402830185811115611321576113206110d0565b5b835b8181101561136857805167ffffffffffffffff81111561134657611345611019565b5b80860161135389826112bf565b85526020850194505050602081019050611323565b5050509392505050565b5f82601f83011261138657611385611019565b5b81516113968482602086016112ec565b91505092915050565b5f805f80608085870312156113b7576113b6610fb7565b5b5f6113c487828801611005565b94505060206113d587828801611005565b935050604085015167ffffffffffffffff8111156113f6576113f5610fbb565b5b6114028782880161116f565b925050606085015167ffffffffffffffff81111561142357611422610fbb565b5b61142f87828801611372565b91505092959194509250565b5f602082840312156114505761144f610fb7565b5b5f61145d84828501611005565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6114c5816110d4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f8115159050919050565b611508816114f4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61154081610fde565b82525050565b604082015f82015161155a5f850182611537565b50602082015161156d60208501826114ff565b50505050565b5f61157e8383611546565b60408301905092915050565b5f602082019050919050565b5f6115a08261150e565b6115aa8185611518565b93506115b583611528565b805f5b838110156115e55781516115cc8882611573565b97506115d78361158a565b9250506001810190506115b8565b5085935050505092915050565b5f60e083015f8301516116075f8601826114bc565b50602083015161161a60208601826114bc565b50604083015161162d60408601826114ff565b50606083015161164060608601826114ff565b50608083015161165360808601826114ff565b5060a083015161166660a08601826114bc565b5060c083015184820360c086015261167e8282611596565b9150508091505092915050565b5f61169683836115f2565b905092915050565b5f602082019050919050565b5f6116b4826114cb565b6116be81856114d5565b9350836020820285016116d0856114e5565b805f5b8581101561170b57848403895281516116ec858261168b565b94506116f78361169e565b925060208a019950506001810190506116d3565b50829750879550505050505092915050565b5f604083015f8301516117325f8601826114bc565b506020830151848203602086015261174a82826116aa565b9150508091505092915050565b5f611762838361171d565b905092915050565b5f602082019050919050565b5f61178082611493565b61178a818561149d565b93508360208202850161179c856114ad565b805f5b858110156117d757848403895281516117b88582611757565b94506117c38361176a565b925060208a0199505060018101905061179f565b50829750879550505050505092915050565b5f6020820190508181035f8301526118018184611776565b905092915050565b611812816110d4565b82525050565b5f60208201905061182b5f830184611809565b92915050565b5f60ff82169050919050565b61184681611831565b8114611850575f80fd5b50565b5f815190506118618161183d565b92915050565b5f610160828403121561187d5761187c6111f2565b5b61188861016061108b565b90505f611897848285016110f3565b5f8301525060206118aa84828501611005565b60208301525060406118be84828501611005565b60408301525060606118d284828501611005565b60608301525060806118e684828501611853565b60808301525060a06118fa848285016110f3565b60a08301525060c061190e848285016110f3565b60c08301525060e0611922848285016110f3565b60e083015250610100611937848285016110f3565b6101008301525061012061194d848285016110f3565b6101208301525061014061196384828501611005565b6101408301525092915050565b5f610160828403121561198657611985610fb7565b5b5f61199384828501611867565b91505092915050565b5f6040820190506119af5f830185611809565b6119bc6020830184611809565b9392505050565b5f608082840312156119d8576119d76111f2565b5b6119e2608061108b565b90505f6119f184828501611853565b5f830152506020611a04848285016110f3565b6020830152506040611a18848285016110f3565b6040830152506060611a2c848285016110f3565b60608301525092915050565b5f60808284031215611a4d57611a4c610fb7565b5b5f611a5a848285016119c3565b91505092915050565b5f67ffffffffffffffff821115611a7d57611a7c61102d565b5b602082029050602081019050919050565b5f611aa0611a9b84611a63565b61108b565b90508083825260208201905060208402830185811115611ac357611ac26110d0565b5b835b81811015611aec5780611ad88882611005565b845260208401935050602081019050611ac5565b5050509392505050565b5f82601f830112611b0a57611b09611019565b5b8151611b1a848260208601611a8e565b91505092915050565b5f60208284031215611b3857611b37610fb7565b5b5f82015167ffffffffffffffff811115611b5557611b54610fbb565b5b611b6184828501611af6565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ba1826110d4565b9150611bac836110d4565b9250828201905080821115611bc457611bc3611b6a565b5b92915050565b5f611bd4826110d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c0657611c05611b6a565b5b600182019050919050565b611c1a81610fde565b82525050565b5f602082019050611c335f830184611c11565b92915050565b5f60208284031215611c4e57611c4d610fb7565b5b5f611c5b848285016110f3565b91505092915050565b5f606082019050611c775f830186611809565b611c846020830185611809565b611c916040830184611c11565b949350505050565b5f819050919050565b611cab81611c99565b8114611cb5575f80fd5b50565b5f81519050611cc681611ca2565b92915050565b5f60808284031215611ce157611ce06111f2565b5b611ceb608061108b565b90505f611cfa84828501611cb8565b5f830152506020611d0d84828501611cb8565b6020830152506040611d21848285016110f3565b6040830152506060611d35848285016110f3565b60608301525092915050565b5f60808284031215611d5657611d55610fb7565b5b5f611d6384828501611ccc565b91505092915050565b5f604082019050611d7f5f830185611c11565b611d8c6020830184611809565b9392505050565b5f60408284031215611da857611da76111f2565b5b611db2604061108b565b90505f611dc1848285016110f3565b5f830152506020611dd4848285016110f3565b60208301525092915050565b5f60408284031215611df557611df4610fb7565b5b5f611e0284828501611d93565b91505092915050565b5f606082019050611e1e5f830186611c11565b611e2b6020830185611c11565b611e386040830184611809565b949350505050565b5f60808284031215611e5557611e546111f2565b5b611e5f608061108b565b90505f611e6e848285016110f3565b5f830152506020611e81848285016110f3565b6020830152506040611e95848285016110f3565b6040830152506060611ea9848285016110f3565b60608301525092915050565b5f60808284031215611eca57611ec9610fb7565b5b5f611ed784828501611e40565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f17826110d4565b9150611f22836110d4565b925082611f3257611f31611ee0565b5b828204905092915050565b5f611f47826110d4565b9150611f52836110d4565b9250828202611f60816110d4565b91508282048414831517611f7757611f76611b6a565b5b5092915050565b5f611f88826110d4565b9150611f93836110d4565b9250828203905081811115611fab57611faa611b6a565b5b9291505056fe',
6
+ '0x608060405234801561000f575f80fd5b50604051611fad380380611fad8339818101604052810190610031919061139a565b5f825167ffffffffffffffff81111561004d5761004c611028565b5b60405190808252806020026020018201604052801561008657816020015b610073610f23565b81526020019060019003908161006b5790505b509050845f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f62093a8090505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338013f026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610137573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015b9190611436565b73ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c79190611436565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b8451811015610287575f85828151811061022557610224611461565b5b6020026020010151905061025b878287858151811061024757610246611461565b5b6020026020010151866102b660201b60201c565b84838151811061026e5761026d611461565b5b6020026020010181905250508080600101915050610208565b505f8260405160200161029a91906117e4565b6040516020818303038152906040529050602081018059038082f35b6102be610f23565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635598f8cc866040518263ffffffff1660e01b81526004016103189190611813565b61016060405180830381865afa158015610334573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610358919061196b565b90505f81610100015190505f826080015160ff1667ffffffffffffffff81111561038557610384611028565b5b6040519080825280602002602001820160405280156103be57816020015b6103ab610f3c565b8152602001906001900390816103a35790505b5090505f5b815181101561059a575f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317f3a7228a866040518363ffffffff1660e01b8152600401610428929190611997565b608060405180830381865afa158015610443573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104679190611a33565b90505f8160200151146104a75780602001518560c001818152505080604001518560a00181815250508460800151856080019060ff16908160ff16815250505b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fb08df28b6040518263ffffffff1660e01b81526004016105019190611813565b5f60405180830381865afa15801561051b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105439190611b1e565b9050610559868c8b888e866105bd60201b60201c565b84848151811061056c5761056b611461565b5b602002602001018190525087856105839190611b92565b9450828061059090611bc5565b93505050506103c3565b604051806040016040528089815260200183815250945050505050949350505050565b6105c5610f3c565b5f806105d787876108a060201b60201c565b915091505f8214806105e857505f81145b15610682576040518060e001604052808781526020015f81526020015f151581526020015f151581526020015f151581526020015f81526020015f67ffffffffffffffff81111561063c5761063b611028565b5b60405190808252806020026020018201604052801561067557816020015b610662610f79565b81526020019060019003908161065a5790505b5081525092505050610896565b5f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303f17e568c604001516040518263ffffffff1660e01b81526004016106e09190611c1b565b602060405180830381865afa1580156106fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071f9190611c34565b116107b5575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b09190611c34565b610851565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303f17e568b604001516040518263ffffffff1660e01b81526004016108119190611c1b565b602060405180830381865afa15801561082c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108509190611c34565b5b90505f6108698b8b86868c8c8861093560201b60201c565b90505f8651111561088e576108858b878a610c8260201b60201c565b8160c001819052505b809450505050505b9695505050505050565b5f805f5b845181101561092657838582815181106108c1576108c0611461565b5b60200260200101515f015103610919578481815181106108e4576108e3611461565b5b60200260200101516020015185828151811061090357610902611461565b5b602002602001015160400151925092505061092e565b80806001019150506108a4565b505f80915091505b9250929050565b61093d610f3c565b5f80805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166366629f1286888c6040518463ffffffff1660e01b815260040161099c93929190611c5f565b602060405180830381865afa1580156109b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109db9190611c34565b036109f5576109f289888886610e5560201b60201c565b90505b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329597009876040518263ffffffff1660e01b8152600401610a509190611813565b608060405180830381865afa158015610a6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8f9190611d3c565b90506040518060e001604052808781526020018381526020015f801b83602001511415151581526020015f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e31c6a638e602001518b6040518363ffffffff1660e01b8152600401610b1a929190611d67565b6040805180830381865afa158015610b34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b589190611ddb565b6020015111151581526020015f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bef3ba998d8f602001518c6040518463ffffffff1660e01b8152600401610bc793929190611e06565b608060405180830381865afa158015610be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c069190611eb0565b606001511115158152602001826040015181526020015f67ffffffffffffffff811115610c3657610c35611028565b5b604051908082528060200260200182016040528015610c6f57816020015b610c5c610f79565b815260200190600190039081610c545790505b5081525092505050979650505050505050565b60605f835167ffffffffffffffff811115610ca057610c9f611028565b5b604051908082528060200260200182016040528015610cd957816020015b610cc6610f79565b815260200190600190039081610cbe5790505b5090505f5b8451811015610e4957848181518110610cfa57610cf9611461565b5b6020026020010151828281518110610d1557610d14611461565b5b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bef3ba99878481518110610da357610da2611461565b5b60200260200101518960200151886040518463ffffffff1660e01b8152600401610dcf93929190611e06565b608060405180830381865afa158015610dea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0e9190611eb0565b6060015111828281518110610e2657610e25611461565b5b602002602001015160200190151590811515815250508080600101915050610cde565b50809150509392505050565b5f805f90505f84670de0b6b3a7640000886080015160ff168960c00151610e7c9190611f08565b610e869190611f38565b610e909190611f08565b90508660a00151811115610ec857670de0b6b3a76400008760a0015187610eb79190611f38565b610ec19190611f08565b9150610eea565b670de0b6b3a76400008187610edd9190611f38565b610ee79190611f08565b91505b670de0b6b3a76400008483610eff9190611f38565b610f099190611f08565b82610f149190611f79565b91508192505050949350505050565b60405180604001604052805f8152602001606081525090565b6040518060e001604052805f81526020015f81526020015f151581526020015f151581526020015f151581526020015f8152602001606081525090565b60405180604001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fe382610fba565b9050919050565b610ff381610fd9565b8114610ffd575f80fd5b50565b5f8151905061100e81610fea565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61105e82611018565b810181811067ffffffffffffffff8211171561107d5761107c611028565b5b80604052505050565b5f61108f610fa9565b905061109b8282611055565b919050565b5f67ffffffffffffffff8211156110ba576110b9611028565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b6110e1816110cf565b81146110eb575f80fd5b50565b5f815190506110fc816110d8565b92915050565b5f61111461110f846110a0565b611086565b90508083825260208201905060208402830185811115611137576111366110cb565b5b835b81811015611160578061114c88826110ee565b845260208401935050602081019050611139565b5050509392505050565b5f82601f83011261117e5761117d611014565b5b815161118e848260208601611102565b91505092915050565b5f67ffffffffffffffff8211156111b1576111b0611028565b5b602082029050602081019050919050565b5f67ffffffffffffffff8211156111dc576111db611028565b5b602082029050602081019050919050565b5f80fd5b5f60608284031215611206576112056111ed565b5b6112106060611086565b90505f61121f848285016110ee565b5f830152506020611232848285016110ee565b6020830152506040611246848285016110ee565b60408301525092915050565b5f61126461125f846111c2565b611086565b90508083825260208201905060608402830185811115611287576112866110cb565b5b835b818110156112b0578061129c88826111f1565b845260208401935050606081019050611289565b5050509392505050565b5f82601f8301126112ce576112cd611014565b5b81516112de848260208601611252565b91505092915050565b5f6112f96112f484611197565b611086565b9050808382526020820190506020840283018581111561131c5761131b6110cb565b5b835b8181101561136357805167ffffffffffffffff81111561134157611340611014565b5b80860161134e89826112ba565b8552602085019450505060208101905061131e565b5050509392505050565b5f82601f83011261138157611380611014565b5b81516113918482602086016112e7565b91505092915050565b5f805f80608085870312156113b2576113b1610fb2565b5b5f6113bf87828801611000565b94505060206113d087828801611000565b935050604085015167ffffffffffffffff8111156113f1576113f0610fb6565b5b6113fd8782880161116a565b925050606085015167ffffffffffffffff81111561141e5761141d610fb6565b5b61142a8782880161136d565b91505092959194509250565b5f6020828403121561144b5761144a610fb2565b5b5f61145884828501611000565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6114c0816110cf565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f8115159050919050565b611503816114ef565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61153b81610fd9565b82525050565b604082015f8201516115555f850182611532565b50602082015161156860208501826114fa565b50505050565b5f6115798383611541565b60408301905092915050565b5f602082019050919050565b5f61159b82611509565b6115a58185611513565b93506115b083611523565b805f5b838110156115e05781516115c7888261156e565b97506115d283611585565b9250506001810190506115b3565b5085935050505092915050565b5f60e083015f8301516116025f8601826114b7565b50602083015161161560208601826114b7565b50604083015161162860408601826114fa565b50606083015161163b60608601826114fa565b50608083015161164e60808601826114fa565b5060a083015161166160a08601826114b7565b5060c083015184820360c08601526116798282611591565b9150508091505092915050565b5f61169183836115ed565b905092915050565b5f602082019050919050565b5f6116af826114c6565b6116b981856114d0565b9350836020820285016116cb856114e0565b805f5b8581101561170657848403895281516116e78582611686565b94506116f283611699565b925060208a019950506001810190506116ce565b50829750879550505050505092915050565b5f604083015f83015161172d5f8601826114b7565b506020830151848203602086015261174582826116a5565b9150508091505092915050565b5f61175d8383611718565b905092915050565b5f602082019050919050565b5f61177b8261148e565b6117858185611498565b935083602082028501611797856114a8565b805f5b858110156117d257848403895281516117b38582611752565b94506117be83611765565b925060208a0199505060018101905061179a565b50829750879550505050505092915050565b5f6020820190508181035f8301526117fc8184611771565b905092915050565b61180d816110cf565b82525050565b5f6020820190506118265f830184611804565b92915050565b5f60ff82169050919050565b6118418161182c565b811461184b575f80fd5b50565b5f8151905061185c81611838565b92915050565b5f6101608284031215611878576118776111ed565b5b611883610160611086565b90505f611892848285016110ee565b5f8301525060206118a584828501611000565b60208301525060406118b984828501611000565b60408301525060606118cd84828501611000565b60608301525060806118e18482850161184e565b60808301525060a06118f5848285016110ee565b60a08301525060c0611909848285016110ee565b60c08301525060e061191d848285016110ee565b60e083015250610100611932848285016110ee565b61010083015250610120611948848285016110ee565b6101208301525061014061195e84828501611000565b6101408301525092915050565b5f610160828403121561198157611980610fb2565b5b5f61198e84828501611862565b91505092915050565b5f6040820190506119aa5f830185611804565b6119b76020830184611804565b9392505050565b5f608082840312156119d3576119d26111ed565b5b6119dd6080611086565b90505f6119ec8482850161184e565b5f8301525060206119ff848285016110ee565b6020830152506040611a13848285016110ee565b6040830152506060611a27848285016110ee565b60608301525092915050565b5f60808284031215611a4857611a47610fb2565b5b5f611a55848285016119be565b91505092915050565b5f67ffffffffffffffff821115611a7857611a77611028565b5b602082029050602081019050919050565b5f611a9b611a9684611a5e565b611086565b90508083825260208201905060208402830185811115611abe57611abd6110cb565b5b835b81811015611ae75780611ad38882611000565b845260208401935050602081019050611ac0565b5050509392505050565b5f82601f830112611b0557611b04611014565b5b8151611b15848260208601611a89565b91505092915050565b5f60208284031215611b3357611b32610fb2565b5b5f82015167ffffffffffffffff811115611b5057611b4f610fb6565b5b611b5c84828501611af1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b9c826110cf565b9150611ba7836110cf565b9250828201905080821115611bbf57611bbe611b65565b5b92915050565b5f611bcf826110cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c0157611c00611b65565b5b600182019050919050565b611c1581610fd9565b82525050565b5f602082019050611c2e5f830184611c0c565b92915050565b5f60208284031215611c4957611c48610fb2565b5b5f611c56848285016110ee565b91505092915050565b5f606082019050611c725f830186611804565b611c7f6020830185611804565b611c8c6040830184611c0c565b949350505050565b5f819050919050565b611ca681611c94565b8114611cb0575f80fd5b50565b5f81519050611cc181611c9d565b92915050565b5f60808284031215611cdc57611cdb6111ed565b5b611ce66080611086565b90505f611cf584828501611cb3565b5f830152506020611d0884828501611cb3565b6020830152506040611d1c848285016110ee565b6040830152506060611d30848285016110ee565b60608301525092915050565b5f60808284031215611d5157611d50610fb2565b5b5f611d5e84828501611cc7565b91505092915050565b5f604082019050611d7a5f830185611c0c565b611d876020830184611804565b9392505050565b5f60408284031215611da357611da26111ed565b5b611dad6040611086565b90505f611dbc848285016110ee565b5f830152506020611dcf848285016110ee565b60208301525092915050565b5f60408284031215611df057611def610fb2565b5b5f611dfd84828501611d8e565b91505092915050565b5f606082019050611e195f830186611c0c565b611e266020830185611c0c565b611e336040830184611804565b949350505050565b5f60808284031215611e5057611e4f6111ed565b5b611e5a6080611086565b90505f611e69848285016110ee565b5f830152506020611e7c848285016110ee565b6020830152506040611e90848285016110ee565b6040830152506060611ea4848285016110ee565b60608301525092915050565b5f60808284031215611ec557611ec4610fb2565b5b5f611ed284828501611e3b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f12826110cf565b9150611f1d836110cf565b925082611f2d57611f2c611edb565b5b828204905092915050565b5f611f42826110cf565b9150611f4d836110cf565b9250828202611f5b816110cf565b91508282048414831517611f7257611f71611b65565b5b5092915050565b5f611f83826110cf565b9150611f8e836110cf565b9250828203905081811115611fa657611fa5611b65565b5b9291505056fe',
7
7
  },
8
8
  inputType: {
9
9
  42161: [
package/src/index.ts CHANGED
@@ -3,7 +3,8 @@
3
3
  ///////////////////////////////////////////////////////////////
4
4
  export { getPricesFromLlama, getPricesFromGeckoTerminal } from './prices.js'
5
5
  export * from './sdt.js'
6
- export { rpcCall, batchJsonRpc } from './utils.js'
6
+ export * from './tokens.js'
7
+ export { rpcCall, batchJsonRpc, ethGetTxsReceipts } from './utils.js'
7
8
  export type { BatchJsonRpcArgs } from './utils.js'
8
9
 
9
10
  ////////////////////////////////////////////////////////////////
@@ -99,8 +99,8 @@ export const getGaugesWeights = async (provider: any, rpc: string): Promise<Gaug
99
99
  return {
100
100
  gauge,
101
101
  inflationRate: formatUnits(inflationRate || 0, 0),
102
- relativeWeight: formatUnits(gaugeWeight[2]!.result, 0),
103
- futureRelativeWeight: formatUnits(gaugeWeight[3]!.result, 0),
102
+ relativeWeight: formatUnits(gaugeWeight[2]!.result || 0, 0),
103
+ futureRelativeWeight: formatUnits(gaugeWeight[3]!.result || 0, 0),
104
104
  }
105
105
  }),
106
106
  }
package/src/utils.ts CHANGED
@@ -121,6 +121,25 @@ export const rpcCall = async (rpc: string, params: RpcCallArgs[]) => {
121
121
  return request
122
122
  }
123
123
 
124
+ export const ethGetTxsReceipts = async (rpc: string, txHashes: string[]) => {
125
+ const request = (
126
+ await fetch(rpc, {
127
+ method: 'POST',
128
+ headers: { 'Content-Type': 'application/json' },
129
+ body: JSON.stringify(
130
+ txHashes.map((txHash, index) => ({
131
+ id: index,
132
+ jsonrpc: '2.0',
133
+ method: 'eth_getTransactionReceipt',
134
+ params: [txHash],
135
+ })),
136
+ ),
137
+ })
138
+ ).json()
139
+
140
+ return request
141
+ }
142
+
124
143
  export interface BatchJsonRpcArgs {
125
144
  rpc: string
126
145
  calls: string[]
@@ -1,12 +1,21 @@
1
- import { ONE_WEEK, RPC, Zero, contract, contracts, tokenWithAddress, tokens } from '@stake-dao/constants'
2
- import { filter, range, remove, uniq } from 'lodash-es'
3
- import { decodeAbiParameters, encodeAbiParameters, formatUnits, parseAbiParameters, zeroAddress } from 'viem'
4
- import { mainnet } from 'viem/chains'
1
+ import { ONE_WEEK, Zero, contract, contracts, tokenWithAddress, tokens } from '@stake-dao/constants'
2
+ import { chunk, filter, range, remove, uniq } from 'lodash-es'
3
+ import {
4
+ decodeAbiParameters,
5
+ encodeAbiParameters,
6
+ formatEther,
7
+ formatUnits,
8
+ parseAbiParameters,
9
+ zeroAddress,
10
+ } from 'viem'
11
+ import { arbitrum, mainnet } from 'viem/chains'
5
12
  import batchCampaigns from '../bytecodes/votemarket/batchCampaigns.js'
13
+ import batchCampaignsRestrictedVotes from '../bytecodes/votemarket/batchCampaignsRestrictedVotes.js'
6
14
  import batchGaugesWeight from '../bytecodes/votemarket/batchGaugesWeight.js'
7
15
  import { getPrices } from '../prices.js'
8
16
  import { rpcFetchTokensData } from '../tokens.js'
9
17
  import { batchJsonRpc, concatBytecode, equalTlc, rpcCall, rpcGetLastBlockTimetstamp } from '../utils.js'
18
+ import { fetchPendingRemoteCampaigns } from './fetchPendingRemoteCampaigns.js'
10
19
  import type { Campaign, RawCampaign, RawPeriod } from './types.js'
11
20
 
12
21
  export const CAMPAIGNS_CHUNK_SIZE = 10
@@ -15,8 +24,13 @@ export const CLOSE_WINDOW_LENGTH = 4 // weeks
15
24
 
16
25
  interface FetchCampaignsProps {
17
26
  platform: string
27
+ gaugeController: string
28
+ veToken: string
18
29
  chainId: number
19
30
  rpcs: { [chainId: number]: string }
31
+ etherscanApiKey?: string
32
+ fromBlock?: number
33
+ mainnetVmRemote?: string
20
34
  }
21
35
 
22
36
  const updateEpoch = ({
@@ -79,7 +93,16 @@ const updateEpoch = ({
79
93
  return campaign
80
94
  }
81
95
 
82
- export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaignsProps): Promise<Campaign[]> => {
96
+ export const fetchCampaigns = async ({
97
+ platform,
98
+ gaugeController,
99
+ veToken,
100
+ chainId,
101
+ rpcs,
102
+ etherscanApiKey,
103
+ fromBlock,
104
+ mainnetVmRemote,
105
+ }: FetchCampaignsProps): Promise<Campaign[]> => {
83
106
  const rpc = rpcs[chainId]!
84
107
 
85
108
  const block = await rpcGetLastBlockTimetstamp(rpc)
@@ -101,7 +124,7 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
101
124
  return concatBytecode(batchCampaigns.bytecode[1]!, inputData)
102
125
  })
103
126
 
104
- const rawCampaigns = await batchJsonRpc({
127
+ let rawCampaigns = await batchJsonRpc({
105
128
  rpc,
106
129
  calls,
107
130
  outputTypeAbi: batchCampaigns.outputType![1]!,
@@ -109,9 +132,65 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
109
132
  callsKey: `votemarket/fetchCampaigns.ts: rawCampaigns - chainId ${chainId} - rpc ${rpc}`,
110
133
  })
111
134
 
135
+ if (chainId === arbitrum.id && etherscanApiKey && fromBlock && mainnetVmRemote) {
136
+ const nextIndex = rawCampaigns.length > 0 ? Math.max(...rawCampaigns.map((rc) => Number(rc.id))) + 1 : 0
137
+ const { remoteCampaigns: pendingRemoteCampaigns } = await fetchPendingRemoteCampaigns({
138
+ mainnetVmRemote,
139
+ chainId,
140
+ fromBlock,
141
+ etherscanApiKey,
142
+ nextIndex,
143
+ })
144
+
145
+ rawCampaigns = [
146
+ ...rawCampaigns,
147
+ ...pendingRemoteCampaigns.filter((rmtC) => {
148
+ const existingCampaign = rawCampaigns.find(
149
+ (rc) =>
150
+ rc.addresses.length === rmtC.addresses.length &&
151
+ rc.addresses.every((rca, index) => equalTlc(rca, rmtC.addresses[index])) &&
152
+ equalTlc(rc.rewardAddress, rmtC.rewardAddress) &&
153
+ rc.rewardChainId === rmtC.rewardChainId &&
154
+ rc.campaign.startTimestamp === rmtC.campaign.startTimestamp &&
155
+ rc.campaign.endTimestamp === rmtC.campaign.endTimestamp &&
156
+ rc.campaign.numberOfPeriods === rmtC.campaign.numberOfPeriods &&
157
+ rc.campaign.maxRewardPerVote === rmtC.campaign.maxRewardPerVote &&
158
+ rc.campaign.totalRewardAmount === rmtC.campaign.totalRewardAmount &&
159
+ equalTlc(rc.campaign.gauge, rmtC.campaign.gauge) &&
160
+ equalTlc(rc.campaign.hook, rmtC.campaign.hook) &&
161
+ equalTlc(rc.campaign.manager, rmtC.campaign.manager),
162
+ )
163
+
164
+ return typeof existingCampaign === 'undefined'
165
+ }),
166
+ ]
167
+ }
168
+
169
+ const callsRestrictedVotes = rawCampaigns
170
+ .filter((rc) => rc.addresses.length > 0)
171
+ .map((rc) => [rc.campaign.chainId, rc.id, rc.campaign.gauge, rc.addresses])
172
+ const callsRestrictedVotesChunks = chunk(callsRestrictedVotes, CAMPAIGNS_CHUNK_SIZE).map((restrictedVoteChunk) => {
173
+ const inputData = encodeAbiParameters(parseAbiParameters(batchCampaignsRestrictedVotes.inputType[1]!) as any, [
174
+ veToken,
175
+ gaugeController,
176
+ restrictedVoteChunk,
177
+ ])
178
+ return concatBytecode(batchCampaignsRestrictedVotes.bytecode[1]!, inputData)
179
+ })
180
+
181
+ const rawCampaignsRestrictedVotes = await batchJsonRpc({
182
+ rpc: rpcs[mainnet.id]!,
183
+ calls: callsRestrictedVotesChunks,
184
+ outputTypeAbi: batchCampaignsRestrictedVotes.outputType![1]!,
185
+ parse: false,
186
+ callsKey: `votemarket/fetchCampaigns.ts: rawCampaignsRestrictedVotes - chainId ${mainnet.id} - rpc ${rpcs[
187
+ mainnet.id
188
+ ]!}`,
189
+ })
190
+
112
191
  const campaignsGauges: string[] = uniq(rawCampaigns.map((rc) => rc.campaign.gauge))
113
192
  const rawGaugesWeights = await batchJsonRpc({
114
- rpc: RPC[mainnet.id],
193
+ rpc: rpcs[mainnet.id]!,
115
194
  calls: [
116
195
  concatBytecode(
117
196
  batchGaugesWeight.bytecode[mainnet.id]!,
@@ -122,10 +201,12 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
122
201
  ),
123
202
  ],
124
203
  outputTypeAbi: batchGaugesWeight.outputTypeHr[mainnet.id]!,
125
- callsKey: `votemarket/fetchCampaigns.ts: rawGaugesWeights - chainId ${mainnet.id} - rpc ${RPC[mainnet.id]}`,
204
+ callsKey: `votemarket/fetchCampaigns.ts: rawGaugesWeights - chainId ${mainnet.id} - rpc ${rpcs[mainnet.id]!}`,
126
205
  })
127
206
 
128
- const campaignsTokens: string[] = uniq(rawCampaigns.map((rc) => rc.campaign.rewardToken))
207
+ const campaignsTokens: string[] = uniq(
208
+ rawCampaigns.map((rc) => (!rc.isPendingRemote ? rc.campaign.rewardToken : undefined)).filter(Boolean),
209
+ )
129
210
  const tokensToFetch: string[] = remove(campaignsTokens, (t) => !tokenWithAddress(t, chainId))
130
211
  const rawTokensData: any[] = tokensToFetch.length > 0 ? await rpcFetchTokensData(chainId, rpc, tokensToFetch) : []
131
212
 
@@ -165,6 +246,7 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
165
246
  // { address: '0x0Cc20784f790805537D4eE33B41f1aC4eC55446B', symbol: 'USDC', usdPrice: 1 }, // For test purpose
166
247
  // { address: '0x59c9a01163e685719FAbE5De34779F563f49D4a3', symbol: 'CRV', usdPrice: 30 }, // For test purpose
167
248
  // { address: '0x3c7b193aa39a85FDE911465d35CE3A74499F0A7B', symbol: 'ARR', usdPrice: 10 }, // For test purpose
249
+ //{ address: '0xd9879d9dbdc5042d8f1c2710be293909b985dc90', symbol: 'rEYWA', usdPrice: 0.14 }, // tmp rEYWA price
168
250
  ]
169
251
 
170
252
  const allFetchedTokens = [...fetchedTokens, ...nativeFetchedTokens]
@@ -173,17 +255,26 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
173
255
 
174
256
  const campaigns = rawCampaigns.map((rc) => {
175
257
  const gaugeWeightData = rawGaugesWeights.find((g) => equalTlc(g.gauge, rc.campaign.gauge))
176
-
177
- let receiptRewardToken = undefined
258
+ let receiptRewardToken: any = undefined
178
259
  let rewardToken = allFetchedTokens.find(
179
260
  (t) => equalTlc(t.address, rc.campaign.rewardToken) && t.chainId === chainId,
180
261
  )
181
262
 
182
- if (!equalTlc(rewardToken.address, rc.rewardAddress)) {
263
+ if (rc.isPendingRemote || !equalTlc(rewardToken.address, rc.rewardAddress)) {
183
264
  receiptRewardToken = rewardToken
184
265
  rewardToken = allFetchedTokens.find(
185
266
  (t) => equalTlc(t.address, rc.rewardAddress) && t.chainId === Number(rc.rewardChainId),
186
267
  )
268
+
269
+ if (rc.isPendingRemote) {
270
+ receiptRewardToken = {
271
+ name: `LaPoste ${rewardToken.name}`,
272
+ symbol: `p${rewardToken.symbol}`,
273
+ address: undefined,
274
+ decimals: rewardToken.decimals,
275
+ chainId,
276
+ }
277
+ }
187
278
  }
188
279
 
189
280
  const decimals = rewardToken ? rewardToken.decimals : 18
@@ -215,6 +306,10 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
215
306
  const rawCurrentPeriod = rc.periods[indexOfCurrentPeriod]
216
307
  const rawPreviousPeriod = rc.periods[indexOfCurrentPeriod - 1]
217
308
 
309
+ const restrictedVotesData = rawCampaignsRestrictedVotes.find(
310
+ (rvc) => rvc.chainId === rc.campaign.chainId && rvc.campaignId === rc.id && rvc.gauge === rc.campaign.gauge,
311
+ )
312
+
218
313
  return {
219
314
  id: Number(rc.id),
220
315
  chainId,
@@ -234,6 +329,7 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
234
329
  endTimestamp,
235
330
  hook: rc.campaign.hook,
236
331
  isClosed: rc.isClosed,
332
+ restrictedVotes: formatEther(restrictedVotesData?.restrictedVotes || Zero),
237
333
  addresses: rc.addresses,
238
334
  isWhitelist: rc.isWhitelistOnly,
239
335
  isBlacklist: !rc.isWhitelistOnly && rc.addresses.length > 0,
@@ -251,6 +347,7 @@ export const fetchCampaigns = async ({ platform, chainId, rpcs }: FetchCampaigns
251
347
  leftover: formatUnits(rawCurrentPeriod.leftover, decimals),
252
348
  updated: rawCurrentPeriod.updated,
253
349
  },
350
+ periods: rc.periods,
254
351
  status: {
255
352
  voteOpen: endTimestamp - ONE_WEEK > currentTimestamp,
256
353
  voteClosed: currentTimestamp > endTimestamp - ONE_WEEK,
@@ -0,0 +1,141 @@
1
+ import { LA_POSTE_MESSAGE_SENT_EVENT, ONE_WEEK, One, Zero, contract } from '@stake-dao/constants'
2
+ import { range } from 'lodash-es'
3
+ import { decodeAbiParameters, decodeEventLog, parseAbiParameters, zeroAddress } from 'viem'
4
+ import { mainnet } from 'viem/chains'
5
+
6
+ export const CAMPAIGNS_CHUNK_SIZE = 10
7
+ export const CLAIM_WINDOW_LENGTH = 24 // weeks
8
+ export const CLOSE_WINDOW_LENGTH = 4 // weeks
9
+
10
+ interface FetchPendingRemoteCampaignsProps {
11
+ mainnetVmRemote: string
12
+ chainId: number
13
+ fromBlock: number
14
+ etherscanApiKey: string
15
+ nextIndex: number
16
+ }
17
+
18
+ export const fetchPendingRemoteCampaigns = async ({
19
+ mainnetVmRemote,
20
+ chainId,
21
+ fromBlock,
22
+ etherscanApiKey,
23
+ nextIndex,
24
+ }: FetchPendingRemoteCampaignsProps) => {
25
+ const queryParams = {
26
+ chainid: `${mainnet.id}`,
27
+ module: 'logs',
28
+ action: 'getLogs',
29
+ address: contract('laPoste', chainId),
30
+ topic0: LA_POSTE_MESSAGE_SENT_EVENT.topic,
31
+ topic0_3_opr: 'and',
32
+ topic3: mainnetVmRemote.replace('0x', '0x000000000000000000000000'),
33
+ apikey: etherscanApiKey,
34
+ fromBlock: `${fromBlock}`,
35
+ }
36
+
37
+ const rawEvents = await fetch(`https://api.etherscan.io/v2/api?${new URLSearchParams(queryParams)}`).then((res) =>
38
+ res.json(),
39
+ )
40
+
41
+ const campaignsParams: any[] = []
42
+ const manageParams: any[] = []
43
+
44
+ if (rawEvents.message === 'OK') {
45
+ for (const e of rawEvents.result) {
46
+ const decodedEvent: any = decodeEventLog({
47
+ abi: LA_POSTE_MESSAGE_SENT_EVENT.abi,
48
+ data: e.data,
49
+ topics: e.topics,
50
+ })
51
+
52
+ try {
53
+ if (Number(decodedEvent.args.chainId) === chainId) {
54
+ const payload = decodeAbiParameters(
55
+ parseAbiParameters([
56
+ 'Payload payload',
57
+ 'struct Payload { uint256 actionType; address sender; bytes parameters }',
58
+ ]),
59
+ decodedEvent.args.message.payload,
60
+ )
61
+
62
+ // Create Campaign (actionType === 0)
63
+ if (payload[0].actionType === Zero) {
64
+ const decodedParams = decodeAbiParameters(
65
+ parseAbiParameters([
66
+ 'CampaignCreationParams params',
67
+ 'struct CampaignCreationParams { uint256 chainId; address gauge; address manager; address rewardToken; uint8 numberOfPeriods; uint256 maxRewardPerVote; uint256 totalRewardAmount; address[] addresses; address hook; bool isWhitelist; }',
68
+ ]),
69
+ (payload[0] as any).parameters,
70
+ )
71
+
72
+ campaignsParams.push({ decoded: decodedParams[0], eventTimestamp: Number(e.timeStamp) })
73
+ }
74
+
75
+ // Manage Campaign (actionType === 1)
76
+ if (payload[0].actionType === One) {
77
+ const decodedParams = decodeAbiParameters(
78
+ parseAbiParameters([
79
+ 'CampaignManagementParams params',
80
+ 'struct CampaignManagementParams { uint256 campaignId; address rewardToken; uint8 numberOfPeriods; uint256 totalRewardAmount; uint256 maxRewardPerVote; }',
81
+ ]),
82
+ (payload[0] as any).parameters,
83
+ )
84
+
85
+ manageParams.push({ decoded: decodedParams[0], eventTimestamp: Number(e.timeStamp) })
86
+ }
87
+ }
88
+ } catch (err) {
89
+ console.error(err)
90
+ }
91
+ }
92
+ }
93
+
94
+ const remoteCampaigns = campaignsParams.map((element) => {
95
+ const campaignParams = element.decoded
96
+
97
+ const totalRewardAmount = campaignParams.totalRewardAmount
98
+ const maxRewardPerVote = campaignParams.maxRewardPerVote
99
+ const numberOfPeriods = BigInt(campaignParams.numberOfPeriods)
100
+
101
+ const startTimestamp = BigInt(Math.floor(element.eventTimestamp / ONE_WEEK) * ONE_WEEK + ONE_WEEK)
102
+ const endTimestamp = startTimestamp + numberOfPeriods * BigInt(ONE_WEEK)
103
+
104
+ const campaign = {
105
+ isPendingRemote: true,
106
+ id: BigInt(nextIndex),
107
+ addresses: campaignParams.addresses,
108
+ campaign: {
109
+ chainId: campaignParams.chainId,
110
+ startTimestamp,
111
+ endTimestamp,
112
+ gauge: campaignParams.gauge,
113
+ hook: campaignParams.hook,
114
+ manager: campaignParams.manager,
115
+ maxRewardPerVote,
116
+ numberOfPeriods: Number(numberOfPeriods),
117
+ rewardToken: zeroAddress, // Unknown
118
+ totalDistributed: Zero,
119
+ totalRewardAmount,
120
+ },
121
+ isKilled: false,
122
+ isWhitelistOnly: campaignParams.isWhitelist,
123
+ periodLeft: campaignParams.numberOfPeriods,
124
+ periods: range(0, Number(numberOfPeriods)).map((index) => ({
125
+ timestampStart: startTimestamp + BigInt(index) * BigInt(ONE_WEEK),
126
+ timestampEnd: startTimestamp + BigInt(ONE_WEEK) + BigInt(index) * BigInt(ONE_WEEK),
127
+ rewardPerPeriod: totalRewardAmount / numberOfPeriods,
128
+ rewardPerVote: maxRewardPerVote,
129
+ leftover: Zero,
130
+ updated: false,
131
+ })),
132
+ rewardAddress: campaignParams.rewardToken,
133
+ rewardChainId: BigInt(mainnet.id),
134
+ }
135
+
136
+ nextIndex++
137
+ return campaign
138
+ })
139
+
140
+ return { remoteCampaigns, remoteCampaignsUpdate: manageParams }
141
+ }
@@ -11,6 +11,7 @@ export type Campaign = {
11
11
  gauge: string
12
12
  gaugeChainId: number
13
13
  manager: string
14
+ restrictedVotes: string
14
15
  rewardChainId: number
15
16
  receiptRewardToken: {
16
17
  name: string