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.
- package/README.md +256 -235
- package/dist/esm/abis/LevrFactory_v1.js +63 -0
- package/dist/esm/abis/LevrGovernor_v1.js +15 -24
- package/dist/esm/abis/LevrStaking_v1.js +7 -1
- package/dist/esm/balance.js +19 -1
- package/dist/esm/balance.js.map +1 -1
- package/dist/esm/client/hook/index.js +14 -3
- package/dist/esm/client/hook/index.js.map +1 -1
- package/dist/esm/client/hook/use-fee-receivers.js +11 -29
- package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
- package/dist/esm/client/hook/use-governance.js +19 -254
- package/dist/esm/client/hook/use-governance.js.map +1 -1
- package/dist/esm/client/hook/use-pool.js +26 -0
- package/dist/esm/client/hook/use-pool.js.map +1 -0
- package/dist/esm/client/hook/use-prepare.js +6 -3
- package/dist/esm/client/hook/use-prepare.js.map +1 -1
- package/dist/esm/client/hook/use-project.js +24 -9
- package/dist/esm/client/hook/use-project.js.map +1 -1
- package/dist/esm/client/hook/use-proposal.js +48 -0
- package/dist/esm/client/hook/use-proposal.js.map +1 -0
- package/dist/esm/client/hook/use-stake.js +29 -195
- package/dist/esm/client/hook/use-stake.js.map +1 -1
- package/dist/esm/client/hook/use-swap.js +9 -13
- package/dist/esm/client/hook/use-swap.js.map +1 -1
- package/dist/esm/client/hook/use-user.js +25 -0
- package/dist/esm/client/hook/use-user.js.map +1 -0
- package/dist/esm/client/levr-provider.js +65 -107
- package/dist/esm/client/levr-provider.js.map +1 -1
- package/dist/esm/client/query-keys.js +9 -21
- package/dist/esm/client/query-keys.js.map +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/fee-receivers.js +25 -13
- package/dist/esm/fee-receivers.js.map +1 -1
- package/dist/esm/governance.js +35 -414
- package/dist/esm/governance.js.map +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pool.js +70 -0
- package/dist/esm/pool.js.map +1 -0
- package/dist/esm/project.js +389 -135
- package/dist/esm/project.js.map +1 -1
- package/dist/esm/proposal.js +156 -0
- package/dist/esm/proposal.js.map +1 -0
- package/dist/esm/quote/index.js +2 -2
- package/dist/esm/quote/index.js.map +1 -1
- package/dist/esm/stake.js +34 -299
- package/dist/esm/stake.js.map +1 -1
- package/dist/esm/treasury.js +162 -0
- package/dist/esm/treasury.js.map +1 -0
- package/dist/esm/user.js +153 -0
- package/dist/esm/user.js.map +1 -0
- package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
- package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
- package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
- package/dist/types/balance.d.ts +15 -0
- package/dist/types/balance.d.ts.map +1 -1
- package/dist/types/client/hook/index.d.ts +11 -3
- package/dist/types/client/hook/index.d.ts.map +1 -1
- package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
- package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
- package/dist/types/client/hook/use-governance.d.ts +4 -98
- package/dist/types/client/hook/use-governance.d.ts.map +1 -1
- package/dist/types/client/hook/use-pool.d.ts +12 -0
- package/dist/types/client/hook/use-pool.d.ts.map +1 -0
- package/dist/types/client/hook/use-prepare.d.ts +1 -2
- package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
- package/dist/types/client/hook/use-project.d.ts +5 -0
- package/dist/types/client/hook/use-project.d.ts.map +1 -1
- package/dist/types/client/hook/use-proposal.d.ts +18 -0
- package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
- package/dist/types/client/hook/use-stake.d.ts +14 -73
- package/dist/types/client/hook/use-stake.d.ts.map +1 -1
- package/dist/types/client/hook/use-swap.d.ts +3 -8
- package/dist/types/client/hook/use-swap.d.ts.map +1 -1
- package/dist/types/client/hook/use-user.d.ts +13 -0
- package/dist/types/client/hook/use-user.d.ts.map +1 -0
- package/dist/types/client/levr-provider.d.ts +30 -50
- package/dist/types/client/levr-provider.d.ts.map +1 -1
- package/dist/types/client/query-keys.d.ts +13 -25
- package/dist/types/client/query-keys.d.ts.map +1 -1
- package/dist/types/fee-receivers.d.ts +28 -0
- package/dist/types/fee-receivers.d.ts.map +1 -1
- package/dist/types/governance.d.ts +5 -92
- package/dist/types/governance.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pool.d.ts +590 -0
- package/dist/types/pool.d.ts.map +1 -0
- package/dist/types/project.d.ts +56 -1
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/proposal.d.ts +1161 -0
- package/dist/types/proposal.d.ts.map +1 -0
- package/dist/types/quote/index.d.ts +2 -2
- package/dist/types/quote/index.d.ts.map +1 -1
- package/dist/types/stake.d.ts +16 -41
- package/dist/types/stake.d.ts.map +1 -1
- package/dist/types/treasury.d.ts +16 -0
- package/dist/types/treasury.d.ts.map +1 -0
- package/dist/types/user.d.ts +188 -0
- package/dist/types/user.d.ts.map +1 -0
- package/package.json +5 -2
- package/dist/esm/client/hook/use-balance.js +0 -57
- package/dist/esm/client/hook/use-balance.js.map +0 -1
- package/dist/esm/client/hook/use-projects.js +0 -22
- package/dist/esm/client/hook/use-projects.js.map +0 -1
- package/dist/esm/client/hook/use-proposals.js +0 -29
- package/dist/esm/client/hook/use-proposals.js.map +0 -1
- package/dist/esm/projects.js +0 -184
- package/dist/esm/projects.js.map +0 -1
- package/dist/esm/proposals.js +0 -98
- package/dist/esm/proposals.js.map +0 -1
- package/dist/types/client/hook/use-balance.d.ts +0 -20
- package/dist/types/client/hook/use-balance.d.ts.map +0 -1
- package/dist/types/client/hook/use-projects.d.ts +0 -6
- package/dist/types/client/hook/use-projects.d.ts.map +0 -1
- package/dist/types/client/hook/use-proposals.d.ts +0 -16
- package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
- package/dist/types/projects.d.ts +0 -20
- package/dist/types/projects.d.ts.map +0 -1
- package/dist/types/proposals.d.ts +0 -20
- 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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"}
|
package/dist/esm/quote/index.js
CHANGED
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
* ```
|
|
55
55
|
*/
|
|
56
56
|
// Import implementations
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
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.
|
|
20
|
-
this.tokenAddress = config.
|
|
21
|
-
this.tokenDecimals = config.
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
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
|
|
398
|
-
const
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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
|
-
|
|
442
|
-
|
|
176
|
+
tokenDays,
|
|
177
|
+
formatted: tokenDays.toLocaleString(),
|
|
443
178
|
};
|
|
444
179
|
}
|
|
445
180
|
}
|
package/dist/esm/stake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stake.js","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stake.js","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAG/D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAkDlC,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;IAExC,YAAY,MAAmB;QAC7B,qFAAqF;QACrF,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAEnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;QAC5C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAA;QAChD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAA;QAClD,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,OAAO,CAAC,SAAS,CAAA;IAClD,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;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAiB;QAIzC,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,MAAM,GAAG;YACb,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;SAChB,CAAA;QAEV,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAEpD,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;YACL,OAAO;YACP,cAAc;SACf,CAAA;IACH,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,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;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CACxB,MAAgC,EAChC,WAA2B;QAE3B,MAAM,IAAI,GAAG,WAAW,IAAI,IAAI,CAAC,WAAW,CAAA;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,iEAAiE;QACjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;YAC1D,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,UAAU,CAAC,MAA2B,CAAA;QAExD,OAAO;YACL,SAAS;YACT,SAAS,EAAE,SAAS,CAAC,cAAc,EAAE;SACtC,CAAA;IACH,CAAC;CACF"}
|