@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.
- package/README.md +68 -0
- package/dist/__tests__/setup.d.ts +14 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +44 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/clients/GovernorClient.d.ts +9 -0
- package/dist/clients/GovernorClient.d.ts.map +1 -0
- package/dist/clients/GovernorClient.js +18 -0
- package/dist/clients/GovernorClient.js.map +1 -0
- package/dist/clients/TreasuryClient.d.ts +9 -0
- package/dist/clients/TreasuryClient.d.ts.map +1 -0
- package/dist/clients/TreasuryClient.js +18 -0
- package/dist/clients/TreasuryClient.js.map +1 -0
- package/dist/clients/ValocracyClient.d.ts +13 -0
- package/dist/clients/ValocracyClient.d.ts.map +1 -0
- package/dist/clients/ValocracyClient.js +32 -0
- package/dist/clients/ValocracyClient.js.map +1 -0
- package/dist/clients/index.d.ts +4 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +4 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/generated/governor/src/index.d.ts +400 -0
- package/dist/generated/governor/src/index.d.ts.map +1 -0
- package/dist/generated/governor/src/index.js +63 -0
- package/dist/generated/governor/src/index.js.map +1 -0
- package/dist/generated/treasury/src/index.d.ts +474 -0
- package/dist/generated/treasury/src/index.d.ts.map +1 -0
- package/dist/generated/treasury/src/index.js +54 -0
- package/dist/generated/treasury/src/index.js.map +1 -0
- package/dist/generated/valocracy/src/index.d.ts +807 -0
- package/dist/generated/valocracy/src/index.d.ts.map +1 -0
- package/dist/generated/valocracy/src/index.js +114 -0
- package/dist/generated/valocracy/src/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/react/hooks/useGovernor.d.ts +24 -0
- package/dist/react/hooks/useGovernor.d.ts.map +1 -0
- package/dist/react/hooks/useGovernor.js +45 -0
- package/dist/react/hooks/useGovernor.js.map +1 -0
- package/dist/react/hooks/useMultiWallet.d.ts +35 -0
- package/dist/react/hooks/useMultiWallet.d.ts.map +1 -0
- package/dist/react/hooks/useMultiWallet.js +87 -0
- package/dist/react/hooks/useMultiWallet.js.map +1 -0
- package/dist/react/hooks/useTreasury.d.ts +14 -0
- package/dist/react/hooks/useTreasury.d.ts.map +1 -0
- package/dist/react/hooks/useTreasury.js +45 -0
- package/dist/react/hooks/useTreasury.js.map +1 -0
- package/dist/react/hooks/useValocracy.d.ts +16 -0
- package/dist/react/hooks/useValocracy.d.ts.map +1 -0
- package/dist/react/hooks/useValocracy.js +54 -0
- package/dist/react/hooks/useValocracy.js.map +1 -0
- package/dist/react/hooks/useWallet.d.ts +13 -0
- package/dist/react/hooks/useWallet.d.ts.map +1 -0
- package/dist/react/hooks/useWallet.js +51 -0
- package/dist/react/hooks/useWallet.js.map +1 -0
- package/dist/react/index.d.ts +7 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +7 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/providers/KarnProvider.d.ts +25 -0
- package/dist/react/providers/KarnProvider.d.ts.map +1 -0
- package/dist/react/providers/KarnProvider.js +25 -0
- package/dist/react/providers/KarnProvider.js.map +1 -0
- package/dist/utils/decay.d.ts +19 -0
- package/dist/utils/decay.d.ts.map +1 -0
- package/dist/utils/decay.js +33 -0
- package/dist/utils/decay.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/polling.d.ts +75 -0
- package/dist/utils/polling.d.ts.map +1 -0
- package/dist/utils/polling.js +104 -0
- package/dist/utils/polling.js.map +1 -0
- package/dist/utils/simulation.d.ts +67 -0
- package/dist/utils/simulation.d.ts.map +1 -0
- package/dist/utils/simulation.js +88 -0
- package/dist/utils/simulation.js.map +1 -0
- package/dist/wallet/WalletManager.d.ts +77 -0
- package/dist/wallet/WalletManager.d.ts.map +1 -0
- package/dist/wallet/WalletManager.js +268 -0
- package/dist/wallet/WalletManager.js.map +1 -0
- package/dist/wallet/adapters/AlbedoAdapter.d.ts +47 -0
- package/dist/wallet/adapters/AlbedoAdapter.d.ts.map +1 -0
- package/dist/wallet/adapters/AlbedoAdapter.js +84 -0
- package/dist/wallet/adapters/AlbedoAdapter.js.map +1 -0
- package/dist/wallet/adapters/FreighterAdapter.d.ts +42 -0
- package/dist/wallet/adapters/FreighterAdapter.d.ts.map +1 -0
- package/dist/wallet/adapters/FreighterAdapter.js +107 -0
- package/dist/wallet/adapters/FreighterAdapter.js.map +1 -0
- package/dist/wallet/adapters/LobstrAdapter.d.ts +34 -0
- package/dist/wallet/adapters/LobstrAdapter.d.ts.map +1 -0
- package/dist/wallet/adapters/LobstrAdapter.js +89 -0
- package/dist/wallet/adapters/LobstrAdapter.js.map +1 -0
- package/dist/wallet/adapters/RabetAdapter.d.ts +39 -0
- package/dist/wallet/adapters/RabetAdapter.d.ts.map +1 -0
- package/dist/wallet/adapters/RabetAdapter.js +104 -0
- package/dist/wallet/adapters/RabetAdapter.js.map +1 -0
- package/dist/wallet/adapters/xBullAdapter.d.ts +41 -0
- package/dist/wallet/adapters/xBullAdapter.d.ts.map +1 -0
- package/dist/wallet/adapters/xBullAdapter.js +72 -0
- package/dist/wallet/adapters/xBullAdapter.js.map +1 -0
- package/dist/wallet/index.d.ts +20 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +23 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/types.d.ts +165 -0
- package/dist/wallet/types.d.ts.map +1 -0
- package/dist/wallet/types.js +50 -0
- package/dist/wallet/types.js.map +1 -0
- package/examples/basic-usage.ts +28 -0
- package/jest.config.js +37 -0
- package/package.json +58 -0
- package/src/__tests__/README.md +364 -0
- package/src/__tests__/setup.ts +57 -0
- package/src/__tests__/utils/decay.test.ts +331 -0
- package/src/__tests__/wallet/WalletManager.test.ts +410 -0
- package/src/clients/GovernorClient.ts +23 -0
- package/src/clients/TreasuryClient.ts +23 -0
- package/src/clients/ValocracyClient.ts +48 -0
- package/src/clients/index.ts +3 -0
- package/src/generated/governor/README.md +54 -0
- package/src/generated/governor/package.json +17 -0
- package/src/generated/governor/src/index.ts +428 -0
- package/src/generated/governor/tsconfig.json +98 -0
- package/src/generated/treasury/README.md +54 -0
- package/src/generated/treasury/package.json +17 -0
- package/src/generated/treasury/src/index.ts +495 -0
- package/src/generated/treasury/tsconfig.json +98 -0
- package/src/generated/valocracy/README.md +54 -0
- package/src/generated/valocracy/package.json +17 -0
- package/src/generated/valocracy/src/index.ts +831 -0
- package/src/generated/valocracy/tsconfig.json +98 -0
- package/src/index.ts +4 -0
- package/src/react/hooks/useGovernor.ts +69 -0
- package/src/react/hooks/useMultiWallet.ts +169 -0
- package/src/react/hooks/useTreasury.ts +57 -0
- package/src/react/hooks/useValocracy.ts +66 -0
- package/src/react/hooks/useWallet.ts +60 -0
- package/src/react/index.ts +6 -0
- package/src/react/providers/KarnProvider.tsx +63 -0
- package/src/utils/decay.ts +44 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/polling.ts +193 -0
- package/src/utils/simulation.ts +136 -0
- package/src/wallet/WalletManager.ts +360 -0
- package/src/wallet/adapters/AlbedoAdapter.ts +140 -0
- package/src/wallet/adapters/FreighterAdapter.ts +179 -0
- package/src/wallet/adapters/LobstrAdapter.ts +142 -0
- package/src/wallet/adapters/RabetAdapter.ts +162 -0
- package/src/wallet/adapters/xBullAdapter.ts +123 -0
- package/src/wallet/index.ts +37 -0
- package/src/wallet/types.ts +204 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|