@stake-dao/reader 0.5.2 → 0.5.4
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 +27 -4
- package/dist/esm/abis/lockersMulticall.js.map +1 -1
- package/dist/esm/bytecodes/votemarket/batchYbUserVotes.js +39 -0
- package/dist/esm/bytecodes/votemarket/batchYbUserVotes.js.map +1 -0
- package/dist/esm/bytecodes/votemarket/batchYbVotes.js +13 -0
- package/dist/esm/bytecodes/votemarket/batchYbVotes.js.map +1 -0
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lockers/fetch/parse.js +1 -0
- package/dist/esm/lockers/fetch/parse.js.map +1 -1
- package/dist/esm/lockers/fetch/protocols/balancer.js +3 -0
- package/dist/esm/lockers/fetch/protocols/balancer.js.map +1 -1
- package/dist/esm/prices.js +4 -0
- package/dist/esm/prices.js.map +1 -1
- package/dist/esm/strategies/v2/parse.js +2 -1
- package/dist/esm/strategies/v2/parse.js.map +1 -1
- package/dist/esm/votemarket/fetchClaimableData.js +1 -1
- package/dist/esm/votemarket/fetchEpochVotes.js +13 -4
- package/dist/esm/votemarket/fetchEpochVotes.js.map +1 -1
- package/dist/esm/votemarket/generateProofs/config.js +6 -0
- package/dist/esm/votemarket/generateProofs/config.js.map +1 -1
- package/dist/esm/votemarket/generateProofs/getGaugeProof.js +5 -0
- package/dist/esm/votemarket/generateProofs/getGaugeProof.js.map +1 -1
- package/dist/esm/votemarket/generateProofs/getUserProof.js +13 -2
- package/dist/esm/votemarket/generateProofs/getUserProof.js.map +1 -1
- package/dist/esm/votemarket/yb/fetchYbUserVotes.js +42 -0
- package/dist/esm/votemarket/yb/fetchYbUserVotes.js.map +1 -0
- package/dist/types/abis/lockersMulticall.d.ts.map +1 -1
- package/dist/types/bytecodes/votemarket/batchYbUserVotes.d.ts +4 -0
- package/dist/types/bytecodes/votemarket/batchYbUserVotes.d.ts.map +1 -0
- package/dist/types/bytecodes/votemarket/batchYbVotes.d.ts +4 -0
- package/dist/types/bytecodes/votemarket/batchYbVotes.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lockers/fetch/parse.d.ts +1 -0
- package/dist/types/lockers/fetch/parse.d.ts.map +1 -1
- package/dist/types/lockers/fetch/protocols/balancer.d.ts.map +1 -1
- package/dist/types/prices.d.ts.map +1 -1
- package/dist/types/strategies/v2/parse.d.ts.map +1 -1
- package/dist/types/votemarket/fetchEpochVotes.d.ts.map +1 -1
- package/dist/types/votemarket/generateProofs/config.d.ts +6 -0
- package/dist/types/votemarket/generateProofs/config.d.ts.map +1 -1
- package/dist/types/votemarket/generateProofs/getGaugeProof.d.ts.map +1 -1
- package/dist/types/votemarket/generateProofs/getUserProof.d.ts.map +1 -1
- package/dist/types/votemarket/yb/fetchYbUserVotes.d.ts +16 -0
- package/dist/types/votemarket/yb/fetchYbUserVotes.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/abis/lockersMulticall.ts +27 -4
- package/src/bytecodes/votemarket/batchYbUserVotes.ts +41 -0
- package/src/bytecodes/votemarket/batchYbVotes.ts +15 -0
- package/src/index.ts +6 -1
- package/src/lockers/fetch/parse.ts +2 -0
- package/src/lockers/fetch/protocols/balancer.ts +3 -0
- package/src/prices.ts +4 -0
- package/src/strategies/v2/parse.ts +2 -1
- package/src/votemarket/fetchClaimableData.ts +1 -1
- package/src/votemarket/fetchEpochVotes.ts +14 -4
- package/src/votemarket/generateProofs/config.ts +6 -0
- package/src/votemarket/generateProofs/getGaugeProof.ts +8 -0
- package/src/votemarket/generateProofs/getUserProof.ts +15 -2
- package/src/votemarket/yb/fetchYbUserVotes.ts +61 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { contracts } from '@stake-dao/constants'
|
|
2
|
+
import { encodeAbiParameters, formatUnits, parseAbiParameters, zeroAddress } from 'viem'
|
|
3
|
+
import { mainnet } from 'viem/chains'
|
|
4
|
+
import batchYbUserVotes from '../../bytecodes/votemarket/batchYbUserVotes.js'
|
|
5
|
+
import { concatBytecode } from '../../index.js'
|
|
6
|
+
import { batchJsonRpc, equalTlc } from '../../utils.js'
|
|
7
|
+
|
|
8
|
+
export type Vote = {
|
|
9
|
+
gauge: string
|
|
10
|
+
slope: string
|
|
11
|
+
relativeWeight: number
|
|
12
|
+
weight: number
|
|
13
|
+
start: number
|
|
14
|
+
end: number
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type GaugesUserData = { veBalance: string; unusedVeBalance: string; unusedRelativeWeight: number; votes: Vote[] }
|
|
18
|
+
|
|
19
|
+
export const fetchYbUserVotes = async (rpc: string, user: string): Promise<GaugesUserData> => {
|
|
20
|
+
const calls = [
|
|
21
|
+
concatBytecode(
|
|
22
|
+
batchYbUserVotes.bytecode[mainnet.id]!,
|
|
23
|
+
encodeAbiParameters(parseAbiParameters(batchYbUserVotes.inputType[mainnet.id]!) as any, [
|
|
24
|
+
user,
|
|
25
|
+
contracts.ybGaugeController![1]!,
|
|
26
|
+
contracts.veYB![1]!,
|
|
27
|
+
]),
|
|
28
|
+
),
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
const rawVotes = await batchJsonRpc({
|
|
32
|
+
rpc,
|
|
33
|
+
calls,
|
|
34
|
+
outputTypeAbi: batchYbUserVotes.outputType![mainnet.id],
|
|
35
|
+
parse: false,
|
|
36
|
+
callsKey: `votemarket/yb/fetchYbUserVotes.ts: rawGauges - chainId ${mainnet.id} - rpc ${rpc}`,
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
const veBalance = rawVotes[0].veBalance
|
|
40
|
+
|
|
41
|
+
const votes = rawVotes[0].votes
|
|
42
|
+
.filter((rv) => !equalTlc(rv.gauge, zeroAddress))
|
|
43
|
+
.map((v) => ({
|
|
44
|
+
gauge: v.gauge,
|
|
45
|
+
slope: formatUnits(v.slope, 0),
|
|
46
|
+
relativeWeight: Number(v.power) / 100,
|
|
47
|
+
weight: formatUnits((veBalance * BigInt(v.power)) / BigInt(10000), 18),
|
|
48
|
+
start: Number(v.start),
|
|
49
|
+
end: Number(v.end),
|
|
50
|
+
}))
|
|
51
|
+
|
|
52
|
+
const unusedRelativeWeight = 10000 - votes.reduce((total, x) => total + x.relativeWeight * 100, 0)
|
|
53
|
+
const unusedVeBalance = (veBalance * BigInt(unusedRelativeWeight)) / BigInt(10000)
|
|
54
|
+
|
|
55
|
+
return {
|
|
56
|
+
veBalance: formatUnits(veBalance, 18),
|
|
57
|
+
unusedVeBalance: formatUnits(unusedVeBalance, 18),
|
|
58
|
+
unusedRelativeWeight: unusedRelativeWeight / 100,
|
|
59
|
+
votes,
|
|
60
|
+
}
|
|
61
|
+
}
|