levr-sdk 0.0.2 → 0.1.1

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 (121) hide show
  1. package/README.md +256 -235
  2. package/dist/esm/abis/LevrFactory_v1.js +63 -0
  3. package/dist/esm/abis/LevrGovernor_v1.js +15 -24
  4. package/dist/esm/abis/LevrStaking_v1.js +7 -1
  5. package/dist/esm/balance.js +19 -1
  6. package/dist/esm/balance.js.map +1 -1
  7. package/dist/esm/client/hook/index.js +14 -3
  8. package/dist/esm/client/hook/index.js.map +1 -1
  9. package/dist/esm/client/hook/use-fee-receivers.js +11 -29
  10. package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
  11. package/dist/esm/client/hook/use-governance.js +19 -254
  12. package/dist/esm/client/hook/use-governance.js.map +1 -1
  13. package/dist/esm/client/hook/use-pool.js +26 -0
  14. package/dist/esm/client/hook/use-pool.js.map +1 -0
  15. package/dist/esm/client/hook/use-prepare.js +6 -3
  16. package/dist/esm/client/hook/use-prepare.js.map +1 -1
  17. package/dist/esm/client/hook/use-project.js +24 -9
  18. package/dist/esm/client/hook/use-project.js.map +1 -1
  19. package/dist/esm/client/hook/use-proposal.js +48 -0
  20. package/dist/esm/client/hook/use-proposal.js.map +1 -0
  21. package/dist/esm/client/hook/use-stake.js +29 -195
  22. package/dist/esm/client/hook/use-stake.js.map +1 -1
  23. package/dist/esm/client/hook/use-swap.js +9 -13
  24. package/dist/esm/client/hook/use-swap.js.map +1 -1
  25. package/dist/esm/client/hook/use-user.js +25 -0
  26. package/dist/esm/client/hook/use-user.js.map +1 -0
  27. package/dist/esm/client/levr-provider.js +65 -107
  28. package/dist/esm/client/levr-provider.js.map +1 -1
  29. package/dist/esm/client/query-keys.js +9 -21
  30. package/dist/esm/client/query-keys.js.map +1 -1
  31. package/dist/esm/constants.js +1 -1
  32. package/dist/esm/fee-receivers.js +25 -13
  33. package/dist/esm/fee-receivers.js.map +1 -1
  34. package/dist/esm/governance.js +35 -414
  35. package/dist/esm/governance.js.map +1 -1
  36. package/dist/esm/index.js +4 -2
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/pool.js +70 -0
  39. package/dist/esm/pool.js.map +1 -0
  40. package/dist/esm/project.js +389 -135
  41. package/dist/esm/project.js.map +1 -1
  42. package/dist/esm/proposal.js +156 -0
  43. package/dist/esm/proposal.js.map +1 -0
  44. package/dist/esm/quote/index.js +2 -2
  45. package/dist/esm/quote/index.js.map +1 -1
  46. package/dist/esm/stake.js +34 -299
  47. package/dist/esm/stake.js.map +1 -1
  48. package/dist/esm/treasury.js +162 -0
  49. package/dist/esm/treasury.js.map +1 -0
  50. package/dist/esm/user.js +153 -0
  51. package/dist/esm/user.js.map +1 -0
  52. package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
  53. package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
  54. package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
  55. package/dist/types/balance.d.ts +15 -0
  56. package/dist/types/balance.d.ts.map +1 -1
  57. package/dist/types/client/hook/index.d.ts +11 -3
  58. package/dist/types/client/hook/index.d.ts.map +1 -1
  59. package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
  60. package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
  61. package/dist/types/client/hook/use-governance.d.ts +4 -98
  62. package/dist/types/client/hook/use-governance.d.ts.map +1 -1
  63. package/dist/types/client/hook/use-pool.d.ts +12 -0
  64. package/dist/types/client/hook/use-pool.d.ts.map +1 -0
  65. package/dist/types/client/hook/use-prepare.d.ts +1 -2
  66. package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
  67. package/dist/types/client/hook/use-project.d.ts +5 -0
  68. package/dist/types/client/hook/use-project.d.ts.map +1 -1
  69. package/dist/types/client/hook/use-proposal.d.ts +18 -0
  70. package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
  71. package/dist/types/client/hook/use-stake.d.ts +14 -73
  72. package/dist/types/client/hook/use-stake.d.ts.map +1 -1
  73. package/dist/types/client/hook/use-swap.d.ts +3 -8
  74. package/dist/types/client/hook/use-swap.d.ts.map +1 -1
  75. package/dist/types/client/hook/use-user.d.ts +13 -0
  76. package/dist/types/client/hook/use-user.d.ts.map +1 -0
  77. package/dist/types/client/levr-provider.d.ts +30 -50
  78. package/dist/types/client/levr-provider.d.ts.map +1 -1
  79. package/dist/types/client/query-keys.d.ts +13 -25
  80. package/dist/types/client/query-keys.d.ts.map +1 -1
  81. package/dist/types/fee-receivers.d.ts +28 -0
  82. package/dist/types/fee-receivers.d.ts.map +1 -1
  83. package/dist/types/governance.d.ts +5 -92
  84. package/dist/types/governance.d.ts.map +1 -1
  85. package/dist/types/index.d.ts +4 -2
  86. package/dist/types/index.d.ts.map +1 -1
  87. package/dist/types/pool.d.ts +590 -0
  88. package/dist/types/pool.d.ts.map +1 -0
  89. package/dist/types/project.d.ts +56 -1
  90. package/dist/types/project.d.ts.map +1 -1
  91. package/dist/types/proposal.d.ts +1161 -0
  92. package/dist/types/proposal.d.ts.map +1 -0
  93. package/dist/types/quote/index.d.ts +2 -2
  94. package/dist/types/quote/index.d.ts.map +1 -1
  95. package/dist/types/stake.d.ts +16 -41
  96. package/dist/types/stake.d.ts.map +1 -1
  97. package/dist/types/treasury.d.ts +16 -0
  98. package/dist/types/treasury.d.ts.map +1 -0
  99. package/dist/types/user.d.ts +188 -0
  100. package/dist/types/user.d.ts.map +1 -0
  101. package/package.json +5 -2
  102. package/dist/esm/client/hook/use-balance.js +0 -57
  103. package/dist/esm/client/hook/use-balance.js.map +0 -1
  104. package/dist/esm/client/hook/use-projects.js +0 -22
  105. package/dist/esm/client/hook/use-projects.js.map +0 -1
  106. package/dist/esm/client/hook/use-proposals.js +0 -29
  107. package/dist/esm/client/hook/use-proposals.js.map +0 -1
  108. package/dist/esm/projects.js +0 -184
  109. package/dist/esm/projects.js.map +0 -1
  110. package/dist/esm/proposals.js +0 -98
  111. package/dist/esm/proposals.js.map +0 -1
  112. package/dist/types/client/hook/use-balance.d.ts +0 -20
  113. package/dist/types/client/hook/use-balance.d.ts.map +0 -1
  114. package/dist/types/client/hook/use-projects.d.ts +0 -6
  115. package/dist/types/client/hook/use-projects.d.ts.map +0 -1
  116. package/dist/types/client/hook/use-proposals.d.ts +0 -16
  117. package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
  118. package/dist/types/projects.d.ts +0 -20
  119. package/dist/types/projects.d.ts.map +0 -1
  120. package/dist/types/proposals.d.ts +0 -20
  121. package/dist/types/proposals.d.ts.map +0 -1
