@karn_lat/protocol-sdk 0.1.0-alpha.3 → 0.1.0-alpha.5
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/PUBLISH.md +5 -1
- package/README.md +114 -33
- package/dist/wallet/WalletManager.d.ts.map +1 -1
- package/dist/wallet/WalletManager.js +12 -3
- package/dist/wallet/WalletManager.js.map +1 -1
- package/dist/wallet/adapters/AlbedoAdapter.d.ts +0 -1
- package/dist/wallet/adapters/AlbedoAdapter.d.ts.map +1 -1
- package/dist/wallet/adapters/AlbedoAdapter.js +8 -24
- package/dist/wallet/adapters/AlbedoAdapter.js.map +1 -1
- package/dist/wallet/adapters/FreighterAdapter.d.ts +3 -23
- package/dist/wallet/adapters/FreighterAdapter.d.ts.map +1 -1
- package/dist/wallet/adapters/FreighterAdapter.js +63 -22
- package/dist/wallet/adapters/FreighterAdapter.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/wallet/WalletManager.test.ts +1 -1
- package/src/wallet/WalletManager.ts +12 -3
- package/src/wallet/adapters/AlbedoAdapter.ts +7 -27
- package/src/wallet/adapters/FreighterAdapter.ts +72 -52
- package/test-fixes.js +10 -2
package/PUBLISH.md
CHANGED
|
@@ -31,7 +31,11 @@ console.log('✓ Root import works!');
|
|
|
31
31
|
const client = new ValocracyClient(
|
|
32
32
|
'Test SDF Network ; September 2015',
|
|
33
33
|
'https://soroban-testnet.stellar.org',
|
|
34
|
-
|
|
34
|
+
<<<<<<< HEAD
|
|
35
|
+
'REDACTED_CONTRACT_ID_VALOCRACY'
|
|
36
|
+
=======
|
|
37
|
+
'CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"'
|
|
38
|
+
>>>>>>> 257583c5837a1af14efbaa2ea574613bd78df4b0
|
|
35
39
|
);
|
|
36
40
|
|
|
37
41
|
console.log('✓ Client instantiated successfully!');
|
package/README.md
CHANGED
|
@@ -5,56 +5,84 @@
|
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://soroban.stellar.org)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
TypeScript SDK for integrating **Karn Protocol** contracts (Valocracy, Governor, Treasury) into web apps.
|
|
9
|
+
|
|
10
|
+
Includes:
|
|
11
|
+
- Typed contract clients (thin wrappers over Soroban-generated bindings)
|
|
12
|
+
- React provider + hooks for Next.js/React apps
|
|
13
|
+
- Multi-wallet connection manager (Freighter, Lobstr, xBull, Rabet, Albedo)
|
|
14
|
+
- Utilities (mana decay, polling helpers, simulations)
|
|
11
15
|
|
|
12
16
|
## Installation
|
|
13
17
|
|
|
14
18
|
```bash
|
|
15
|
-
npm install @karn_lat/protocol-sdk
|
|
19
|
+
npm install @karn_lat/protocol-sdk
|
|
16
20
|
```
|
|
17
21
|
|
|
22
|
+
## Requirements
|
|
23
|
+
|
|
24
|
+
- ESM package (`"type": "module"`)
|
|
25
|
+
- Node.js 18+ recommended
|
|
26
|
+
- React 18+ only if you use `@karn_lat/protocol-sdk/react` exports
|
|
27
|
+
|
|
18
28
|
## Import Patterns
|
|
19
29
|
|
|
20
|
-
The SDK supports
|
|
30
|
+
The SDK supports root and subpath imports (recommended for tree-shaking):
|
|
21
31
|
|
|
22
32
|
```typescript
|
|
23
|
-
// Root import
|
|
33
|
+
// Root import
|
|
24
34
|
import { ValocracyClient, GovernorClient, TreasuryClient } from '@karn_lat/protocol-sdk';
|
|
25
35
|
|
|
26
|
-
// Subpath imports
|
|
36
|
+
// Subpath imports
|
|
27
37
|
import { ValocracyClient } from '@karn_lat/protocol-sdk/clients';
|
|
28
38
|
import { useKarn, KarnProvider } from '@karn_lat/protocol-sdk/react';
|
|
29
39
|
import { WalletManager } from '@karn_lat/protocol-sdk/wallet';
|
|
30
|
-
import {
|
|
40
|
+
import { calculateManaAtTimestamp } from '@karn_lat/protocol-sdk/utils';
|
|
31
41
|
```
|
|
32
42
|
|
|
33
|
-
##
|
|
43
|
+
## Network Constants
|
|
44
|
+
|
|
45
|
+
Common network passphrases:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
export const STELLAR = {
|
|
49
|
+
TESTNET_PASSPHRASE: 'Test SDF Network ; September 2015',
|
|
50
|
+
PUBLIC_PASSPHRASE: 'Public Global Stellar Network ; September 2015',
|
|
51
|
+
};
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Use an RPC URL appropriate for your environment (public testnet RPC, self-hosted RPC, etc.).
|
|
55
|
+
|
|
56
|
+
## Quick Start (Clients)
|
|
34
57
|
|
|
35
58
|
```typescript
|
|
36
|
-
import {
|
|
37
|
-
ValocracyClient,
|
|
38
|
-
GovernorClient,
|
|
39
|
-
TreasuryClient,
|
|
40
|
-
rpc
|
|
41
|
-
} from '@karn_lat/protocol-sdk';
|
|
59
|
+
import { ValocracyClient, GovernorClient, TreasuryClient } from '@karn_lat/protocol-sdk';
|
|
42
60
|
|
|
43
61
|
// Configuration
|
|
44
|
-
const NETWORK_PASSPHRASE =
|
|
45
|
-
const RPC_URL =
|
|
46
|
-
|
|
62
|
+
const NETWORK_PASSPHRASE = 'Test SDF Network ; September 2015';
|
|
63
|
+
const RPC_URL = 'https://soroban-testnet.stellar.org';
|
|
64
|
+
|
|
65
|
+
const CONTRACTS = {
|
|
66
|
+
valocracy: 'C...',
|
|
67
|
+
governor: 'C...',
|
|
68
|
+
treasury: 'C...',
|
|
69
|
+
};
|
|
47
70
|
|
|
48
71
|
async function main() {
|
|
49
|
-
const valocracy = new ValocracyClient(NETWORK_PASSPHRASE, RPC_URL,
|
|
72
|
+
const valocracy = new ValocracyClient(NETWORK_PASSPHRASE, RPC_URL, CONTRACTS.valocracy);
|
|
73
|
+
const governor = new GovernorClient(NETWORK_PASSPHRASE, RPC_URL, CONTRACTS.governor);
|
|
74
|
+
const treasury = new TreasuryClient(NETWORK_PASSPHRASE, RPC_URL, CONTRACTS.treasury);
|
|
50
75
|
|
|
51
76
|
// Read data
|
|
52
|
-
const level = await valocracy.getLevel(
|
|
53
|
-
|
|
77
|
+
const level = await valocracy.getLevel('G...');
|
|
78
|
+
const mana = await valocracy.getMana('G...');
|
|
79
|
+
const claimable = await treasury.getClaimableBalance('G...');
|
|
80
|
+
|
|
81
|
+
console.log({ level, mana, claimable });
|
|
54
82
|
|
|
55
|
-
//
|
|
56
|
-
const
|
|
57
|
-
console.log(
|
|
83
|
+
// Governance read
|
|
84
|
+
const proposal = await governor.getProposal(1n);
|
|
85
|
+
console.log({ proposal });
|
|
58
86
|
}
|
|
59
87
|
|
|
60
88
|
main();
|
|
@@ -62,22 +90,22 @@ main();
|
|
|
62
90
|
|
|
63
91
|
## Features
|
|
64
92
|
|
|
65
|
-
- **Typed
|
|
66
|
-
- **
|
|
67
|
-
- **
|
|
68
|
-
- **
|
|
93
|
+
- **Typed clients**: `ValocracyClient`, `GovernorClient`, `TreasuryClient`
|
|
94
|
+
- **React**: `KarnProvider`, `useKarn`, `useValocracy`, `useGovernor`, `useTreasury`, `useWallet`, `useMultiWallet`
|
|
95
|
+
- **Multi-wallet**: `WalletManager` + adapters
|
|
96
|
+
- **Utilities**: mana decay helpers + polling/simulation helpers
|
|
69
97
|
|
|
70
98
|
## React Usage
|
|
71
99
|
|
|
72
|
-
Wrap your app in `KarnProvider
|
|
100
|
+
Wrap your app in `KarnProvider` (React/Next.js):
|
|
73
101
|
|
|
74
102
|
```tsx
|
|
75
|
-
import { KarnProvider } from '@karn_lat/protocol-sdk';
|
|
103
|
+
import { KarnProvider } from '@karn_lat/protocol-sdk/react';
|
|
76
104
|
|
|
77
105
|
const config = {
|
|
78
|
-
networkPassphrase:
|
|
79
|
-
rpcUrl:
|
|
80
|
-
contracts: { valocracy:
|
|
106
|
+
networkPassphrase: 'Test SDF Network ; September 2015',
|
|
107
|
+
rpcUrl: 'https://soroban-testnet.stellar.org',
|
|
108
|
+
contracts: { valocracy: 'C...', governor: 'C...', treasury: 'C...' },
|
|
81
109
|
};
|
|
82
110
|
|
|
83
111
|
function App() {
|
|
@@ -88,3 +116,56 @@ function App() {
|
|
|
88
116
|
);
|
|
89
117
|
}
|
|
90
118
|
```
|
|
119
|
+
|
|
120
|
+
Then, in a component:
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
import { useValocracy, useTreasury } from '@karn_lat/protocol-sdk/react';
|
|
124
|
+
|
|
125
|
+
export function MyComponent({ address }: { address: string }) {
|
|
126
|
+
const { getLevel, getMana } = useValocracy();
|
|
127
|
+
const { getClaimableBalance } = useTreasury();
|
|
128
|
+
|
|
129
|
+
// Call these from effects/actions; they are async.
|
|
130
|
+
// Example omitted for brevity.
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Wallet Support
|
|
136
|
+
|
|
137
|
+
The wallet module is intended for browser usage. In Next.js, use it in client components only.
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
import { WalletManager, WalletType } from '@karn_lat/protocol-sdk/wallet';
|
|
141
|
+
|
|
142
|
+
const wallets = new WalletManager();
|
|
143
|
+
const available = await wallets.getAvailableWallets();
|
|
144
|
+
|
|
145
|
+
await wallets.connect(WalletType.FREIGHTER);
|
|
146
|
+
const address = await wallets.getAddress();
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Notes:
|
|
150
|
+
- **Freighter/Lobstr/xBull/Rabet** availability is detected from injected `window.*` APIs.
|
|
151
|
+
- **Albedo** is web-based; this SDK does not inject external scripts. Provide `window.albedo` yourself if you want to use Albedo.
|
|
152
|
+
|
|
153
|
+
## Utilities
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
import { calculateManaAtTimestamp } from '@karn_lat/protocol-sdk/utils';
|
|
157
|
+
|
|
158
|
+
// Example: project voting power at a given timestamp (use values from on-chain stats/events).
|
|
159
|
+
const mana = calculateManaAtTimestamp({
|
|
160
|
+
level: 100,
|
|
161
|
+
expiry: 1_800_000_000,
|
|
162
|
+
now: 1_700_000_000,
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## API Surface
|
|
167
|
+
|
|
168
|
+
- Clients: `@karn_lat/protocol-sdk/clients`
|
|
169
|
+
- React: `@karn_lat/protocol-sdk/react`
|
|
170
|
+
- Wallet: `@karn_lat/protocol-sdk/wallet`
|
|
171
|
+
- Utils: `@karn_lat/protocol-sdk/utils`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletManager.d.ts","sourceRoot":"","sources":["../../src/wallet/WalletManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,UAAU,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EAEX,mBAAmB,EACnB,sBAAsB,EAGvB,MAAM,YAAY,CAAC;AAQpB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,cAAc,CAA6C;;IAkCnE;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAYtD;;OAEG;IACH,aAAa,IAAI,cAAc,EAAE;IAIjC;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoEhE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ1C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC;;OAEG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC;IAWlB;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBnC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAO3D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAO5D;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"WalletManager.d.ts","sourceRoot":"","sources":["../../src/wallet/WalletManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,UAAU,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EAEX,mBAAmB,EACnB,sBAAsB,EAGvB,MAAM,YAAY,CAAC;AAQpB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,cAAc,CAA6C;;IAkCnE;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAYtD;;OAEG;IACH,aAAa,IAAI,cAAc,EAAE;IAIjC;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoEhE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ1C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC;;OAEG;IACG,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC;IAWlB;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBnC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAO3D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAO5D;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;YACW,iBAAiB;CAoBhC"}
|
|
@@ -225,7 +225,10 @@ export class WalletManager {
|
|
|
225
225
|
if (typeof window === 'undefined')
|
|
226
226
|
return;
|
|
227
227
|
try {
|
|
228
|
-
|
|
228
|
+
const storage = window.localStorage;
|
|
229
|
+
if (!storage)
|
|
230
|
+
return;
|
|
231
|
+
storage.setItem('karn_wallet_connection', JSON.stringify({ walletType, address }));
|
|
229
232
|
}
|
|
230
233
|
catch (error) {
|
|
231
234
|
console.warn('Failed to save wallet connection:', error);
|
|
@@ -238,7 +241,10 @@ export class WalletManager {
|
|
|
238
241
|
if (typeof window === 'undefined')
|
|
239
242
|
return;
|
|
240
243
|
try {
|
|
241
|
-
localStorage
|
|
244
|
+
const storage = window.localStorage;
|
|
245
|
+
if (!storage)
|
|
246
|
+
return;
|
|
247
|
+
storage.removeItem('karn_wallet_connection');
|
|
242
248
|
}
|
|
243
249
|
catch (error) {
|
|
244
250
|
console.warn('Failed to clear wallet connection:', error);
|
|
@@ -251,7 +257,10 @@ export class WalletManager {
|
|
|
251
257
|
if (typeof window === 'undefined')
|
|
252
258
|
return;
|
|
253
259
|
try {
|
|
254
|
-
const
|
|
260
|
+
const storage = window.localStorage;
|
|
261
|
+
if (!storage)
|
|
262
|
+
return;
|
|
263
|
+
const saved = storage.getItem('karn_wallet_connection');
|
|
255
264
|
if (!saved)
|
|
256
265
|
return;
|
|
257
266
|
const { walletType } = JSON.parse(saved);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletManager.js","sourceRoot":"","sources":["../../src/wallet/WalletManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WalletManager.js","sourceRoot":"","sources":["../../src/wallet/WalletManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,6 @@ export declare class AlbedoAdapter implements WalletAdapter {
|
|
|
36
36
|
metadata: WalletMetadata;
|
|
37
37
|
private currentAddress;
|
|
38
38
|
isAvailable(): Promise<boolean>;
|
|
39
|
-
private loadAlbedoScript;
|
|
40
39
|
connect(): Promise<string>;
|
|
41
40
|
disconnect(): Promise<void>;
|
|
42
41
|
getAddress(): Promise<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlbedoAdapter.d.ts","sourceRoot":"","sources":["../../../src/wallet/adapters/AlbedoAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AAGrB,UAAU,SAAS;IACjB,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,EAAE,CAAC,OAAO,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,mBAAmB,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,KAAK,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC5E;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB;CACF;AAED,qBAAa,aAAc,YAAW,aAAa;IACjD,IAAI,aAAqB;IAEzB,QAAQ,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"AlbedoAdapter.d.ts","sourceRoot":"","sources":["../../../src/wallet/adapters/AlbedoAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AAGrB,UAAU,SAAS;IACjB,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,EAAE,CAAC,OAAO,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,mBAAmB,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,KAAK,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC5E;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB;CACF;AAED,qBAAa,aAAc,YAAW,aAAa;IACjD,IAAI,aAAqB;IAEzB,QAAQ,EAAE,cAAc,CAQtB;IAEF,OAAO,CAAC,cAAc,CAAuB;IAEvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAsB1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIpC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC;CA4BnB"}
|
|
@@ -13,36 +13,20 @@ export class AlbedoAdapter {
|
|
|
13
13
|
name: 'Albedo',
|
|
14
14
|
url: 'https://albedo.link',
|
|
15
15
|
description: 'Web-based Stellar wallet with seamless browser integration',
|
|
16
|
-
|
|
16
|
+
// Albedo is web-based, but availability is environment-dependent.
|
|
17
|
+
// We treat it as "available" only when the runtime can actually invoke it.
|
|
18
|
+
isAvailable: false,
|
|
17
19
|
};
|
|
18
20
|
this.currentAddress = null;
|
|
19
21
|
}
|
|
20
22
|
async isAvailable() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
await this.loadAlbedoScript();
|
|
25
|
-
}
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
async loadAlbedoScript() {
|
|
29
|
-
return new Promise((resolve, reject) => {
|
|
30
|
-
if (window.albedo) {
|
|
31
|
-
resolve();
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const script = document.createElement('script');
|
|
35
|
-
script.src = 'https://cdn.jsdelivr.net/npm/@albedo-link/intent@latest/lib/albedo.intent.js';
|
|
36
|
-
script.async = true;
|
|
37
|
-
script.onload = () => resolve();
|
|
38
|
-
script.onerror = () => reject(new Error('Failed to load Albedo'));
|
|
39
|
-
document.head.appendChild(script);
|
|
40
|
-
});
|
|
23
|
+
if (typeof window === 'undefined')
|
|
24
|
+
return false;
|
|
25
|
+
return !!window.albedo;
|
|
41
26
|
}
|
|
42
27
|
async connect() {
|
|
43
|
-
await this.isAvailable()
|
|
44
|
-
|
|
45
|
-
throw new WalletError('Albedo failed to load', WalletErrorCode.NOT_INSTALLED, WalletType.ALBEDO);
|
|
28
|
+
if (!(await this.isAvailable()) || !window.albedo) {
|
|
29
|
+
throw new WalletError('Albedo is not available in this environment', WalletErrorCode.NOT_INSTALLED, WalletType.ALBEDO);
|
|
46
30
|
}
|
|
47
31
|
try {
|
|
48
32
|
const result = await window.albedo.publicKey({ require_existing: false });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlbedoAdapter.js","sourceRoot":"","sources":["../../../src/wallet/adapters/AlbedoAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,UAAU,EAGV,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AAoBrB,MAAM,OAAO,aAAa;IAA1B;QACE,SAAI,GAAG,UAAU,CAAC,MAAM,CAAC;QAEzB,aAAQ,GAAmB;YACzB,IAAI,EAAE,UAAU,CAAC,MAAM;YACvB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,qBAAqB;YAC1B,WAAW,EAAE,4DAA4D;YACzE,
|
|
1
|
+
{"version":3,"file":"AlbedoAdapter.js","sourceRoot":"","sources":["../../../src/wallet/adapters/AlbedoAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,UAAU,EAGV,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AAoBrB,MAAM,OAAO,aAAa;IAA1B;QACE,SAAI,GAAG,UAAU,CAAC,MAAM,CAAC;QAEzB,aAAQ,GAAmB;YACzB,IAAI,EAAE,UAAU,CAAC,MAAM;YACvB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,qBAAqB;YAC1B,WAAW,EAAE,4DAA4D;YACzE,kEAAkE;YAClE,2EAA2E;YAC3E,WAAW,EAAE,KAAK;SACnB,CAAC;QAEM,mBAAc,GAAkB,IAAI,CAAC;IAwE/C,CAAC;IAtEC,KAAK,CAAC,WAAW;QACf,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAClD,MAAM,IAAI,WAAW,CACnB,6CAA6C,EAC7C,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,MAAM,CAClB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;YACpC,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,WAAW,CACnB,gCAAgC,KAAK,CAAC,OAAO,EAAE,EAC/C,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,MAAM,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAW,EACX,OAAgC;QAEhC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,WAAW,CACnB,yBAAyB,EACzB,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,MAAM,CAClB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,GAAG;gBACH,OAAO,EAAE,OAAO,EAAE,iBAAiB,IAAI,SAAS;gBAChD,MAAM,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS;gBACxC,MAAM,EAAE,KAAK,EAAE,oBAAoB;aACpC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,mBAAmB,CAAC;QACpC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,WAAW,CACnB,+BAA+B,KAAK,CAAC,OAAO,EAAE,EAC9C,eAAe,CAAC,cAAc,EAC9B,UAAU,CAAC,MAAM,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -5,31 +5,12 @@
|
|
|
5
5
|
* https://freighter.app
|
|
6
6
|
*/
|
|
7
7
|
import { WalletAdapter, WalletType, WalletMetadata, SignTransactionOptions } from '../types.js';
|
|
8
|
-
interface FreighterAPI {
|
|
9
|
-
isConnected(): Promise<boolean>;
|
|
10
|
-
getPublicKey(): Promise<string>;
|
|
11
|
-
signTransaction(xdr: string, opts?: {
|
|
12
|
-
network?: string;
|
|
13
|
-
networkPassphrase?: string;
|
|
14
|
-
accountToSign?: string;
|
|
15
|
-
}): Promise<string>;
|
|
16
|
-
getNetwork(): Promise<string>;
|
|
17
|
-
getNetworkDetails(): Promise<{
|
|
18
|
-
network: string;
|
|
19
|
-
networkPassphrase: string;
|
|
20
|
-
}>;
|
|
21
|
-
}
|
|
22
|
-
declare global {
|
|
23
|
-
interface Window {
|
|
24
|
-
freighter?: FreighterAPI;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
8
|
export declare class FreighterAdapter implements WalletAdapter {
|
|
28
9
|
type: WalletType;
|
|
29
10
|
metadata: WalletMetadata;
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
private
|
|
11
|
+
private freighter;
|
|
12
|
+
private canUseBrowserFreighterApi;
|
|
13
|
+
private loadFreighter;
|
|
33
14
|
isAvailable(): Promise<boolean>;
|
|
34
15
|
connect(): Promise<string>;
|
|
35
16
|
disconnect(): Promise<void>;
|
|
@@ -38,5 +19,4 @@ export declare class FreighterAdapter implements WalletAdapter {
|
|
|
38
19
|
signTransaction(xdr: string, options?: SignTransactionOptions): Promise<string>;
|
|
39
20
|
getNetwork(): Promise<string>;
|
|
40
21
|
}
|
|
41
|
-
export {};
|
|
42
22
|
//# sourceMappingURL=FreighterAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FreighterAdapter.d.ts","sourceRoot":"","sources":["../../../src/wallet/adapters/FreighterAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,sBAAsB,EAGvB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"FreighterAdapter.d.ts","sourceRoot":"","sources":["../../../src/wallet/adapters/FreighterAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AAarB,qBAAa,gBAAiB,YAAW,aAAa;IACpD,IAAI,aAAwB;IAE5B,QAAQ,EAAE,cAAc,CAQtB;IAEF,OAAO,CAAC,SAAS,CAAgC;IAEjD,OAAO,CAAC,yBAAyB;YAUnB,aAAa;IA0BrB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA2B1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAcpC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAU/B,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC;IA8BZ,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAgBpC"}
|
|
@@ -17,24 +17,60 @@ export class FreighterAdapter {
|
|
|
17
17
|
description: 'Official Stellar wallet extension with Soroban support',
|
|
18
18
|
isAvailable: false,
|
|
19
19
|
};
|
|
20
|
-
this.
|
|
21
|
-
this.init();
|
|
20
|
+
this.freighter = null;
|
|
22
21
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
canUseBrowserFreighterApi() {
|
|
23
|
+
// In Node/Jest we may have `global.window` mocked but without real browser globals.
|
|
24
|
+
// `@stellar/freighter-api` touches `window.location.origin` at import time.
|
|
25
|
+
return (typeof window !== 'undefined' &&
|
|
26
|
+
typeof window.location?.origin === 'string' &&
|
|
27
|
+
typeof document !== 'undefined');
|
|
28
|
+
}
|
|
29
|
+
async loadFreighter() {
|
|
30
|
+
if (this.freighter)
|
|
31
|
+
return this.freighter;
|
|
32
|
+
// 1) Prefer legacy window injection if present (also used by our Jest tests).
|
|
33
|
+
if (typeof window !== 'undefined') {
|
|
34
|
+
const injected = window.freighter;
|
|
35
|
+
if (injected) {
|
|
36
|
+
this.freighter = injected;
|
|
37
|
+
return injected;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// 2) In real browsers, use the official module API.
|
|
41
|
+
if (!this.canUseBrowserFreighterApi()) {
|
|
42
|
+
throw new WalletError('Freighter is not installed', WalletErrorCode.NOT_INSTALLED, WalletType.FREIGHTER);
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const mod = (await import('@stellar/freighter-api'));
|
|
46
|
+
this.freighter = mod;
|
|
47
|
+
return mod;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
throw new WalletError('Freighter is not installed', WalletErrorCode.NOT_INSTALLED, WalletType.FREIGHTER);
|
|
27
51
|
}
|
|
28
52
|
}
|
|
29
53
|
async isAvailable() {
|
|
30
|
-
|
|
54
|
+
try {
|
|
55
|
+
const freighter = await this.loadFreighter();
|
|
56
|
+
if (typeof freighter.isConnected !== 'function')
|
|
57
|
+
return false;
|
|
58
|
+
await freighter.isConnected();
|
|
59
|
+
this.metadata.isAvailable = true;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
this.metadata.isAvailable = false;
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
31
66
|
}
|
|
32
67
|
async connect() {
|
|
33
|
-
|
|
34
|
-
|
|
68
|
+
const freighter = await this.loadFreighter();
|
|
69
|
+
if (typeof freighter.getPublicKey !== 'function') {
|
|
70
|
+
throw new WalletError('Freighter API is unavailable', WalletErrorCode.NOT_INSTALLED, WalletType.FREIGHTER);
|
|
35
71
|
}
|
|
36
72
|
try {
|
|
37
|
-
const publicKey = await
|
|
73
|
+
const publicKey = await freighter.getPublicKey();
|
|
38
74
|
if (!publicKey) {
|
|
39
75
|
throw new WalletError('User rejected connection request', WalletErrorCode.USER_REJECTED, WalletType.FREIGHTER);
|
|
40
76
|
}
|
|
@@ -49,37 +85,41 @@ export class FreighterAdapter {
|
|
|
49
85
|
async disconnect() {
|
|
50
86
|
// Freighter doesn't have explicit disconnect
|
|
51
87
|
// Connection state is managed by extension
|
|
52
|
-
|
|
88
|
+
// Keep module cached, just mark unavailable until next check.
|
|
89
|
+
this.metadata.isAvailable = false;
|
|
53
90
|
}
|
|
54
91
|
async getAddress() {
|
|
55
|
-
if (!this.api)
|
|
56
|
-
return null;
|
|
57
92
|
try {
|
|
58
|
-
const
|
|
93
|
+
const freighter = await this.loadFreighter();
|
|
94
|
+
if (typeof freighter.isConnected !== 'function' || typeof freighter.getPublicKey !== 'function')
|
|
95
|
+
return null;
|
|
96
|
+
const connected = await freighter.isConnected();
|
|
59
97
|
if (!connected)
|
|
60
98
|
return null;
|
|
61
|
-
return await
|
|
99
|
+
return await freighter.getPublicKey();
|
|
62
100
|
}
|
|
63
101
|
catch {
|
|
64
102
|
return null;
|
|
65
103
|
}
|
|
66
104
|
}
|
|
67
105
|
async isConnected() {
|
|
68
|
-
if (!this.api)
|
|
69
|
-
return false;
|
|
70
106
|
try {
|
|
71
|
-
|
|
107
|
+
const freighter = await this.loadFreighter();
|
|
108
|
+
if (typeof freighter.isConnected !== 'function')
|
|
109
|
+
return false;
|
|
110
|
+
return await freighter.isConnected();
|
|
72
111
|
}
|
|
73
112
|
catch {
|
|
74
113
|
return false;
|
|
75
114
|
}
|
|
76
115
|
}
|
|
77
116
|
async signTransaction(xdr, options) {
|
|
78
|
-
|
|
117
|
+
const freighter = await this.loadFreighter();
|
|
118
|
+
if (typeof freighter.signTransaction !== 'function') {
|
|
79
119
|
throw new WalletError('Freighter is not connected', WalletErrorCode.NOT_CONNECTED, WalletType.FREIGHTER);
|
|
80
120
|
}
|
|
81
121
|
try {
|
|
82
|
-
const signedXdr = await
|
|
122
|
+
const signedXdr = await freighter.signTransaction(xdr, {
|
|
83
123
|
networkPassphrase: options?.networkPassphrase,
|
|
84
124
|
accountToSign: options?.accountToSign,
|
|
85
125
|
});
|
|
@@ -93,11 +133,12 @@ export class FreighterAdapter {
|
|
|
93
133
|
}
|
|
94
134
|
}
|
|
95
135
|
async getNetwork() {
|
|
96
|
-
|
|
136
|
+
const freighter = await this.loadFreighter();
|
|
137
|
+
if (typeof freighter.getNetwork !== 'function') {
|
|
97
138
|
throw new WalletError('Freighter is not connected', WalletErrorCode.NOT_CONNECTED, WalletType.FREIGHTER);
|
|
98
139
|
}
|
|
99
140
|
try {
|
|
100
|
-
return await
|
|
141
|
+
return await freighter.getNetwork();
|
|
101
142
|
}
|
|
102
143
|
catch (error) {
|
|
103
144
|
throw new WalletError(`Failed to get network: ${error.message}`, WalletErrorCode.NETWORK_ERROR, WalletType.FREIGHTER);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FreighterAdapter.js","sourceRoot":"","sources":["../../../src/wallet/adapters/FreighterAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,UAAU,EAGV,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"FreighterAdapter.js","sourceRoot":"","sources":["../../../src/wallet/adapters/FreighterAdapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@karn_lat/protocol-sdk",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.5",
|
|
4
4
|
"description": "Official TypeScript SDK for Karn Protocol - Contribution-driven governance on Stellar",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"bugs": {
|
|
72
72
|
"url": "https://github.com/ThaisFReis/karn-protocol/issues"
|
|
73
73
|
},
|
|
74
|
-
"homepage": "https://
|
|
74
|
+
"homepage": "https://karn-protocol.vercel.app/"
|
|
75
75
|
}
|
|
@@ -315,7 +315,10 @@ export class WalletManager {
|
|
|
315
315
|
if (typeof window === 'undefined') return;
|
|
316
316
|
|
|
317
317
|
try {
|
|
318
|
-
localStorage
|
|
318
|
+
const storage = (window as any).localStorage;
|
|
319
|
+
if (!storage) return;
|
|
320
|
+
|
|
321
|
+
storage.setItem(
|
|
319
322
|
'karn_wallet_connection',
|
|
320
323
|
JSON.stringify({ walletType, address })
|
|
321
324
|
);
|
|
@@ -331,7 +334,10 @@ export class WalletManager {
|
|
|
331
334
|
if (typeof window === 'undefined') return;
|
|
332
335
|
|
|
333
336
|
try {
|
|
334
|
-
|
|
337
|
+
const storage = (window as any).localStorage;
|
|
338
|
+
if (!storage) return;
|
|
339
|
+
|
|
340
|
+
storage.removeItem('karn_wallet_connection');
|
|
335
341
|
} catch (error) {
|
|
336
342
|
console.warn('Failed to clear wallet connection:', error);
|
|
337
343
|
}
|
|
@@ -344,7 +350,10 @@ export class WalletManager {
|
|
|
344
350
|
if (typeof window === 'undefined') return;
|
|
345
351
|
|
|
346
352
|
try {
|
|
347
|
-
const
|
|
353
|
+
const storage = (window as any).localStorage;
|
|
354
|
+
if (!storage) return;
|
|
355
|
+
|
|
356
|
+
const saved = storage.getItem('karn_wallet_connection');
|
|
348
357
|
if (!saved) return;
|
|
349
358
|
|
|
350
359
|
const { walletType } = JSON.parse(saved);
|
|
@@ -40,42 +40,22 @@ export class AlbedoAdapter implements WalletAdapter {
|
|
|
40
40
|
name: 'Albedo',
|
|
41
41
|
url: 'https://albedo.link',
|
|
42
42
|
description: 'Web-based Stellar wallet with seamless browser integration',
|
|
43
|
-
|
|
43
|
+
// Albedo is web-based, but availability is environment-dependent.
|
|
44
|
+
// We treat it as "available" only when the runtime can actually invoke it.
|
|
45
|
+
isAvailable: false,
|
|
44
46
|
};
|
|
45
47
|
|
|
46
48
|
private currentAddress: string | null = null;
|
|
47
49
|
|
|
48
50
|
async isAvailable(): Promise<boolean> {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (typeof window !== 'undefined' && !window.albedo) {
|
|
52
|
-
await this.loadAlbedoScript();
|
|
53
|
-
}
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private async loadAlbedoScript(): Promise<void> {
|
|
58
|
-
return new Promise((resolve, reject) => {
|
|
59
|
-
if (window.albedo) {
|
|
60
|
-
resolve();
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const script = document.createElement('script');
|
|
65
|
-
script.src = 'https://cdn.jsdelivr.net/npm/@albedo-link/intent@latest/lib/albedo.intent.js';
|
|
66
|
-
script.async = true;
|
|
67
|
-
script.onload = () => resolve();
|
|
68
|
-
script.onerror = () => reject(new Error('Failed to load Albedo'));
|
|
69
|
-
document.head.appendChild(script);
|
|
70
|
-
});
|
|
51
|
+
if (typeof window === 'undefined') return false;
|
|
52
|
+
return !!window.albedo;
|
|
71
53
|
}
|
|
72
54
|
|
|
73
55
|
async connect(): Promise<string> {
|
|
74
|
-
await this.isAvailable()
|
|
75
|
-
|
|
76
|
-
if (!window.albedo) {
|
|
56
|
+
if (!(await this.isAvailable()) || !window.albedo) {
|
|
77
57
|
throw new WalletError(
|
|
78
|
-
'Albedo
|
|
58
|
+
'Albedo is not available in this environment',
|
|
79
59
|
WalletErrorCode.NOT_INSTALLED,
|
|
80
60
|
WalletType.ALBEDO
|
|
81
61
|
);
|
|
@@ -14,23 +14,16 @@ import {
|
|
|
14
14
|
WalletErrorCode,
|
|
15
15
|
} from '../types.js';
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
signTransaction(
|
|
17
|
+
type FreighterModule = {
|
|
18
|
+
isConnected?: () => Promise<boolean>;
|
|
19
|
+
getPublicKey?: () => Promise<string>;
|
|
20
|
+
signTransaction?: (
|
|
22
21
|
xdr: string,
|
|
23
22
|
opts?: { network?: string; networkPassphrase?: string; accountToSign?: string }
|
|
24
|
-
)
|
|
25
|
-
getNetwork()
|
|
26
|
-
getNetworkDetails()
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
declare global {
|
|
30
|
-
interface Window {
|
|
31
|
-
freighter?: FreighterAPI;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
23
|
+
) => Promise<string>;
|
|
24
|
+
getNetwork?: () => Promise<string>;
|
|
25
|
+
getNetworkDetails?: () => Promise<{ network: string; networkPassphrase: string }>;
|
|
26
|
+
};
|
|
34
27
|
|
|
35
28
|
export class FreighterAdapter implements WalletAdapter {
|
|
36
29
|
type = WalletType.FREIGHTER;
|
|
@@ -45,34 +38,65 @@ export class FreighterAdapter implements WalletAdapter {
|
|
|
45
38
|
isAvailable: false,
|
|
46
39
|
};
|
|
47
40
|
|
|
48
|
-
private
|
|
41
|
+
private freighter: FreighterModule | null = null;
|
|
49
42
|
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
private canUseBrowserFreighterApi(): boolean {
|
|
44
|
+
// In Node/Jest we may have `global.window` mocked but without real browser globals.
|
|
45
|
+
// `@stellar/freighter-api` touches `window.location.origin` at import time.
|
|
46
|
+
return (
|
|
47
|
+
typeof window !== 'undefined' &&
|
|
48
|
+
typeof (window as any).location?.origin === 'string' &&
|
|
49
|
+
typeof document !== 'undefined'
|
|
50
|
+
);
|
|
52
51
|
}
|
|
53
52
|
|
|
54
|
-
private
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
private async loadFreighter(): Promise<FreighterModule> {
|
|
54
|
+
if (this.freighter) return this.freighter;
|
|
55
|
+
|
|
56
|
+
// 1) Prefer legacy window injection if present (also used by our Jest tests).
|
|
57
|
+
if (typeof window !== 'undefined') {
|
|
58
|
+
const injected = (window as any).freighter as FreighterModule | undefined;
|
|
59
|
+
if (injected) {
|
|
60
|
+
this.freighter = injected;
|
|
61
|
+
return injected;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// 2) In real browsers, use the official module API.
|
|
66
|
+
if (!this.canUseBrowserFreighterApi()) {
|
|
67
|
+
throw new WalletError('Freighter is not installed', WalletErrorCode.NOT_INSTALLED, WalletType.FREIGHTER);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
const mod = (await import('@stellar/freighter-api')) as unknown as FreighterModule;
|
|
72
|
+
this.freighter = mod;
|
|
73
|
+
return mod;
|
|
74
|
+
} catch {
|
|
75
|
+
throw new WalletError('Freighter is not installed', WalletErrorCode.NOT_INSTALLED, WalletType.FREIGHTER);
|
|
58
76
|
}
|
|
59
77
|
}
|
|
60
78
|
|
|
61
79
|
async isAvailable(): Promise<boolean> {
|
|
62
|
-
|
|
80
|
+
try {
|
|
81
|
+
const freighter = await this.loadFreighter();
|
|
82
|
+
if (typeof freighter.isConnected !== 'function') return false;
|
|
83
|
+
await freighter.isConnected();
|
|
84
|
+
this.metadata.isAvailable = true;
|
|
85
|
+
return true;
|
|
86
|
+
} catch {
|
|
87
|
+
this.metadata.isAvailable = false;
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
63
90
|
}
|
|
64
91
|
|
|
65
92
|
async connect(): Promise<string> {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
WalletErrorCode.NOT_INSTALLED,
|
|
70
|
-
WalletType.FREIGHTER
|
|
71
|
-
);
|
|
93
|
+
const freighter = await this.loadFreighter();
|
|
94
|
+
if (typeof freighter.getPublicKey !== 'function') {
|
|
95
|
+
throw new WalletError('Freighter API is unavailable', WalletErrorCode.NOT_INSTALLED, WalletType.FREIGHTER);
|
|
72
96
|
}
|
|
73
97
|
|
|
74
98
|
try {
|
|
75
|
-
const publicKey = await
|
|
99
|
+
const publicKey = await freighter.getPublicKey();
|
|
76
100
|
if (!publicKey) {
|
|
77
101
|
throw new WalletError(
|
|
78
102
|
'User rejected connection request',
|
|
@@ -95,27 +119,29 @@ export class FreighterAdapter implements WalletAdapter {
|
|
|
95
119
|
async disconnect(): Promise<void> {
|
|
96
120
|
// Freighter doesn't have explicit disconnect
|
|
97
121
|
// Connection state is managed by extension
|
|
98
|
-
|
|
122
|
+
// Keep module cached, just mark unavailable until next check.
|
|
123
|
+
this.metadata.isAvailable = false;
|
|
99
124
|
}
|
|
100
125
|
|
|
101
126
|
async getAddress(): Promise<string | null> {
|
|
102
|
-
if (!this.api) return null;
|
|
103
|
-
|
|
104
127
|
try {
|
|
105
|
-
const
|
|
128
|
+
const freighter = await this.loadFreighter();
|
|
129
|
+
if (typeof freighter.isConnected !== 'function' || typeof freighter.getPublicKey !== 'function') return null;
|
|
130
|
+
|
|
131
|
+
const connected = await freighter.isConnected();
|
|
106
132
|
if (!connected) return null;
|
|
107
133
|
|
|
108
|
-
return await
|
|
134
|
+
return await freighter.getPublicKey();
|
|
109
135
|
} catch {
|
|
110
136
|
return null;
|
|
111
137
|
}
|
|
112
138
|
}
|
|
113
139
|
|
|
114
140
|
async isConnected(): Promise<boolean> {
|
|
115
|
-
if (!this.api) return false;
|
|
116
|
-
|
|
117
141
|
try {
|
|
118
|
-
|
|
142
|
+
const freighter = await this.loadFreighter();
|
|
143
|
+
if (typeof freighter.isConnected !== 'function') return false;
|
|
144
|
+
return await freighter.isConnected();
|
|
119
145
|
} catch {
|
|
120
146
|
return false;
|
|
121
147
|
}
|
|
@@ -125,16 +151,13 @@ export class FreighterAdapter implements WalletAdapter {
|
|
|
125
151
|
xdr: string,
|
|
126
152
|
options?: SignTransactionOptions
|
|
127
153
|
): Promise<string> {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
WalletErrorCode.NOT_CONNECTED,
|
|
132
|
-
WalletType.FREIGHTER
|
|
133
|
-
);
|
|
154
|
+
const freighter = await this.loadFreighter();
|
|
155
|
+
if (typeof freighter.signTransaction !== 'function') {
|
|
156
|
+
throw new WalletError('Freighter is not connected', WalletErrorCode.NOT_CONNECTED, WalletType.FREIGHTER);
|
|
134
157
|
}
|
|
135
158
|
|
|
136
159
|
try {
|
|
137
|
-
const signedXdr = await
|
|
160
|
+
const signedXdr = await freighter.signTransaction(xdr, {
|
|
138
161
|
networkPassphrase: options?.networkPassphrase,
|
|
139
162
|
accountToSign: options?.accountToSign,
|
|
140
163
|
});
|
|
@@ -158,16 +181,13 @@ export class FreighterAdapter implements WalletAdapter {
|
|
|
158
181
|
}
|
|
159
182
|
|
|
160
183
|
async getNetwork(): Promise<string> {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
WalletErrorCode.NOT_CONNECTED,
|
|
165
|
-
WalletType.FREIGHTER
|
|
166
|
-
);
|
|
184
|
+
const freighter = await this.loadFreighter();
|
|
185
|
+
if (typeof freighter.getNetwork !== 'function') {
|
|
186
|
+
throw new WalletError('Freighter is not connected', WalletErrorCode.NOT_CONNECTED, WalletType.FREIGHTER);
|
|
167
187
|
}
|
|
168
188
|
|
|
169
189
|
try {
|
|
170
|
-
return await
|
|
190
|
+
return await freighter.getNetwork();
|
|
171
191
|
} catch (error: any) {
|
|
172
192
|
throw new WalletError(
|
|
173
193
|
`Failed to get network: ${error.message}`,
|
package/test-fixes.js
CHANGED
|
@@ -18,7 +18,11 @@ try {
|
|
|
18
18
|
const valocracy = new ValocracyClient(
|
|
19
19
|
'Test SDF Network ; September 2015',
|
|
20
20
|
'https://soroban-testnet.stellar.org',
|
|
21
|
-
|
|
21
|
+
<<<<<<< HEAD
|
|
22
|
+
'REDACTED_CONTRACT_ID_VALOCRACY'
|
|
23
|
+
=======
|
|
24
|
+
'CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"'
|
|
25
|
+
>>>>>>> 257583c5837a1af14efbaa2ea574613bd78df4b0
|
|
22
26
|
);
|
|
23
27
|
|
|
24
28
|
console.log(' ✓ Import from ./dist/clients/index.js works\n');
|
|
@@ -36,7 +40,11 @@ try {
|
|
|
36
40
|
const governor = new GovernorClient(
|
|
37
41
|
'Test SDF Network ; September 2015',
|
|
38
42
|
'https://soroban-testnet.stellar.org',
|
|
39
|
-
|
|
43
|
+
<<<<<<< HEAD
|
|
44
|
+
'REDACTED_CONTRACT_ID_GOVERNOR'
|
|
45
|
+
=======
|
|
46
|
+
'CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"'
|
|
47
|
+
>>>>>>> 257583c5837a1af14efbaa2ea574613bd78df4b0
|
|
40
48
|
);
|
|
41
49
|
|
|
42
50
|
console.log(' ✓ Import from ./dist/index.js works');
|