levr-sdk 0.2.2 → 0.3.0

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 (131) hide show
  1. package/dist/esm/abis/ClankerAirdropV2.js +289 -0
  2. package/dist/esm/abis/ClankerVault.js +215 -0
  3. package/dist/esm/abis/LevrFactory_v1.js +23 -0
  4. package/dist/esm/abis/LevrFeeSplitterFactory_v1.js +197 -0
  5. package/dist/esm/abis/LevrFeeSplitter_v1.js +544 -0
  6. package/dist/esm/abis/LevrGovernor_v1.js +10 -0
  7. package/dist/esm/abis/index.js +4 -0
  8. package/dist/esm/airdrop.js +160 -0
  9. package/dist/esm/airdrop.js.map +1 -0
  10. package/dist/esm/build-calldatas-v4.js +3 -1
  11. package/dist/esm/build-calldatas-v4.js.map +1 -1
  12. package/dist/esm/build-clanker-v4.js +75 -25
  13. package/dist/esm/build-clanker-v4.js.map +1 -1
  14. package/dist/esm/client/hook/index.js +10 -0
  15. package/dist/esm/client/hook/index.js.map +1 -1
  16. package/dist/esm/client/hook/use-airdrop.js +8 -4
  17. package/dist/esm/client/hook/use-airdrop.js.map +1 -1
  18. package/dist/esm/client/hook/use-configure-splits.js +43 -0
  19. package/dist/esm/client/hook/use-configure-splits.js.map +1 -0
  20. package/dist/esm/client/hook/use-deploy.js +3 -3
  21. package/dist/esm/client/hook/use-deploy.js.map +1 -1
  22. package/dist/esm/client/hook/use-factory.js +33 -0
  23. package/dist/esm/client/hook/use-factory.js.map +1 -0
  24. package/dist/esm/client/hook/use-fee-receivers.js +3 -2
  25. package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
  26. package/dist/esm/client/hook/use-governance.js +18 -3
  27. package/dist/esm/client/hook/use-governance.js.map +1 -1
  28. package/dist/esm/client/hook/use-project.js +7 -3
  29. package/dist/esm/client/hook/use-project.js.map +1 -1
  30. package/dist/esm/client/hook/use-proposal.js +11 -5
  31. package/dist/esm/client/hook/use-proposal.js.map +1 -1
  32. package/dist/esm/client/hook/use-stake.js +1 -1
  33. package/dist/esm/client/hook/use-stake.js.map +1 -1
  34. package/dist/esm/client/hook/use-vault.js +67 -0
  35. package/dist/esm/client/hook/use-vault.js.map +1 -0
  36. package/dist/esm/client/levr-provider.js +18 -2
  37. package/dist/esm/client/levr-provider.js.map +1 -1
  38. package/dist/esm/client/query-keys.js +13 -1
  39. package/dist/esm/client/query-keys.js.map +1 -1
  40. package/dist/esm/constants.js +83 -6
  41. package/dist/esm/constants.js.map +1 -1
  42. package/dist/esm/deploy-v4.js +56 -3
  43. package/dist/esm/deploy-v4.js.map +1 -1
  44. package/dist/esm/factory.js +94 -0
  45. package/dist/esm/factory.js.map +1 -0
  46. package/dist/esm/fee-receivers.js +265 -4
  47. package/dist/esm/fee-receivers.js.map +1 -1
  48. package/dist/esm/fee-splitter.js +68 -0
  49. package/dist/esm/fee-splitter.js.map +1 -0
  50. package/dist/esm/governance.js +86 -9
  51. package/dist/esm/governance.js.map +1 -1
  52. package/dist/esm/index.js +5 -1
  53. package/dist/esm/index.js.map +1 -1
  54. package/dist/esm/ipfs-merkle-tree.js +130 -0
  55. package/dist/esm/ipfs-merkle-tree.js.map +1 -0
  56. package/dist/esm/project.js +114 -26
  57. package/dist/esm/project.js.map +1 -1
  58. package/dist/esm/schema/levr.schema.js +94 -33
  59. package/dist/esm/schema/levr.schema.js.map +1 -1
  60. package/dist/esm/stake.js +157 -19
  61. package/dist/esm/stake.js.map +1 -1
  62. package/dist/esm/vault.js +136 -0
  63. package/dist/esm/vault.js.map +1 -0
  64. package/dist/types/abis/ClankerAirdropV2.d.ts +573 -0
  65. package/dist/types/abis/ClankerVault.d.ts +407 -0
  66. package/dist/types/abis/LevrFactory_v1.d.ts +18 -0
  67. package/dist/types/abis/LevrFeeSplitterFactory_v1.d.ts +149 -0
  68. package/dist/types/abis/LevrFeeSplitter_v1.d.ts +422 -0
  69. package/dist/types/abis/LevrGovernor_v1.d.ts +8 -0
  70. package/dist/types/abis/index.d.ts +4 -0
  71. package/dist/types/airdrop.d.ts +18 -0
  72. package/dist/types/airdrop.d.ts.map +1 -0
  73. package/dist/types/build-calldatas-v4.d.ts +3 -0
  74. package/dist/types/build-calldatas-v4.d.ts.map +1 -1
  75. package/dist/types/build-clanker-v4.d.ts +6 -1
  76. package/dist/types/build-clanker-v4.d.ts.map +1 -1
  77. package/dist/types/client/hook/index.d.ts +10 -0
  78. package/dist/types/client/hook/index.d.ts.map +1 -1
  79. package/dist/types/client/hook/use-airdrop.d.ts +3 -1
  80. package/dist/types/client/hook/use-airdrop.d.ts.map +1 -1
  81. package/dist/types/client/hook/use-configure-splits.d.ts +17 -0
  82. package/dist/types/client/hook/use-configure-splits.d.ts.map +1 -0
  83. package/dist/types/client/hook/use-deploy.d.ts +21 -14
  84. package/dist/types/client/hook/use-deploy.d.ts.map +1 -1
  85. package/dist/types/client/hook/use-factory.d.ts +34 -0
  86. package/dist/types/client/hook/use-factory.d.ts.map +1 -0
  87. package/dist/types/client/hook/use-fee-receivers.d.ts +1 -1
  88. package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
  89. package/dist/types/client/hook/use-governance.d.ts +18 -2
  90. package/dist/types/client/hook/use-governance.d.ts.map +1 -1
  91. package/dist/types/client/hook/use-project.d.ts +169 -1
  92. package/dist/types/client/hook/use-project.d.ts.map +1 -1
  93. package/dist/types/client/hook/use-proposal.d.ts +3 -2
  94. package/dist/types/client/hook/use-proposal.d.ts.map +1 -1
  95. package/dist/types/client/hook/use-vault.d.ts +13 -0
  96. package/dist/types/client/hook/use-vault.d.ts.map +1 -0
  97. package/dist/types/client/levr-provider.d.ts +15 -1
  98. package/dist/types/client/levr-provider.d.ts.map +1 -1
  99. package/dist/types/client/query-keys.d.ts +13 -1
  100. package/dist/types/client/query-keys.d.ts.map +1 -1
  101. package/dist/types/constants.d.ts +59 -1
  102. package/dist/types/constants.d.ts.map +1 -1
  103. package/dist/types/deploy-v4.d.ts +3 -1
  104. package/dist/types/deploy-v4.d.ts.map +1 -1
  105. package/dist/types/factory.d.ts +21 -0
  106. package/dist/types/factory.d.ts.map +1 -0
  107. package/dist/types/fee-receivers.d.ts +1822 -1
  108. package/dist/types/fee-receivers.d.ts.map +1 -1
  109. package/dist/types/fee-splitter.d.ts +23 -0
  110. package/dist/types/fee-splitter.d.ts.map +1 -0
  111. package/dist/types/governance.d.ts +18 -2
  112. package/dist/types/governance.d.ts.map +1 -1
  113. package/dist/types/index.d.ts +5 -1
  114. package/dist/types/index.d.ts.map +1 -1
  115. package/dist/types/ipfs-merkle-tree.d.ts +72 -0
  116. package/dist/types/ipfs-merkle-tree.d.ts.map +1 -0
  117. package/dist/types/project.d.ts +10 -2
  118. package/dist/types/project.d.ts.map +1 -1
  119. package/dist/types/proposal.d.ts +16 -0
  120. package/dist/types/proposal.d.ts.map +1 -1
  121. package/dist/types/schema/levr.schema.d.ts +16 -4
  122. package/dist/types/schema/levr.schema.d.ts.map +1 -1
  123. package/dist/types/stake.d.ts +33 -2
  124. package/dist/types/stake.d.ts.map +1 -1
  125. package/dist/types/vault.d.ts +70 -0
  126. package/dist/types/vault.d.ts.map +1 -0
  127. package/package.json +1 -1
  128. package/dist/esm/treasury.js +0 -90
  129. package/dist/esm/treasury.js.map +0 -1
  130. package/dist/types/treasury.d.ts +0 -11
  131. package/dist/types/treasury.d.ts.map +0 -1
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Vault utilities for interacting with the Clanker Vault contract
3
+ * This module provides server-side functions to retrieve and interact with vault state
4
+ */
5
+ import { ClankerVault } from "./abis/index.js";
6
+ import { GET_VAULT_ADDRESS } from "./constants.js";
7
+ /**
8
+ * Vault status enum
9
+ */
10
+ export var VaultStatus;
11
+ (function (VaultStatus) {
12
+ VaultStatus["LOCKED"] = "locked";
13
+ VaultStatus["VESTING"] = "vesting";
14
+ VaultStatus["VESTED"] = "vested";
15
+ })(VaultStatus || (VaultStatus = {}));
16
+ /**
17
+ * Build contract calls for vault data
18
+ * @param vaultAddress - Vault contract address
19
+ * @param tokenAddress - Token address to query
20
+ * @returns Array of contract calls
21
+ */
22
+ function getVaultContracts(vaultAddress, tokenAddress) {
23
+ return [
24
+ {
25
+ address: vaultAddress,
26
+ abi: ClankerVault,
27
+ functionName: "allocation",
28
+ args: [tokenAddress],
29
+ },
30
+ {
31
+ address: vaultAddress,
32
+ abi: ClankerVault,
33
+ functionName: "amountAvailableToClaim",
34
+ args: [tokenAddress],
35
+ },
36
+ ];
37
+ }
38
+ /**
39
+ * Parse vault contract results
40
+ * @param results - Array of contract call results
41
+ * @returns Parsed vault state or undefined if allocation doesn't exist
42
+ */
43
+ function parseVaultData(results) {
44
+ const allocationResult = results[0];
45
+ const claimableResult = results[1];
46
+ // Check if allocation call failed
47
+ if (allocationResult.status === "failure") {
48
+ return undefined;
49
+ }
50
+ const allocation = allocationResult.result;
51
+ const claimable = (claimableResult.result ?? 0n);
52
+ return {
53
+ allocation: {
54
+ token: allocation[0],
55
+ amountTotal: allocation[1],
56
+ amountClaimed: allocation[2],
57
+ lockupEndTime: allocation[3],
58
+ vestingEndTime: allocation[4],
59
+ admin: allocation[5],
60
+ },
61
+ claimable,
62
+ };
63
+ }
64
+ /**
65
+ * Fetch vault data using multicall
66
+ * @param publicClient - Viem public client
67
+ * @param tokenAddress - Token address to query
68
+ * @param chainId - Chain ID (optional, can be inferred from publicClient)
69
+ * @returns Parsed vault data or undefined if allocation doesn't exist
70
+ */
71
+ export async function fetchVaultData(publicClient, tokenAddress, chainId) {
72
+ const actualChainId = chainId || publicClient.chain?.id;
73
+ if (!actualChainId)
74
+ throw new Error("Chain ID not found");
75
+ const vaultAddress = GET_VAULT_ADDRESS(actualChainId);
76
+ if (!vaultAddress)
77
+ throw new Error(`Vault not configured for chain ${actualChainId}`);
78
+ try {
79
+ const contracts = getVaultContracts(vaultAddress, tokenAddress);
80
+ const results = await publicClient.multicall({ contracts });
81
+ return parseVaultData(results);
82
+ }
83
+ catch {
84
+ return undefined;
85
+ }
86
+ }
87
+ /**
88
+ * Get vault status with computed messages
89
+ * @param data - Vault data from fetchVaultData
90
+ * @param blockTimestamp - Current block timestamp in seconds (for consistency)
91
+ * @returns Vault status data with messages
92
+ */
93
+ export function getVaultStatus(data, blockTimestamp) {
94
+ const lockupEndTime = Number(data.allocation.lockupEndTime);
95
+ const vestingEndTime = Number(data.allocation.vestingEndTime);
96
+ let status;
97
+ let statusMessage;
98
+ let descriptionMessage;
99
+ let daysRemaining;
100
+ if (blockTimestamp < lockupEndTime) {
101
+ // Still in lockup
102
+ status = VaultStatus.LOCKED;
103
+ daysRemaining = Math.ceil((lockupEndTime - blockTimestamp) / (24 * 60 * 60));
104
+ statusMessage = "Tokens Locked";
105
+ descriptionMessage = `Your tokens will be available to claim in ${daysRemaining} days.`;
106
+ }
107
+ else if (blockTimestamp < vestingEndTime) {
108
+ // In vesting period
109
+ status = VaultStatus.VESTING;
110
+ daysRemaining = Math.ceil((vestingEndTime - blockTimestamp) / (24 * 60 * 60));
111
+ statusMessage = "Vesting in Progress";
112
+ descriptionMessage = `Tokens are vesting linearly. ${daysRemaining} days until fully vested.`;
113
+ }
114
+ else {
115
+ // Fully vested
116
+ status = VaultStatus.VESTED;
117
+ daysRemaining = 0;
118
+ statusMessage = "Vesting Complete";
119
+ descriptionMessage =
120
+ data.claimable > 0n
121
+ ? "All tokens are now available to claim."
122
+ : "All tokens in this vault have been claimed.";
123
+ }
124
+ return {
125
+ status,
126
+ statusMessage,
127
+ descriptionMessage,
128
+ daysRemaining,
129
+ claimable: data.claimable,
130
+ total: data.allocation.amountTotal,
131
+ claimed: data.allocation.amountClaimed,
132
+ lockupEndTime: data.allocation.lockupEndTime,
133
+ vestingEndTime: data.allocation.vestingEndTime,
134
+ };
135
+ }
136
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/vault.ts"],"names":[],"mappings":"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"}