@@ -0,0 +1,156 @@
1
+ import { formatUnits } from "viem";
2
+ import { LevrGovernor_v1 } from "./abis/index.js";
3
+ /**
4
+ * Get call data contracts for a single proposal
5
+ * Returns 1-2 contract configs: getProposal (includes state, meetsQuorum, meetsApproval), [getVoteReceipt]
6
+ */
7
+ export function proposalCallData(governorAddress, proposalId, userAddress) {
8
+ const baseContracts = [
9
+ {
10
+ address: governorAddress,
11
+ abi: LevrGovernor_v1,
12
+ functionName: "getProposal",
13
+ args: [proposalId],
14
+ },
15
+ ];
16
+ // Add vote receipt if userAddress is provided
17
+ if (userAddress) {
18
+ return [
19
+ ...baseContracts,
20
+ {
21
+ address: governorAddress,
22
+ abi: LevrGovernor_v1,
23
+ functionName: "getVoteReceipt",
24
+ args: [proposalId, userAddress],
25
+ },
26
+ ];
27
+ }
28
+ return baseContracts;
29
+ }
30
+ /**
31
+ * Parse proposal data from multicall results
32
+ * Expects 1-2 results: [getProposal (includes state, meetsQuorum, meetsApproval), [getVoteReceipt]]
33
+ */
34
+ export function parseProposalData(results, tokenDecimals, pricing) {
35
+ const proposalData = results[0];
36
+ // State, meetsQuorum, and meetsApproval are now included in the proposal data
37
+ const state = proposalData.state;
38
+ const meetsQuorum = proposalData.meetsQuorum;
39
+ const meetsApproval = proposalData.meetsApproval;
40
+ const voteReceiptData = results[1];
41
+ const amountFormatted = formatUnits(proposalData.amount, tokenDecimals);
42
+ const yesVotesFormatted = formatUnits(proposalData.yesVotes, tokenDecimals);
43
+ const noVotesFormatted = formatUnits(proposalData.noVotes, tokenDecimals);
44
+ const tokenPrice = pricing ? parseFloat(pricing.tokenUsd) : null;
45
+ return {
46
+ id: proposalData.id,
47
+ proposalType: proposalData.proposalType,
48
+ proposer: proposalData.proposer,
49
+ amount: {
50
+ raw: proposalData.amount,
51
+ formatted: amountFormatted,
52
+ usd: tokenPrice ? (parseFloat(amountFormatted) * tokenPrice).toString() : undefined,
53
+ },
54
+ recipient: proposalData.recipient,
55
+ description: proposalData.description,
56
+ createdAt: {
57
+ timestamp: proposalData.createdAt,
58
+ date: new Date(Number(proposalData.createdAt) * 1000),
59
+ },
60
+ votingStartsAt: {
61
+ timestamp: proposalData.votingStartsAt,
62
+ date: new Date(Number(proposalData.votingStartsAt) * 1000),
63
+ },
64
+ votingEndsAt: {
65
+ timestamp: proposalData.votingEndsAt,
66
+ date: new Date(Number(proposalData.votingEndsAt) * 1000),
67
+ },
68
+ yesVotes: {
69
+ raw: proposalData.yesVotes,
70
+ formatted: yesVotesFormatted,
71
+ usd: tokenPrice ? (parseFloat(yesVotesFormatted) * tokenPrice).toString() : undefined,
72
+ },
73
+ noVotes: {
74
+ raw: proposalData.noVotes,
75
+ formatted: noVotesFormatted,
76
+ usd: tokenPrice ? (parseFloat(noVotesFormatted) * tokenPrice).toString() : undefined,
77
+ },
78
+ totalBalanceVoted: proposalData.totalBalanceVoted,
79
+ executed: proposalData.executed,
80
+ cycleId: proposalData.cycleId,
81
+ meetsQuorum,
82
+ meetsApproval,
83
+ state,
84
+ voteReceipt: voteReceiptData,
85
+ };
86
+ }
87
+ /**
88
+ * Get proposals data from governor contract with enriched data
89
+ * Uses getProposalsForCycle() then single multicall to get all proposal data
90
+ */
91
+ export async function proposals({ publicClient, governorAddress, cycleId, tokenDecimals = 18, pricing, pageSize = 50, userAddress, }) {
92
+ if (Object.values({ publicClient, governorAddress }).some((value) => !value)) {
93
+ throw new Error("Invalid proposals params");
94
+ }
95
+ // Get current cycle ID if not provided
96
+ const currentCycleId = cycleId ??
97
+ (await publicClient.readContract({
98
+ address: governorAddress,
99
+ abi: LevrGovernor_v1,
100
+ functionName: "currentCycleId",
101
+ }));
102
+ // Get all proposal IDs for the cycle
103
+ const proposalIds = await publicClient.readContract({
104
+ address: governorAddress,
105
+ abi: LevrGovernor_v1,
106
+ functionName: "getProposalsForCycle",
107
+ args: [currentCycleId],
108
+ });
109
+ // Limit to pageSize (most recent first, array is already in reverse order)
110
+ const limitedIds = Array.from(proposalIds).slice(0, pageSize);
111
+ if (limitedIds.length === 0) {
112
+ return {
113
+ proposals: [],
114
+ cycleId: currentCycleId,
115
+ winner: 0n,
116
+ };
117
+ }
118
+ // Build single multicall using proposalCallData utility (includes vote receipts if userAddress provided)
119
+ const contracts = limitedIds.flatMap((proposalId) => proposalCallData(governorAddress, proposalId, userAddress));
120
+ const results = await publicClient.multicall({ contracts });
121
+ // Parse results using parseProposalData utility
122
+ const parsedProposals = [];
123
+ const contractsPerProposal = userAddress ? 2 : 1; // 2 if including vote receipt, 1 otherwise
124
+ for (let i = 0; i < limitedIds.length; i++) {
125
+ const baseIndex = i * contractsPerProposal;
126
+ const proposalResults = [
127
+ results[baseIndex].result,
128
+ userAddress ? results[baseIndex + 1].result : undefined,
129
+ ];
130
+ // Skip if proposal data is invalid
131
+ if (!proposalResults[0]) {
132
+ continue;
133
+ }
134
+ parsedProposals.push(parseProposalData(proposalResults, tokenDecimals, pricing));
135
+ }
136
+ const winner = await publicClient.readContract({
137
+ address: governorAddress,
138
+ abi: LevrGovernor_v1,
139
+ functionName: "getWinner",
140
+ args: [currentCycleId],
141
+ });
142
+ return {
143
+ proposals: parsedProposals,
144
+ cycleId: currentCycleId,
145
+ winner,
146
+ };
147
+ }
148
+ export async function proposal(publicClient, governorAddress, proposalId, tokenDecimals, pricing, userAddress) {
149
+ const results = await publicClient.multicall({
150
+ contracts: proposalCallData(governorAddress, proposalId, userAddress),
151
+ });
152
+ // Extract .result from each multicall result
153
+ const extractedResults = results.map((r) => r.result);
154
+ return parseProposalData(extractedResults, tokenDecimals, pricing);
155
+ }
156
+ //# sourceMappingURL=proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.js","sourceRoot":"","sources":["../../src/proposal.ts"],"names":[],"mappings":"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"}
@@ -54,8 +54,8 @@
54
54
  * ```
55
55
  */
56
56
  // Import implementations
57
- import { quoteV3Read, quoteV3Bytecode } from "./v3.js";
58
- import { quoteV4Read, quoteV4Bytecode } from "./v4.js";
57
+ import { quoteV3Bytecode, quoteV3Read } from "./v3.js";
58
+ import { quoteV4Bytecode, quoteV4Read } from "./v4.js";
59
59
  /**
60
60
  * @description Unified quote API for Uniswap V3 and V4
61
61
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/quote/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAeH,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE;QACF;;;;WAIG;QACH,IAAI,EAAE,WAAW;QACjB;;;;WAIG;QACH,QAAQ,EAAE,eAAe;KAC1B;IACD;;OAEG;IACH,EAAE,EAAE;QACF;;;;WAIG;QACH,IAAI,EAAE,WAAW;QACjB;;;;WAIG;QACH,QAAQ,EAAE,eAAe;KAC1B;CACF,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/quote/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAMH,yBAAyB;AACzB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE;QACF;;;;WAIG;QACH,IAAI,EAAE,WAAW;QACjB;;;;WAIG;QACH,QAAQ,EAAE,eAAe;KAC1B;IACD;;OAEG;IACH,EAAE,EAAE;QACF;;;;WAIG;QACH,IAAI,EAAE,WAAW;QACjB;;;;WAIG;QACH,QAAQ,EAAE,eAAe;KAC1B;CACF,CAAA"}
package/dist/esm/stake.js CHANGED
@@ -1,4 +1,5 @@
1
- import { encodeFunctionData, erc20Abi, formatUnits, parseUnits } from "viem";
1
+ import { omit } from "lodash";
2
+ import { encodeFunctionData, erc20Abi, parseUnits } from "viem";
2
3
  import { LevrForwarder_v1, LevrStaking_v1 } from "./abis/index.js";
3
4
  import { WETH } from "./constants.js";
4
5
  export class Stake {
@@ -10,19 +11,18 @@ export class Stake {
10
11
  chainId;
11
12
  userAddress;
12
13
  trustedForwarder;
13
- pricing;
14
14
  constructor(config) {
15
- if (Object.values(config).some((value) => !value))
15
+ // Validate required fields only (not optional fields like trustedForwarder, pricing)
16
+ if (Object.values(omit(config, ["pricing"])).some((value) => !value))
16
17
  throw new Error("Invalid config");
17
18
  this.wallet = config.wallet;
18
19
  this.publicClient = config.publicClient;
19
- this.stakingAddress = config.stakingAddress;
20
- this.tokenAddress = config.tokenAddress;
21
- this.tokenDecimals = config.tokenDecimals;
20
+ this.stakingAddress = config.project.staking;
21
+ this.tokenAddress = config.project.token.address;
22
+ this.tokenDecimals = config.project.token.decimals;
22
23
  this.chainId = config.publicClient.chain?.id ?? 1; // Get chainId from publicClient
23
24
  this.userAddress = config.wallet.account.address;
24
- this.trustedForwarder = config.trustedForwarder;
25
- this.pricing = config.pricing;
25
+ this.trustedForwarder = config.project.forwarder;
26
26
  }
27
27
  /**
28
28
  * Approve ERC20 tokens for spending by the staking contract
@@ -62,21 +62,27 @@ export class Stake {
62
62
  }
63
63
  /**
64
64
  * Unstake tokens from the staking contract
65
+ * @returns Transaction receipt with the new voting power after unstake
65
66
  */
66
67
  async unstake({ amount, to }) {
67
68
  const parsedAmount = typeof amount === "bigint" ? amount : parseUnits(amount.toString(), this.tokenDecimals);
68
- const hash = await this.wallet.writeContract({
69
+ const params = {
69
70
  address: this.stakingAddress,
70
71
  abi: LevrStaking_v1,
71
72
  functionName: "unstake",
72
73
  args: [parsedAmount, to ?? this.userAddress],
73
74
  chain: this.wallet.chain,
74
- });
75
+ };
76
+ const { result: newVotingPower } = await this.publicClient.simulateContract(params);
77
+ const hash = await this.wallet.writeContract(params);
75
78
  const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
76
79
  if (receipt.status === "reverted") {
77
80
  throw new Error("Unstake transaction reverted");
78
81
  }
79
- return receipt;
82
+ return {
83
+ receipt,
84
+ newVotingPower,
85
+ };
80
86
  }
81
87
  /**
82
88
  * Claim rewards from the staking contract
@@ -101,244 +107,6 @@ export class Stake {
101
107
  }
102
108
  return receipt;
103
109
  }
104
- /**
105
- * Get allowance for a token and spender
106
- */
107
- async getAllowance() {
108
- const result = await this.publicClient.readContract({
109
- address: this.tokenAddress,
110
- abi: erc20Abi,
111
- functionName: "allowance",
112
- args: [this.userAddress, this.stakingAddress],
113
- });
114
- return {
115
- raw: result,
116
- formatted: formatUnits(result, 18), // Assuming 18 decimals, should be passed as param if needed
117
- };
118
- }
119
- /**
120
- * Get pool data from staking contract
121
- */
122
- async getPoolData() {
123
- // Get current block to use blockchain time
124
- const currentBlock = await this.publicClient.getBlock();
125
- const blockTime = currentBlock.timestamp;
126
- const results = await this.publicClient.multicall({
127
- contracts: [
128
- {
129
- address: this.stakingAddress,
130
- abi: LevrStaking_v1,
131
- functionName: "totalStaked",
132
- },
133
- {
134
- address: this.stakingAddress,
135
- abi: LevrStaking_v1,
136
- functionName: "escrowBalance",
137
- args: [this.tokenAddress],
138
- },
139
- {
140
- address: this.stakingAddress,
141
- abi: LevrStaking_v1,
142
- functionName: "streamWindowSeconds",
143
- },
144
- {
145
- address: this.stakingAddress,
146
- abi: LevrStaking_v1,
147
- functionName: "streamStart",
148
- },
149
- {
150
- address: this.stakingAddress,
151
- abi: LevrStaking_v1,
152
- functionName: "streamEnd",
153
- },
154
- {
155
- address: this.stakingAddress,
156
- abi: LevrStaking_v1,
157
- functionName: "rewardRatePerSecond",
158
- args: [this.tokenAddress],
159
- },
160
- ],
161
- });
162
- const [totalStaked, escrowBalance, windowSeconds, streamStart, streamEnd, rewardRate] = results.map((r) => r.result);
163
- const totalStakedFormatted = formatUnits(totalStaked, this.tokenDecimals);
164
- const escrowBalanceFormatted = formatUnits(escrowBalance, this.tokenDecimals);
165
- const rewardRateFormatted = formatUnits(rewardRate, this.tokenDecimals);
166
- // Calculate USD values if pricing is available
167
- const tokenPrice = this.pricing ? parseFloat(this.pricing.tokenUsd) : null;
168
- return {
169
- totalStaked: {
170
- raw: totalStaked,
171
- formatted: totalStakedFormatted,
172
- usd: tokenPrice ? (parseFloat(totalStakedFormatted) * tokenPrice).toString() : undefined,
173
- },
174
- escrowBalance: {
175
- raw: escrowBalance,
176
- formatted: escrowBalanceFormatted,
177
- usd: tokenPrice ? (parseFloat(escrowBalanceFormatted) * tokenPrice).toString() : undefined,
178
- },
179
- streamParams: {
180
- windowSeconds: windowSeconds,
181
- streamStart: streamStart,
182
- streamEnd: streamEnd,
183
- isActive: blockTime < streamEnd,
184
- },
185
- rewardRatePerSecond: {
186
- raw: rewardRate,
187
- formatted: rewardRateFormatted,
188
- usd: tokenPrice ? (parseFloat(rewardRateFormatted) * tokenPrice).toString() : undefined,
189
- },
190
- };
191
- }
192
- /**
193
- * Get user data from staking contract
194
- */
195
- async getUserData() {
196
- const results = await this.publicClient.multicall({
197
- contracts: [
198
- {
199
- address: this.stakingAddress,
200
- abi: LevrStaking_v1,
201
- functionName: "stakedBalanceOf",
202
- args: [this.userAddress],
203
- },
204
- {
205
- address: this.stakingAddress,
206
- abi: LevrStaking_v1,
207
- functionName: "aprBps",
208
- args: [],
209
- },
210
- ],
211
- });
212
- const stakedBalance = results[0].result;
213
- const aprBps = results[1].result;
214
- const stakedBalanceFormatted = formatUnits(stakedBalance, this.tokenDecimals);
215
- const tokenPrice = this.pricing ? parseFloat(this.pricing.tokenUsd) : null;
216
- return {
217
- stakedBalance: {
218
- raw: stakedBalance,
219
- formatted: stakedBalanceFormatted,
220
- usd: tokenPrice ? (parseFloat(stakedBalanceFormatted) * tokenPrice).toString() : undefined,
221
- },
222
- aprBps: {
223
- raw: aprBps,
224
- percentage: Number(aprBps) / 100,
225
- },
226
- };
227
- }
228
- /**
229
- * Get outstanding rewards for the token (for accrual purposes)
230
- */
231
- async getOutstandingRewards(tokenAddress) {
232
- const token = tokenAddress ?? this.tokenAddress;
233
- const decimals = token === this.tokenAddress ? this.tokenDecimals : 18; // Assume 18 for other tokens
234
- const result = await this.publicClient.readContract({
235
- address: this.stakingAddress,
236
- abi: LevrStaking_v1,
237
- functionName: "outstandingRewards",
238
- args: [token],
239
- });
240
- const availableFormatted = formatUnits(result[0], decimals);
241
- const pendingFormatted = formatUnits(result[1], decimals);
242
- // Calculate USD values if pricing is available
243
- let availableUsd;
244
- let pendingUsd;
245
- if (this.pricing) {
246
- const isTokenReward = token === this.tokenAddress;
247
- const wethAddress = WETH(this.chainId)?.address;
248
- const isWethReward = wethAddress && token.toLowerCase() === wethAddress.toLowerCase();
249
- if (isTokenReward) {
250
- const price = parseFloat(this.pricing.tokenUsd);
251
- availableUsd = (parseFloat(availableFormatted) * price).toString();
252
- pendingUsd = (parseFloat(pendingFormatted) * price).toString();
253
- }
254
- else if (isWethReward) {
255
- const price = parseFloat(this.pricing.wethUsd);
256
- availableUsd = (parseFloat(availableFormatted) * price).toString();
257
- pendingUsd = (parseFloat(pendingFormatted) * price).toString();
258
- }
259
- }
260
- return {
261
- available: {
262
- raw: result[0],
263
- formatted: availableFormatted,
264
- usd: availableUsd,
265
- },
266
- pending: {
267
- raw: result[1],
268
- formatted: pendingFormatted,
269
- usd: pendingUsd,
270
- },
271
- };
272
- }
273
- /**
274
- * Get claimable rewards for the current user and token
275
- */
276
- async getClaimableRewards(tokenAddress) {
277
- const token = tokenAddress ?? this.tokenAddress;
278
- const decimals = token === this.tokenAddress ? this.tokenDecimals : 18; // Assume 18 for other tokens
279
- const result = await this.publicClient.readContract({
280
- address: this.stakingAddress,
281
- abi: LevrStaking_v1,
282
- functionName: "claimableRewards",
283
- args: [this.userAddress, token],
284
- });
285
- const formatted = formatUnits(result, decimals);
286
- // Calculate USD value if pricing is available
287
- let usd;
288
- if (this.pricing) {
289
- const isTokenReward = token === this.tokenAddress;
290
- const wethAddress = WETH(this.chainId)?.address;
291
- const isWethReward = wethAddress && token.toLowerCase() === wethAddress.toLowerCase();
292
- if (isTokenReward) {
293
- const price = parseFloat(this.pricing.tokenUsd);
294
- usd = (parseFloat(formatted) * price).toString();
295
- }
296
- else if (isWethReward) {
297
- const price = parseFloat(this.pricing.wethUsd);
298
- usd = (parseFloat(formatted) * price).toString();
299
- }
300
- }
301
- return {
302
- claimable: {
303
- raw: result,
304
- formatted,
305
- usd,
306
- },
307
- };
308
- }
309
- /**
310
- * Get reward rate per second for a specific token
311
- */
312
- async getRewardRatePerSecond(tokenAddress) {
313
- const token = tokenAddress ?? this.tokenAddress;
314
- const decimals = token === this.tokenAddress ? this.tokenDecimals : 18; // Assume 18 for other tokens
315
- const result = await this.publicClient.readContract({
316
- address: this.stakingAddress,
317
- abi: LevrStaking_v1,
318
- functionName: "rewardRatePerSecond",
319
- args: [token],
320
- });
321
- const formatted = formatUnits(result, decimals);
322
- // Calculate USD value if pricing is available
323
- let usd;
324
- if (this.pricing) {
325
- const isTokenReward = token.toLowerCase() === this.tokenAddress.toLowerCase();
326
- const isWethReward = !isTokenReward;
327
- if (isTokenReward) {
328
- const price = parseFloat(this.pricing.tokenUsd);
329
- usd = (parseFloat(formatted) * price).toString();
330
- }
331
- else if (isWethReward) {
332
- const price = parseFloat(this.pricing.wethUsd);
333
- usd = (parseFloat(formatted) * price).toString();
334
- }
335
- }
336
- return {
337
- raw: result,
338
- formatted,
339
- usd,
340
- };
341
- }
342
110
  /**
343
111
  * Accrue rewards by triggering automatic collection from LP locker and claiming from ClankerFeeLocker
344
112
  */
@@ -388,58 +156,25 @@ export class Stake {
388
156
  return receipt;
389
157
  }
390
158
  /**
391
- * Calculate WETH APR using USD pricing data
392
- * No on-chain quotes needed - uses existing pricing data
393
- * Formula: (wethRewardRatePerSecond * secondsPerYear * wethPriceInTokens / totalStaked) * 10000
394
- *
395
- * @returns WETH APR in basis points and percentage
159
+ * Simulate voting power after an unstake (without executing the transaction)
160
+ * @param amount Amount to unstake
161
+ * @returns Predicted voting power in token-days after the unstake
396
162
  */
397
- async calculateWethApr() {
398
- const wethAddress = WETH(this.chainId)?.address;
399
- if (!wethAddress) {
400
- throw new Error("WETH address not found for this chain");
401
- }
402
- // Require pricing data to calculate APR
403
- if (!this.pricing) {
404
- return { raw: 0n, percentage: 0 };
405
- }
406
- // Get pool data and WETH reward rate
407
- const [poolData, wethRewardRate] = await Promise.all([
408
- this.getPoolData(),
409
- this.getRewardRatePerSecond(wethAddress),
410
- ]);
411
- const totalStaked = poolData.totalStaked.raw;
412
- // If no stakers or no WETH rewards, APR is 0
413
- if (totalStaked === 0n || wethRewardRate.raw === 0n) {
414
- return { raw: 0n, percentage: 0 };
415
- }
416
- // Calculate WETH price in underlying tokens using USD pricing
417
- // wethPriceInTokens = wethUsd / tokenUsd
418
- const wethUsd = parseFloat(this.pricing.wethUsd);
419
- const tokenUsd = parseFloat(this.pricing.tokenUsd);
420
- if (tokenUsd === 0) {
421
- return { raw: 0n, percentage: 0 };
422
- }
423
- const wethPriceInTokens = wethUsd / tokenUsd;
424
- // Calculate annual WETH rewards (rewards per second * seconds per year)
425
- const secondsPerYear = BigInt(365 * 24 * 60 * 60);
426
- const annualWethRewards = wethRewardRate.raw * secondsPerYear;
427
- // Convert WETH rewards to underlying token equivalent using bigint math
428
- // annualWethRewards is in WETH wei (18 decimals)
429
- // wethPriceInTokens is tokens per WETH (e.g., 3.75 billion for $3751 WETH / $0.000001 token)
430
- // Scale the price ratio to bigint with high precision (use 1e18 for precision)
431
- const priceScaleFactor = BigInt(1000000000000000000);
432
- const wethPriceScaled = BigInt(Math.floor(wethPriceInTokens * Number(priceScaleFactor)));
433
- // Formula: (annualWethRewards_wei * wethPrice_tokens/WETH) / 1e18
434
- // Since both are already in wei and we have token decimals:
435
- // Result = (annualWethRewards * wethPriceScaled) / priceScaleFactor
436
- // This gives us token wei (same decimals as token)
437
- const annualRewardsInUnderlying = (annualWethRewards * wethPriceScaled) / priceScaleFactor;
438
- // Calculate APR: (annualRewardsInUnderlying / totalStaked) * 10000
439
- const aprBps = totalStaked > 0n ? (annualRewardsInUnderlying * 10000n) / totalStaked : 0n;
163
+ async votingPowerOnUnstake(amount, userAddress) {
164
+ const user = userAddress ?? this.userAddress;
165
+ const parsedAmount = typeof amount === "bigint" ? amount : parseUnits(amount.toString(), this.tokenDecimals);
166
+ // Use simulateContract to get the return value without executing
167
+ const simulation = await this.publicClient.simulateContract({
168
+ address: this.stakingAddress,
169
+ abi: LevrStaking_v1,
170
+ functionName: "unstake",
171
+ args: [parsedAmount, user],
172
+ account: user,
173
+ });
174
+ const tokenDays = simulation.result;
440
175
  return {
441
- raw: aprBps,
442
- percentage: Number(aprBps) / 100, // Convert bps to percentage
176
+ tokenDays,
177
+ formatted: tokenDays.toLocaleString(),
443
178
  };
444
179
  }
445
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stake.js","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAE5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAiDlC,MAAM,OAAO,KAAK;IACR,MAAM,CAAiB;IACvB,YAAY,CAAiB;IAC7B,cAAc,CAAe;IAC7B,YAAY,CAAe;IAC3B,aAAa,CAAQ;IACrB,OAAO,CAAQ;IACf,WAAW,CAAe;IAC1B,gBAAgB,CAAgB;IAChC,OAAO,CAAgB;IAE/B,YAAY,MAAmB;QAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAEpF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAA;QAC3C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA,CAAC,gCAAgC;QAClF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;QAChD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAA;QAC/C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC/B,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAgC;QAC5C,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAgC;QAC1C,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,OAAO;YACrB,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC/C,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAiB;QACzC,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,kDAAkD;QAClD,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;QAC/C,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,cAAc;YAC5B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;YACvE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC/C,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;SAC9C,CAAC,CAAA;QAEF,OAAO;YACL,GAAG,EAAE,MAAM;YACX,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,4DAA4D;SACjG,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,2CAA2C;QAC3C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA;QACvD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QAExC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YAChD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,aAAa;iBAC5B;gBACD;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,eAAe;oBAC7B,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;iBAC1B;gBACD;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,qBAAqB;iBACpC;gBACD;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,aAAa;iBAC5B;gBACD;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,WAAW;iBAC1B;gBACD;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,qBAAqB;oBACnC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,GACnF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAO,CAAqD,CAAA;QAEnF,MAAM,oBAAoB,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACzE,MAAM,sBAAsB,GAAG,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC7E,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEvE,+CAA+C;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE1E,OAAO;YACL,WAAW,EAAE;gBACX,GAAG,EAAE,WAAW;gBAChB,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;aACzF;YACD,aAAa,EAAE;gBACb,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,sBAAsB;gBACjC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;aAC3F;YACD,YAAY,EAAE;gBACZ,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,WAAW;gBACxB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,SAAS,GAAG,SAAS;aAChC;YACD,mBAAmB,EAAE;gBACnB,GAAG,EAAE,UAAoB;gBACzB,SAAS,EAAE,mBAAmB;gBAC9B,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;aACxF;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YAChD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,iBAAiB;oBAC/B,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;iBACzB;gBACD;oBACE,OAAO,EAAE,IAAI,CAAC,cAAc;oBAC5B,GAAG,EAAE,cAAc;oBACnB,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,EAAE;iBACT;aACF;SACF,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAgB,CAAA;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAgB,CAAA;QAE1C,MAAM,sBAAsB,GAAG,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE1E,OAAO;YACL,aAAa,EAAE;gBACb,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,sBAAsB;gBACjC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;aAC3F;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,MAAM;gBACX,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;aACjC;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,YAA4B;QACtD,MAAM,KAAK,GAAG,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA;QAC/C,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC,6BAA6B;QAEpG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,oBAAoB;YAClC,IAAI,EAAE,CAAC,KAAK,CAAC;SACd,CAAC,CAAA;QAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;QAC3D,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;QAEzD,+CAA+C;QAC/C,IAAI,YAAgC,CAAA;QACpC,IAAI,UAA8B,CAAA;QAElC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,KAAK,KAAK,IAAI,CAAC,YAAY,CAAA;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;YAC/C,MAAM,YAAY,GAAG,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAA;YAErF,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC/C,YAAY,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;gBAClE,UAAU,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;YAChE,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC9C,YAAY,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;gBAClE,UAAU,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;YAChE,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS,EAAE;gBACT,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACd,SAAS,EAAE,kBAAkB;gBAC7B,GAAG,EAAE,YAAY;aAClB;YACD,OAAO,EAAE;gBACP,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACd,SAAS,EAAE,gBAAgB;gBAC3B,GAAG,EAAE,UAAU;aAChB;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,YAA4B;QACpD,MAAM,KAAK,GAAG,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA;QAC/C,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC,6BAA6B;QAEpG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,kBAAkB;YAChC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;SAChC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAE/C,8CAA8C;QAC9C,IAAI,GAAuB,CAAA;QAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,KAAK,KAAK,IAAI,CAAC,YAAY,CAAA;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;YAC/C,MAAM,YAAY,GAAG,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAA;YAErF,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC/C,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;YAClD,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC9C,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;YAClD,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS,EAAE;gBACT,GAAG,EAAE,MAAM;gBACX,SAAS;gBACT,GAAG;aACJ;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,YAA4B;QACvD,MAAM,KAAK,GAAG,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA;QAC/C,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC,6BAA6B;QAEpG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,qBAAqB;YACnC,IAAI,EAAE,CAAC,KAAK,CAAC;SACd,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAE/C,8CAA8C;QAC9C,IAAI,GAAuB,CAAA;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAA;YAC7E,MAAM,YAAY,GAAG,CAAC,aAAa,CAAA;YAEnC,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC/C,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;YAClD,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC9C,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;YAClD,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,EAAE,MAAM;YACX,SAAS;YACT,GAAG;SACJ,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,YAA4B;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,eAAe;YAC7B,IAAI,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,cAA+B;QACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;QAC3E,CAAC;QAED,gEAAgE;QAChE,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAClD,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,kBAAkB,CAAC;gBAC3B,GAAG,EAAE,cAAc;gBACnB,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,CAAC,YAAY,CAAC;aACrB,CAAC;SACH,CAAC,CAAC,CAAA;QAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,gBAAgB;YAC9B,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,kBAAkB;YAChC,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB;QAIpB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;QACnC,CAAC;QAED,qCAAqC;QACrC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;SACzC,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAA;QAE5C,6CAA6C;QAC7C,IAAI,WAAW,KAAK,EAAE,IAAI,cAAc,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;YACpD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;QACnC,CAAC;QAED,8DAA8D;QAC9D,yCAAyC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAElD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;QACnC,CAAC;QAED,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAAA;QAE5C,wEAAwE;QACxE,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QACjD,MAAM,iBAAiB,GAAG,cAAc,CAAC,GAAG,GAAG,cAAc,CAAA;QAE7D,wEAAwE;QACxE,iDAAiD;QACjD,6FAA6F;QAE7F,+EAA+E;QAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAExF,kEAAkE;QAClE,4DAA4D;QAC5D,oEAAoE;QACpE,mDAAmD;QACnD,MAAM,yBAAyB,GAAG,CAAC,iBAAiB,GAAG,eAAe,CAAC,GAAG,gBAAgB,CAAA;QAE1F,mEAAmE;QACnE,MAAM,MAAM,GAAG,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,yBAAyB,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;QAEzF,OAAO;YACL,GAAG,EAAE,MAAM;YACX,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,4BAA4B;SAC/D,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"stake.js","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"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"}