@andrewkimjoseph/celina-sdk 0.22.0 → 0.23.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/build/abis/election.d.ts +16 -1
- package/build/abis/election.js +11 -1
- package/build/abis/election.js.map +1 -1
- package/build/analytics/mcp-tool-events.js +2 -0
- package/build/analytics/mcp-tool-events.js.map +1 -1
- package/build/analytics/wallet-extract.js +2 -0
- package/build/analytics/wallet-extract.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js.map +1 -1
- package/build/services/staking.service.d.ts +11 -0
- package/build/services/staking.service.js +112 -3
- package/build/services/staking.service.js.map +1 -1
- package/build/src/abis/election.d.ts +16 -1
- package/build/src/abis/election.js +11 -1
- package/build/src/abis/election.js.map +1 -1
- package/build/src/analytics/mcp-tool-events.js +2 -0
- package/build/src/analytics/mcp-tool-events.js.map +1 -1
- package/build/src/analytics/wallet-extract.js +2 -0
- package/build/src/analytics/wallet-extract.js.map +1 -1
- package/build/src/index.d.ts +1 -0
- package/build/src/index.js.map +1 -1
- package/build/src/services/staking.service.d.ts +11 -0
- package/build/src/services/staking.service.js +112 -3
- package/build/src/services/staking.service.js.map +1 -1
- package/build/src/tools/domains/staking.js +18 -1
- package/build/src/tools/domains/staking.js.map +1 -1
- package/build/src/utils/stake-eligibility.d.ts +38 -0
- package/build/src/utils/stake-eligibility.js +55 -0
- package/build/src/utils/stake-eligibility.js.map +1 -0
- package/build/tests/catalog/domains/chain-ext.js +51 -0
- package/build/tests/catalog/domains/chain-ext.js.map +1 -1
- package/build/tools/domains/staking.js +18 -1
- package/build/tools/domains/staking.js.map +1 -1
- package/build/utils/stake-eligibility.d.ts +38 -0
- package/build/utils/stake-eligibility.js +55 -0
- package/build/utils/stake-eligibility.js.map +1 -0
- package/package.json +1 -1
|
@@ -90,9 +90,26 @@ export const stakingToolDefinitions = [
|
|
|
90
90
|
return runtime.celina.staking.getDelegationInfo(target);
|
|
91
91
|
},
|
|
92
92
|
},
|
|
93
|
+
{
|
|
94
|
+
name: "get_stake_eligibility",
|
|
95
|
+
description: "Check whether a stake would succeed before execute_stake. Validates Election.canReceiveVotes (group headroom), non-voting locked CELO balance, and Celo account registration. If canStake is false, read reasons — common failure is 'Group cannot receive votes' when a group is at capacity.",
|
|
96
|
+
inputSchema: z.object({
|
|
97
|
+
group_address: addressSchema,
|
|
98
|
+
amount: z.string().describe("CELO amount to stake (human-readable, from locked balance)"),
|
|
99
|
+
address: optionalWalletAddressSchema,
|
|
100
|
+
}),
|
|
101
|
+
families: ["read"],
|
|
102
|
+
mcp: { title: "Get Stake Eligibility", annotations: readOnly },
|
|
103
|
+
handler: async (runtime, input) => {
|
|
104
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
105
|
+
address: input.address,
|
|
106
|
+
});
|
|
107
|
+
return runtime.celina.staking.getStakeEligibility(target, input.group_address, input.amount);
|
|
108
|
+
},
|
|
109
|
+
},
|
|
93
110
|
{
|
|
94
111
|
name: "execute_stake",
|
|
95
|
-
description: "Stake locked CELO with a validator group. Requires humanness verification and registered Celo account.",
|
|
112
|
+
description: "Stake locked CELO with a validator group. Requires humanness verification and registered Celo account. Call get_stake_eligibility first.",
|
|
96
113
|
inputSchema: z.object({
|
|
97
114
|
group_address: addressSchema,
|
|
98
115
|
amount: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/tools/domains/staking.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/tools/domains/staking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type StakeEligibilityInput = {
|
|
2
|
+
address: `0x${string}`;
|
|
3
|
+
groupAddress: `0x${string}`;
|
|
4
|
+
groupName?: string;
|
|
5
|
+
amount: string;
|
|
6
|
+
amountWei: bigint;
|
|
7
|
+
/** Remaining vote headroom before the group hits its cap. */
|
|
8
|
+
canReceiveVotes: bigint;
|
|
9
|
+
/** On-chain Election.canReceiveVotes(group, amount) — exact gate used by vote(). */
|
|
10
|
+
canReceiveAmount: boolean;
|
|
11
|
+
nonvotingLocked: bigint;
|
|
12
|
+
accountRegistered: boolean;
|
|
13
|
+
inEligibleGroups: boolean;
|
|
14
|
+
};
|
|
15
|
+
/** Headroom = max(0, capacity - totalVotesForGroup). */
|
|
16
|
+
export declare function computeGroupVoteHeadroom(capacity: bigint, totalVotesForGroup: bigint): bigint;
|
|
17
|
+
export type StakeEligibilityResult = {
|
|
18
|
+
network: "mainnet";
|
|
19
|
+
address: `0x${string}`;
|
|
20
|
+
groupAddress: `0x${string}`;
|
|
21
|
+
groupName?: string;
|
|
22
|
+
amount: string;
|
|
23
|
+
amountWei: string;
|
|
24
|
+
canReceiveVotes: string;
|
|
25
|
+
canReceiveVotesFormatted: string;
|
|
26
|
+
nonvotingLocked: string;
|
|
27
|
+
nonvotingLockedFormatted: string;
|
|
28
|
+
accountRegistered: boolean;
|
|
29
|
+
inEligibleGroups: boolean;
|
|
30
|
+
maxStakeAmount: string;
|
|
31
|
+
maxStakeAmountFormatted: string;
|
|
32
|
+
canStake: boolean;
|
|
33
|
+
reasons: string[];
|
|
34
|
+
};
|
|
35
|
+
export declare function deriveStakeEligibility(input: StakeEligibilityInput): StakeEligibilityResult;
|
|
36
|
+
export declare function assertStakeEligible(result: StakeEligibilityResult): void;
|
|
37
|
+
/** @internal Exported for tests — human-readable CELO from wei without trailing zeros noise. */
|
|
38
|
+
export declare function formatStakeAmountFromWei(amountWei: bigint): string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { formatUnits } from "viem";
|
|
2
|
+
import { formatCeloAmount } from "./celo-format.js";
|
|
3
|
+
/** Headroom = max(0, capacity - totalVotesForGroup). */
|
|
4
|
+
export function computeGroupVoteHeadroom(capacity, totalVotesForGroup) {
|
|
5
|
+
return capacity > totalVotesForGroup ? capacity - totalVotesForGroup : 0n;
|
|
6
|
+
}
|
|
7
|
+
export function deriveStakeEligibility(input) {
|
|
8
|
+
const reasons = [];
|
|
9
|
+
if (!input.accountRegistered) {
|
|
10
|
+
reasons.push("Address not registered — call execute_register_celo_account first.");
|
|
11
|
+
}
|
|
12
|
+
if (input.amountWei <= 0n) {
|
|
13
|
+
reasons.push("Stake amount must be greater than zero.");
|
|
14
|
+
}
|
|
15
|
+
if (!input.canReceiveAmount || input.canReceiveVotes === 0n) {
|
|
16
|
+
reasons.push("Group cannot receive votes (at capacity).");
|
|
17
|
+
}
|
|
18
|
+
else if (input.amountWei > input.canReceiveVotes) {
|
|
19
|
+
reasons.push(`Amount ${input.amount} CELO exceeds group headroom ${formatCeloAmount(input.canReceiveVotes)} CELO.`);
|
|
20
|
+
}
|
|
21
|
+
if (input.amountWei > input.nonvotingLocked) {
|
|
22
|
+
reasons.push(`Insufficient non-voting locked CELO (have ${formatCeloAmount(input.nonvotingLocked)}, need ${input.amount} CELO).`);
|
|
23
|
+
}
|
|
24
|
+
const maxStakeAmount = input.canReceiveVotes < input.nonvotingLocked
|
|
25
|
+
? input.canReceiveVotes
|
|
26
|
+
: input.nonvotingLocked;
|
|
27
|
+
return {
|
|
28
|
+
network: "mainnet",
|
|
29
|
+
address: input.address,
|
|
30
|
+
groupAddress: input.groupAddress,
|
|
31
|
+
groupName: input.groupName,
|
|
32
|
+
amount: input.amount,
|
|
33
|
+
amountWei: input.amountWei.toString(),
|
|
34
|
+
canReceiveVotes: input.canReceiveVotes.toString(),
|
|
35
|
+
canReceiveVotesFormatted: formatCeloAmount(input.canReceiveVotes),
|
|
36
|
+
nonvotingLocked: input.nonvotingLocked.toString(),
|
|
37
|
+
nonvotingLockedFormatted: formatCeloAmount(input.nonvotingLocked),
|
|
38
|
+
accountRegistered: input.accountRegistered,
|
|
39
|
+
inEligibleGroups: input.inEligibleGroups,
|
|
40
|
+
maxStakeAmount: maxStakeAmount.toString(),
|
|
41
|
+
maxStakeAmountFormatted: formatCeloAmount(maxStakeAmount),
|
|
42
|
+
canStake: reasons.length === 0,
|
|
43
|
+
reasons,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function assertStakeEligible(result) {
|
|
47
|
+
if (!result.canStake) {
|
|
48
|
+
throw new Error(result.reasons.join(" "));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** @internal Exported for tests — human-readable CELO from wei without trailing zeros noise. */
|
|
52
|
+
export function formatStakeAmountFromWei(amountWei) {
|
|
53
|
+
return formatUnits(amountWei, 18).replace(/\.?0+$/, "") || "0";
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=stake-eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stake-eligibility.js","sourceRoot":"","sources":["../../src/utils/stake-eligibility.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewkimjoseph/celina-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.1",
|
|
4
4
|
"description": "Celina SDK — Celo mainnet reads, unsigned transaction preparation, and ERC-4337 createAAClient for sponsored UserOps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|