@karn_lat/protocol-sdk 0.1.0-alpha.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 (157) hide show
  1. package/README.md +68 -0
  2. package/dist/__tests__/setup.d.ts +14 -0
  3. package/dist/__tests__/setup.d.ts.map +1 -0
  4. package/dist/__tests__/setup.js +44 -0
  5. package/dist/__tests__/setup.js.map +1 -0
  6. package/dist/clients/GovernorClient.d.ts +9 -0
  7. package/dist/clients/GovernorClient.d.ts.map +1 -0
  8. package/dist/clients/GovernorClient.js +18 -0
  9. package/dist/clients/GovernorClient.js.map +1 -0
  10. package/dist/clients/TreasuryClient.d.ts +9 -0
  11. package/dist/clients/TreasuryClient.d.ts.map +1 -0
  12. package/dist/clients/TreasuryClient.js +18 -0
  13. package/dist/clients/TreasuryClient.js.map +1 -0
  14. package/dist/clients/ValocracyClient.d.ts +13 -0
  15. package/dist/clients/ValocracyClient.d.ts.map +1 -0
  16. package/dist/clients/ValocracyClient.js +32 -0
  17. package/dist/clients/ValocracyClient.js.map +1 -0
  18. package/dist/clients/index.d.ts +4 -0
  19. package/dist/clients/index.d.ts.map +1 -0
  20. package/dist/clients/index.js +4 -0
  21. package/dist/clients/index.js.map +1 -0
  22. package/dist/generated/governor/src/index.d.ts +400 -0
  23. package/dist/generated/governor/src/index.d.ts.map +1 -0
  24. package/dist/generated/governor/src/index.js +63 -0
  25. package/dist/generated/governor/src/index.js.map +1 -0
  26. package/dist/generated/treasury/src/index.d.ts +474 -0
  27. package/dist/generated/treasury/src/index.d.ts.map +1 -0
  28. package/dist/generated/treasury/src/index.js +54 -0
  29. package/dist/generated/treasury/src/index.js.map +1 -0
  30. package/dist/generated/valocracy/src/index.d.ts +807 -0
  31. package/dist/generated/valocracy/src/index.d.ts.map +1 -0
  32. package/dist/generated/valocracy/src/index.js +114 -0
  33. package/dist/generated/valocracy/src/index.js.map +1 -0
  34. package/dist/index.d.ts +5 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +5 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/react/hooks/useGovernor.d.ts +24 -0
  39. package/dist/react/hooks/useGovernor.d.ts.map +1 -0
  40. package/dist/react/hooks/useGovernor.js +45 -0
  41. package/dist/react/hooks/useGovernor.js.map +1 -0
  42. package/dist/react/hooks/useMultiWallet.d.ts +35 -0
  43. package/dist/react/hooks/useMultiWallet.d.ts.map +1 -0
  44. package/dist/react/hooks/useMultiWallet.js +87 -0
  45. package/dist/react/hooks/useMultiWallet.js.map +1 -0
  46. package/dist/react/hooks/useTreasury.d.ts +14 -0
  47. package/dist/react/hooks/useTreasury.d.ts.map +1 -0
  48. package/dist/react/hooks/useTreasury.js +45 -0
  49. package/dist/react/hooks/useTreasury.js.map +1 -0
  50. package/dist/react/hooks/useValocracy.d.ts +16 -0
  51. package/dist/react/hooks/useValocracy.d.ts.map +1 -0
  52. package/dist/react/hooks/useValocracy.js +54 -0
  53. package/dist/react/hooks/useValocracy.js.map +1 -0
  54. package/dist/react/hooks/useWallet.d.ts +13 -0
  55. package/dist/react/hooks/useWallet.d.ts.map +1 -0
  56. package/dist/react/hooks/useWallet.js +51 -0
  57. package/dist/react/hooks/useWallet.js.map +1 -0
  58. package/dist/react/index.d.ts +7 -0
  59. package/dist/react/index.d.ts.map +1 -0
  60. package/dist/react/index.js +7 -0
  61. package/dist/react/index.js.map +1 -0
  62. package/dist/react/providers/KarnProvider.d.ts +25 -0
  63. package/dist/react/providers/KarnProvider.d.ts.map +1 -0
  64. package/dist/react/providers/KarnProvider.js +25 -0
  65. package/dist/react/providers/KarnProvider.js.map +1 -0
  66. package/dist/utils/decay.d.ts +19 -0
  67. package/dist/utils/decay.d.ts.map +1 -0
  68. package/dist/utils/decay.js +33 -0
  69. package/dist/utils/decay.js.map +1 -0
  70. package/dist/utils/index.d.ts +4 -0
  71. package/dist/utils/index.d.ts.map +1 -0
  72. package/dist/utils/index.js +4 -0
  73. package/dist/utils/index.js.map +1 -0
  74. package/dist/utils/polling.d.ts +75 -0
  75. package/dist/utils/polling.d.ts.map +1 -0
  76. package/dist/utils/polling.js +104 -0
  77. package/dist/utils/polling.js.map +1 -0
  78. package/dist/utils/simulation.d.ts +67 -0
  79. package/dist/utils/simulation.d.ts.map +1 -0
  80. package/dist/utils/simulation.js +88 -0
  81. package/dist/utils/simulation.js.map +1 -0
  82. package/dist/wallet/WalletManager.d.ts +77 -0
  83. package/dist/wallet/WalletManager.d.ts.map +1 -0
  84. package/dist/wallet/WalletManager.js +268 -0
  85. package/dist/wallet/WalletManager.js.map +1 -0
  86. package/dist/wallet/adapters/AlbedoAdapter.d.ts +47 -0
  87. package/dist/wallet/adapters/AlbedoAdapter.d.ts.map +1 -0
  88. package/dist/wallet/adapters/AlbedoAdapter.js +84 -0
  89. package/dist/wallet/adapters/AlbedoAdapter.js.map +1 -0
  90. package/dist/wallet/adapters/FreighterAdapter.d.ts +42 -0
  91. package/dist/wallet/adapters/FreighterAdapter.d.ts.map +1 -0
  92. package/dist/wallet/adapters/FreighterAdapter.js +107 -0
  93. package/dist/wallet/adapters/FreighterAdapter.js.map +1 -0
  94. package/dist/wallet/adapters/LobstrAdapter.d.ts +34 -0
  95. package/dist/wallet/adapters/LobstrAdapter.d.ts.map +1 -0
  96. package/dist/wallet/adapters/LobstrAdapter.js +89 -0
  97. package/dist/wallet/adapters/LobstrAdapter.js.map +1 -0
  98. package/dist/wallet/adapters/RabetAdapter.d.ts +39 -0
  99. package/dist/wallet/adapters/RabetAdapter.d.ts.map +1 -0
  100. package/dist/wallet/adapters/RabetAdapter.js +104 -0
  101. package/dist/wallet/adapters/RabetAdapter.js.map +1 -0
  102. package/dist/wallet/adapters/xBullAdapter.d.ts +41 -0
  103. package/dist/wallet/adapters/xBullAdapter.d.ts.map +1 -0
  104. package/dist/wallet/adapters/xBullAdapter.js +72 -0
  105. package/dist/wallet/adapters/xBullAdapter.js.map +1 -0
  106. package/dist/wallet/index.d.ts +20 -0
  107. package/dist/wallet/index.d.ts.map +1 -0
  108. package/dist/wallet/index.js +23 -0
  109. package/dist/wallet/index.js.map +1 -0
  110. package/dist/wallet/types.d.ts +165 -0
  111. package/dist/wallet/types.d.ts.map +1 -0
  112. package/dist/wallet/types.js +50 -0
  113. package/dist/wallet/types.js.map +1 -0
  114. package/examples/basic-usage.ts +28 -0
  115. package/jest.config.js +37 -0
  116. package/package.json +58 -0
  117. package/src/__tests__/README.md +364 -0
  118. package/src/__tests__/setup.ts +57 -0
  119. package/src/__tests__/utils/decay.test.ts +331 -0
  120. package/src/__tests__/wallet/WalletManager.test.ts +410 -0
  121. package/src/clients/GovernorClient.ts +23 -0
  122. package/src/clients/TreasuryClient.ts +23 -0
  123. package/src/clients/ValocracyClient.ts +48 -0
  124. package/src/clients/index.ts +3 -0
  125. package/src/generated/governor/README.md +54 -0
  126. package/src/generated/governor/package.json +17 -0
  127. package/src/generated/governor/src/index.ts +428 -0
  128. package/src/generated/governor/tsconfig.json +98 -0
  129. package/src/generated/treasury/README.md +54 -0
  130. package/src/generated/treasury/package.json +17 -0
  131. package/src/generated/treasury/src/index.ts +495 -0
  132. package/src/generated/treasury/tsconfig.json +98 -0
  133. package/src/generated/valocracy/README.md +54 -0
  134. package/src/generated/valocracy/package.json +17 -0
  135. package/src/generated/valocracy/src/index.ts +831 -0
  136. package/src/generated/valocracy/tsconfig.json +98 -0
  137. package/src/index.ts +4 -0
  138. package/src/react/hooks/useGovernor.ts +69 -0
  139. package/src/react/hooks/useMultiWallet.ts +169 -0
  140. package/src/react/hooks/useTreasury.ts +57 -0
  141. package/src/react/hooks/useValocracy.ts +66 -0
  142. package/src/react/hooks/useWallet.ts +60 -0
  143. package/src/react/index.ts +6 -0
  144. package/src/react/providers/KarnProvider.tsx +63 -0
  145. package/src/utils/decay.ts +44 -0
  146. package/src/utils/index.ts +3 -0
  147. package/src/utils/polling.ts +193 -0
  148. package/src/utils/simulation.ts +136 -0
  149. package/src/wallet/WalletManager.ts +360 -0
  150. package/src/wallet/adapters/AlbedoAdapter.ts +140 -0
  151. package/src/wallet/adapters/FreighterAdapter.ts +179 -0
  152. package/src/wallet/adapters/LobstrAdapter.ts +142 -0
  153. package/src/wallet/adapters/RabetAdapter.ts +162 -0
  154. package/src/wallet/adapters/xBullAdapter.ts +123 -0
  155. package/src/wallet/index.ts +37 -0
  156. package/src/wallet/types.ts +204 -0
  157. package/tsconfig.json +40 -0
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # @karn/protocol-sdk
2
+
3
+ The official TypeScript SDK for interacting with the Karn Protocol (Valocracy) on Stellar/Soroban.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @karn/protocol-sdk @stellar/stellar-sdk
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import {
15
+ ValocracyClient,
16
+ GovernorClient,
17
+ TreasuryClient,
18
+ rpc
19
+ } from '@karn/protocol-sdk';
20
+
21
+ // Configuration
22
+ const NETWORK_PASSPHRASE = "Test SDF Network ; September 2015";
23
+ const RPC_URL = "https://soroban-testnet.stellar.org";
24
+ const CONTRACT_ID = "C...";
25
+
26
+ async function main() {
27
+ const valocracy = new ValocracyClient(NETWORK_PASSPHRASE, RPC_URL, CONTRACT_ID);
28
+
29
+ // Read data
30
+ const level = await valocracy.getLevel("G...");
31
+ console.log("User Level:", level);
32
+
33
+ // Calculate Mana (client-side)
34
+ const mana = await valocracy.getMana("G...");
35
+ console.log("Voting Power:", mana);
36
+ }
37
+
38
+ main();
39
+ ```
40
+
41
+ ## Features
42
+
43
+ - **Typed Clients**: Wrappers for Valocracy, Governor, and Treasury contracts.
44
+ - **Mana Decay**: Client-side utility to calculate real-time voting power.
45
+ - **React Hooks**: Ready-to-use hooks for React applications (`useValocracy`, `useWallet`).
46
+ - **Multi-Wallet**: Helper for wallet connection (Freighter).
47
+
48
+ ## React Usage
49
+
50
+ Wrap your app in `KarnProvider`:
51
+
52
+ ```tsx
53
+ import { KarnProvider } from '@karn/protocol-sdk';
54
+
55
+ const config = {
56
+ networkPassphrase: "...",
57
+ rpcUrl: "...",
58
+ contracts: { valocracy: "...", governor: "...", treasury: "..." }
59
+ };
60
+
61
+ function App() {
62
+ return (
63
+ <KarnProvider config={config}>
64
+ <MyComponent />
65
+ </KarnProvider>
66
+ );
67
+ }
68
+ ```
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Jest Test Setup
3
+ *
4
+ * Global configuration and mocks for all tests
5
+ */
6
+ export {};
7
+ declare global {
8
+ namespace jest {
9
+ interface Matchers<R> {
10
+ toBeWithinRange(floor: number, ceiling: number): R;
11
+ }
12
+ }
13
+ }
14
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC;AA2CV,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI,CAAC;QACb,UAAU,QAAQ,CAAC,CAAC;YAClB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;SACpD;KACF;CACF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Jest Test Setup
3
+ *
4
+ * Global configuration and mocks for all tests
5
+ */
6
+ // Mock window object for browser APIs
7
+ global.window = {
8
+ localStorage: {
9
+ getItem: jest.fn(),
10
+ setItem: jest.fn(),
11
+ removeItem: jest.fn(),
12
+ clear: jest.fn(),
13
+ },
14
+ };
15
+ // Mock document for DOM operations
16
+ global.document = {
17
+ createElement: jest.fn(() => ({
18
+ setAttribute: jest.fn(),
19
+ addEventListener: jest.fn(),
20
+ })),
21
+ head: {
22
+ appendChild: jest.fn(),
23
+ },
24
+ };
25
+ // Extend jest matchers
26
+ expect.extend({
27
+ toBeWithinRange(received, floor, ceiling) {
28
+ const pass = received >= floor && received <= ceiling;
29
+ if (pass) {
30
+ return {
31
+ message: () => `expected ${received} not to be within range ${floor} - ${ceiling}`,
32
+ pass: true,
33
+ };
34
+ }
35
+ else {
36
+ return {
37
+ message: () => `expected ${received} to be within range ${floor} - ${ceiling}`,
38
+ pass: false,
39
+ };
40
+ }
41
+ },
42
+ });
43
+ export {};
44
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,sCAAsC;AACtC,MAAM,CAAC,MAAM,GAAG;IACd,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;QACrB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;CACK,CAAC;AAET,mCAAmC;AACnC,MAAM,CAAC,QAAQ,GAAG;IAChB,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5B,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;KAC5B,CAAC,CAAC;IACH,IAAI,EAAE;QACJ,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;KACvB;CACK,CAAC;AAET,uBAAuB;AACvB,MAAM,CAAC,MAAM,CAAC;IACZ,eAAe,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAe;QAC9D,MAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,IAAI,QAAQ,IAAI,OAAO,CAAC;QACtD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO;gBACL,OAAO,EAAE,GAAG,EAAE,CACZ,YAAY,QAAQ,2BAA2B,KAAK,MAAM,OAAO,EAAE;gBACrE,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,OAAO,EAAE,GAAG,EAAE,CACZ,YAAY,QAAQ,uBAAuB,KAAK,MAAM,OAAO,EAAE;gBACjE,IAAI,EAAE,KAAK;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare class GovernorClient {
2
+ readonly networkPassphrase: string;
3
+ readonly rpcUrl: string;
4
+ readonly contractId: string;
5
+ private client;
6
+ constructor(networkPassphrase: string, rpcUrl: string, contractId: string);
7
+ getProposal(proposalId: bigint): Promise<any>;
8
+ }
9
+ //# sourceMappingURL=GovernorClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GovernorClient.d.ts","sourceRoot":"","sources":["../../src/clients/GovernorClient.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;aAIP,iBAAiB,EAAE,MAAM;aACzB,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;IALpC,OAAO,CAAC,MAAM,CAA0B;gBAGtB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM;IAU9B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAIpD"}
@@ -0,0 +1,18 @@
1
+ import { Client as GeneratedGovernorClient } from '../generated/governor/src/index.js';
2
+ export class GovernorClient {
3
+ constructor(networkPassphrase, rpcUrl, contractId) {
4
+ this.networkPassphrase = networkPassphrase;
5
+ this.rpcUrl = rpcUrl;
6
+ this.contractId = contractId;
7
+ this.client = new GeneratedGovernorClient({
8
+ networkPassphrase,
9
+ rpcUrl,
10
+ contractId,
11
+ });
12
+ }
13
+ async getProposal(proposalId) {
14
+ const tx = await this.client.get_proposal({ proposal_id: BigInt(proposalId) });
15
+ return tx.result;
16
+ }
17
+ }
18
+ //# sourceMappingURL=GovernorClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GovernorClient.js","sourceRoot":"","sources":["../../src/clients/GovernorClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAEvF,MAAM,OAAO,cAAc;IAGzB,YACkB,iBAAyB,EACzB,MAAc,EACd,UAAkB;QAFlB,sBAAiB,GAAjB,iBAAiB,CAAQ;QACzB,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAElC,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAuB,CAAC;YACxC,iBAAiB;YACjB,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,EAAE,CAAC,MAAM,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ export declare class TreasuryClient {
2
+ readonly networkPassphrase: string;
3
+ readonly rpcUrl: string;
4
+ readonly contractId: string;
5
+ private client;
6
+ constructor(networkPassphrase: string, rpcUrl: string, contractId: string);
7
+ getClaimableBalance(member: string): Promise<bigint>;
8
+ }
9
+ //# sourceMappingURL=TreasuryClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreasuryClient.d.ts","sourceRoot":"","sources":["../../src/clients/TreasuryClient.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;aAIP,iBAAiB,EAAE,MAAM;aACzB,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;IALpC,OAAO,CAAC,MAAM,CAA0B;gBAGtB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM;IAU9B,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAI3D"}
@@ -0,0 +1,18 @@
1
+ import { Client as GeneratedTreasuryClient } from '../generated/treasury/src/index.js';
2
+ export class TreasuryClient {
3
+ constructor(networkPassphrase, rpcUrl, contractId) {
4
+ this.networkPassphrase = networkPassphrase;
5
+ this.rpcUrl = rpcUrl;
6
+ this.contractId = contractId;
7
+ this.client = new GeneratedTreasuryClient({
8
+ networkPassphrase,
9
+ rpcUrl,
10
+ contractId,
11
+ });
12
+ }
13
+ async getClaimableBalance(member) {
14
+ const tx = await this.client.get_claimable_balance({ member });
15
+ return tx.result;
16
+ }
17
+ }
18
+ //# sourceMappingURL=TreasuryClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreasuryClient.js","sourceRoot":"","sources":["../../src/clients/TreasuryClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAEvF,MAAM,OAAO,cAAc;IAGzB,YACkB,iBAAyB,EACzB,MAAc,EACd,UAAkB;QAFlB,sBAAiB,GAAjB,iBAAiB,CAAQ;QACzB,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAElC,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAuB,CAAC;YACxC,iBAAiB;YACjB,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,mBAAmB,CAAC,MAAc;QACtC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,OAAO,EAAE,CAAC,MAAM,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { AssembledTransaction, Result } from '@stellar/stellar-sdk/contract';
2
+ import type { u64 } from '@stellar/stellar-sdk/contract';
3
+ export declare class ValocracyClient {
4
+ readonly networkPassphrase: string;
5
+ readonly rpcUrl: string;
6
+ readonly contractId: string;
7
+ private client;
8
+ constructor(networkPassphrase: string, rpcUrl: string, contractId: string);
9
+ getLevel(address: string): Promise<number>;
10
+ getMana(address: string): Promise<number>;
11
+ selfRegister(caller: string, signature: Buffer, nonce: bigint, expiry: bigint): Promise<AssembledTransaction<Result<u64>>>;
12
+ }
13
+ //# sourceMappingURL=ValocracyClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValocracyClient.d.ts","sourceRoot":"","sources":["../../src/clients/ValocracyClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AAEzD,qBAAa,eAAe;aAIR,iBAAiB,EAAE,MAAM;aACzB,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;IALpC,OAAO,CAAC,MAAM,CAA2B;gBAGvB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM;IAU9B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzC,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAQ9C"}
@@ -0,0 +1,32 @@
1
+ import { Client as GeneratedValocracyClient } from '../generated/valocracy/src/index.js';
2
+ export class ValocracyClient {
3
+ constructor(networkPassphrase, rpcUrl, contractId) {
4
+ this.networkPassphrase = networkPassphrase;
5
+ this.rpcUrl = rpcUrl;
6
+ this.contractId = contractId;
7
+ this.client = new GeneratedValocracyClient({
8
+ networkPassphrase,
9
+ rpcUrl,
10
+ contractId,
11
+ });
12
+ }
13
+ async getLevel(address) {
14
+ const tx = await this.client.level_of({ account: address });
15
+ return Number(tx.result);
16
+ }
17
+ // Get voting power (Mana) with decay
18
+ async getMana(address) {
19
+ const tx = await this.client.get_votes({ account: address });
20
+ return Number(tx.result);
21
+ }
22
+ // Self-register with backend signature
23
+ async selfRegister(caller, signature, nonce, expiry) {
24
+ return await this.client.self_register({
25
+ caller,
26
+ signature,
27
+ nonce: BigInt(nonce),
28
+ expiry: BigInt(expiry),
29
+ });
30
+ }
31
+ }
32
+ //# sourceMappingURL=ValocracyClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValocracyClient.js","sourceRoot":"","sources":["../../src/clients/ValocracyClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAIzF,MAAM,OAAO,eAAe;IAG1B,YACkB,iBAAyB,EACzB,MAAc,EACd,UAAkB;QAFlB,sBAAiB,GAAjB,iBAAiB,CAAQ;QACzB,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAElC,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAwB,CAAC;YACzC,iBAAiB;YACjB,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,qCAAqC;IAErC,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,uCAAuC;IAEvC,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,SAAiB,EACjB,KAAa,EACb,MAAc;QAEd,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YACrC,MAAM;YACN,SAAS;YACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export * from './ValocracyClient.js';
2
+ export * from './GovernorClient.js';
3
+ export * from './TreasuryClient.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './ValocracyClient.js';
2
+ export * from './GovernorClient.js';
3
+ export * from './TreasuryClient.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}