@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
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lobstr Wallet Adapter
|
|
3
|
+
*
|
|
4
|
+
* Popular Stellar mobile wallet with extension support
|
|
5
|
+
* https://lobstr.co
|
|
6
|
+
*/
|
|
7
|
+
import { WalletType, WalletError, WalletErrorCode, } from '../types.js';
|
|
8
|
+
export class LobstrAdapter {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.type = WalletType.LOBSTR;
|
|
11
|
+
this.metadata = {
|
|
12
|
+
type: WalletType.LOBSTR,
|
|
13
|
+
name: 'Lobstr',
|
|
14
|
+
url: 'https://lobstr.co',
|
|
15
|
+
chromeUrl: 'https://chrome.google.com/webstore/detail/lobstr-extension/cmgchfbiagidgmjmfjkhldngnmlfpnog',
|
|
16
|
+
description: 'Popular Stellar wallet with mobile and extension support',
|
|
17
|
+
isAvailable: false,
|
|
18
|
+
};
|
|
19
|
+
this.api = null;
|
|
20
|
+
this.init();
|
|
21
|
+
}
|
|
22
|
+
init() {
|
|
23
|
+
if (typeof window !== 'undefined' && window.lobstrExtension) {
|
|
24
|
+
this.api = window.lobstrExtension;
|
|
25
|
+
this.metadata.isAvailable = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async isAvailable() {
|
|
29
|
+
return this.metadata.isAvailable;
|
|
30
|
+
}
|
|
31
|
+
async connect() {
|
|
32
|
+
if (!this.api) {
|
|
33
|
+
throw new WalletError('Lobstr Extension is not installed', WalletErrorCode.NOT_INSTALLED, WalletType.LOBSTR);
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const publicKey = await this.api.getPublicKey();
|
|
37
|
+
if (!publicKey) {
|
|
38
|
+
throw new WalletError('User rejected connection request', WalletErrorCode.USER_REJECTED, WalletType.LOBSTR);
|
|
39
|
+
}
|
|
40
|
+
return publicKey;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof WalletError)
|
|
44
|
+
throw error;
|
|
45
|
+
throw new WalletError(`Failed to connect to Lobstr: ${error.message}`, WalletErrorCode.UNKNOWN_ERROR, WalletType.LOBSTR);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async disconnect() {
|
|
49
|
+
this.api = null;
|
|
50
|
+
}
|
|
51
|
+
async getAddress() {
|
|
52
|
+
if (!this.api)
|
|
53
|
+
return null;
|
|
54
|
+
try {
|
|
55
|
+
const connected = await this.api.isConnected();
|
|
56
|
+
if (!connected)
|
|
57
|
+
return null;
|
|
58
|
+
return await this.api.getPublicKey();
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async isConnected() {
|
|
65
|
+
if (!this.api)
|
|
66
|
+
return false;
|
|
67
|
+
try {
|
|
68
|
+
return await this.api.isConnected();
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async signTransaction(xdr, options) {
|
|
75
|
+
if (!this.api) {
|
|
76
|
+
throw new WalletError('Lobstr is not connected', WalletErrorCode.NOT_CONNECTED, WalletType.LOBSTR);
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const signedXdr = await this.api.signTransaction(xdr, {
|
|
80
|
+
network: options?.networkPassphrase,
|
|
81
|
+
});
|
|
82
|
+
return signedXdr;
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw new WalletError(`Failed to sign transaction: ${error.message}`, WalletErrorCode.SIGNING_FAILED, WalletType.LOBSTR);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=LobstrAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LobstrAdapter.js","sourceRoot":"","sources":["../../../src/wallet/adapters/LobstrAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,UAAU,EAGV,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AAerB,MAAM,OAAO,aAAa;IAcxB;QAbA,SAAI,GAAG,UAAU,CAAC,MAAM,CAAC;QAEzB,aAAQ,GAAmB;YACzB,IAAI,EAAE,UAAU,CAAC,MAAM;YACvB,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,mBAAmB;YACxB,SAAS,EAAE,6FAA6F;YACxG,WAAW,EAAE,0DAA0D;YACvE,WAAW,EAAE,KAAK;SACnB,CAAC;QAEM,QAAG,GAAqB,IAAI,CAAC;QAGnC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5D,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,WAAW,CACnB,mCAAmC,EACnC,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,MAAM,CAClB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,WAAW,CACnB,kCAAkC,EAClC,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,MAAM,CAClB,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,YAAY,WAAW;gBAAE,MAAM,KAAK,CAAC;YAE9C,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,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YAE5B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAE5B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAW,EACX,OAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,WAAW,CACnB,yBAAyB,EACzB,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,MAAM,CAClB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE;gBACpD,OAAO,EAAE,OAAO,EAAE,iBAAiB;aACpC,CAAC,CAAC;YAEH,OAAO,SAAS,CAAC;QACnB,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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rabet Wallet Adapter
|
|
3
|
+
*
|
|
4
|
+
* Modern Stellar wallet with built-in swap features
|
|
5
|
+
* https://rabet.io
|
|
6
|
+
*/
|
|
7
|
+
import { WalletAdapter, WalletType, WalletMetadata, SignTransactionOptions } from '../types.js';
|
|
8
|
+
interface RabetAPI {
|
|
9
|
+
connect(): Promise<{
|
|
10
|
+
publicKey: string;
|
|
11
|
+
}>;
|
|
12
|
+
sign(xdr: string, opts?: {
|
|
13
|
+
network?: string;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
xdr: string;
|
|
16
|
+
}>;
|
|
17
|
+
disconnect(): Promise<void>;
|
|
18
|
+
isConnected(): Promise<boolean>;
|
|
19
|
+
}
|
|
20
|
+
declare global {
|
|
21
|
+
interface Window {
|
|
22
|
+
rabet?: RabetAPI;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export declare class RabetAdapter implements WalletAdapter {
|
|
26
|
+
type: WalletType;
|
|
27
|
+
metadata: WalletMetadata;
|
|
28
|
+
private api;
|
|
29
|
+
constructor();
|
|
30
|
+
private init;
|
|
31
|
+
isAvailable(): Promise<boolean>;
|
|
32
|
+
connect(): Promise<string>;
|
|
33
|
+
disconnect(): Promise<void>;
|
|
34
|
+
getAddress(): Promise<string | null>;
|
|
35
|
+
isConnected(): Promise<boolean>;
|
|
36
|
+
signTransaction(xdr: string, options?: SignTransactionOptions): Promise<string>;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=RabetAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RabetAdapter.d.ts","sourceRoot":"","sources":["../../../src/wallet/adapters/RabetAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AAGrB,UAAU,QAAQ;IAChB,OAAO,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,KAAK,CAAC,EAAE,QAAQ,CAAC;KAClB;CACF;AAED,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAI,aAAoB;IAExB,QAAQ,EAAE,cAAc,CAQtB;IAEF,OAAO,CAAC,GAAG,CAAyB;;IAMpC,OAAO,CAAC,IAAI;IAON,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA8B1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBpC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAU/B,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,MAAM,CAAC;CA+BnB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rabet Wallet Adapter
|
|
3
|
+
*
|
|
4
|
+
* Modern Stellar wallet with built-in swap features
|
|
5
|
+
* https://rabet.io
|
|
6
|
+
*/
|
|
7
|
+
import { WalletType, WalletError, WalletErrorCode, } from '../types.js';
|
|
8
|
+
export class RabetAdapter {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.type = WalletType.RABET;
|
|
11
|
+
this.metadata = {
|
|
12
|
+
type: WalletType.RABET,
|
|
13
|
+
name: 'Rabet',
|
|
14
|
+
url: 'https://rabet.io',
|
|
15
|
+
chromeUrl: 'https://chrome.google.com/webstore/detail/rabet/aapjbdekemjjmldlfinkhcmkbcfikkde',
|
|
16
|
+
firefoxUrl: 'https://addons.mozilla.org/en-US/firefox/addon/rabet/',
|
|
17
|
+
description: 'Modern Stellar wallet with built-in swap and DeFi features',
|
|
18
|
+
isAvailable: false,
|
|
19
|
+
};
|
|
20
|
+
this.api = null;
|
|
21
|
+
this.init();
|
|
22
|
+
}
|
|
23
|
+
init() {
|
|
24
|
+
if (typeof window !== 'undefined' && window.rabet) {
|
|
25
|
+
this.api = window.rabet;
|
|
26
|
+
this.metadata.isAvailable = true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async isAvailable() {
|
|
30
|
+
return this.metadata.isAvailable;
|
|
31
|
+
}
|
|
32
|
+
async connect() {
|
|
33
|
+
if (!this.api) {
|
|
34
|
+
throw new WalletError('Rabet is not installed', WalletErrorCode.NOT_INSTALLED, WalletType.RABET);
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const result = await this.api.connect();
|
|
38
|
+
if (!result.publicKey) {
|
|
39
|
+
throw new WalletError('User rejected connection request', WalletErrorCode.USER_REJECTED, WalletType.RABET);
|
|
40
|
+
}
|
|
41
|
+
return result.publicKey;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof WalletError)
|
|
45
|
+
throw error;
|
|
46
|
+
throw new WalletError(`Failed to connect to Rabet: ${error.message}`, WalletErrorCode.UNKNOWN_ERROR, WalletType.RABET);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async disconnect() {
|
|
50
|
+
if (this.api) {
|
|
51
|
+
try {
|
|
52
|
+
await this.api.disconnect();
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Ignore disconnect errors
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
this.api = null;
|
|
59
|
+
}
|
|
60
|
+
async getAddress() {
|
|
61
|
+
if (!this.api)
|
|
62
|
+
return null;
|
|
63
|
+
try {
|
|
64
|
+
const connected = await this.api.isConnected();
|
|
65
|
+
if (!connected)
|
|
66
|
+
return null;
|
|
67
|
+
// Rabet doesn't expose getPublicKey directly
|
|
68
|
+
// Need to reconnect to get address
|
|
69
|
+
const result = await this.api.connect();
|
|
70
|
+
return result.publicKey;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async isConnected() {
|
|
77
|
+
if (!this.api)
|
|
78
|
+
return false;
|
|
79
|
+
try {
|
|
80
|
+
return await this.api.isConnected();
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async signTransaction(xdr, options) {
|
|
87
|
+
if (!this.api) {
|
|
88
|
+
throw new WalletError('Rabet is not connected', WalletErrorCode.NOT_CONNECTED, WalletType.RABET);
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const result = await this.api.sign(xdr, {
|
|
92
|
+
network: options?.networkPassphrase,
|
|
93
|
+
});
|
|
94
|
+
return result.xdr;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error.message?.includes('User cancelled')) {
|
|
98
|
+
throw new WalletError('User rejected signature request', WalletErrorCode.USER_REJECTED, WalletType.RABET);
|
|
99
|
+
}
|
|
100
|
+
throw new WalletError(`Failed to sign transaction: ${error.message}`, WalletErrorCode.SIGNING_FAILED, WalletType.RABET);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=RabetAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RabetAdapter.js","sourceRoot":"","sources":["../../../src/wallet/adapters/RabetAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xBull Wallet Adapter
|
|
3
|
+
*
|
|
4
|
+
* Modern Stellar wallet extension
|
|
5
|
+
* https://xbull.app
|
|
6
|
+
*/
|
|
7
|
+
import { WalletAdapter, WalletType, WalletMetadata, SignTransactionOptions } from '../types.js';
|
|
8
|
+
interface XBullAPI {
|
|
9
|
+
connect(): Promise<{
|
|
10
|
+
publicKey: string;
|
|
11
|
+
}>;
|
|
12
|
+
sign(params: {
|
|
13
|
+
xdr: string;
|
|
14
|
+
publicKey?: string;
|
|
15
|
+
network?: string;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
signedXDR: string;
|
|
18
|
+
}>;
|
|
19
|
+
isAvailable(): boolean;
|
|
20
|
+
}
|
|
21
|
+
declare global {
|
|
22
|
+
interface Window {
|
|
23
|
+
xBullSDK?: XBullAPI;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export declare class XBullAdapter implements WalletAdapter {
|
|
27
|
+
type: WalletType;
|
|
28
|
+
metadata: WalletMetadata;
|
|
29
|
+
private api;
|
|
30
|
+
private currentAddress;
|
|
31
|
+
constructor();
|
|
32
|
+
private init;
|
|
33
|
+
isAvailable(): Promise<boolean>;
|
|
34
|
+
connect(): Promise<string>;
|
|
35
|
+
disconnect(): Promise<void>;
|
|
36
|
+
getAddress(): Promise<string | null>;
|
|
37
|
+
isConnected(): Promise<boolean>;
|
|
38
|
+
signTransaction(xdr: string, options?: SignTransactionOptions): Promise<string>;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=xBullAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xBullAdapter.d.ts","sourceRoot":"","sources":["../../../src/wallet/adapters/xBullAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AAGrB,UAAU,QAAQ;IAChB,OAAO,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpG,WAAW,IAAI,OAAO,CAAC;CACxB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;KACrB;CACF;AAED,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAI,aAAoB;IAExB,QAAQ,EAAE,cAAc,CAOtB;IAEF,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,cAAc,CAAuB;;IAM7C,OAAO,CAAC,IAAI;IAON,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAsB1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,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;CAyBnB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xBull Wallet Adapter
|
|
3
|
+
*
|
|
4
|
+
* Modern Stellar wallet extension
|
|
5
|
+
* https://xbull.app
|
|
6
|
+
*/
|
|
7
|
+
import { WalletType, WalletError, WalletErrorCode, } from '../types.js';
|
|
8
|
+
export class XBullAdapter {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.type = WalletType.XBULL;
|
|
11
|
+
this.metadata = {
|
|
12
|
+
type: WalletType.XBULL,
|
|
13
|
+
name: 'xBull',
|
|
14
|
+
url: 'https://xbull.app',
|
|
15
|
+
chromeUrl: 'https://chrome.google.com/webstore/detail/xbull-wallet/omajpeaffjgmlpmfejkepdlekgkglhhk',
|
|
16
|
+
description: 'Modern Stellar wallet with advanced features',
|
|
17
|
+
isAvailable: false,
|
|
18
|
+
};
|
|
19
|
+
this.api = null;
|
|
20
|
+
this.currentAddress = null;
|
|
21
|
+
this.init();
|
|
22
|
+
}
|
|
23
|
+
init() {
|
|
24
|
+
if (typeof window !== 'undefined' && window.xBullSDK) {
|
|
25
|
+
this.api = window.xBullSDK;
|
|
26
|
+
this.metadata.isAvailable = this.api.isAvailable();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async isAvailable() {
|
|
30
|
+
return this.metadata.isAvailable;
|
|
31
|
+
}
|
|
32
|
+
async connect() {
|
|
33
|
+
if (!this.api) {
|
|
34
|
+
throw new WalletError('xBull is not installed', WalletErrorCode.NOT_INSTALLED, WalletType.XBULL);
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const result = await this.api.connect();
|
|
38
|
+
this.currentAddress = result.publicKey;
|
|
39
|
+
return result.publicKey;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw new WalletError(`Failed to connect to xBull: ${error.message}`, WalletErrorCode.USER_REJECTED, WalletType.XBULL);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async disconnect() {
|
|
46
|
+
this.currentAddress = null;
|
|
47
|
+
this.api = null;
|
|
48
|
+
}
|
|
49
|
+
async getAddress() {
|
|
50
|
+
return this.currentAddress;
|
|
51
|
+
}
|
|
52
|
+
async isConnected() {
|
|
53
|
+
return this.currentAddress !== null;
|
|
54
|
+
}
|
|
55
|
+
async signTransaction(xdr, options) {
|
|
56
|
+
if (!this.api) {
|
|
57
|
+
throw new WalletError('xBull is not connected', WalletErrorCode.NOT_CONNECTED, WalletType.XBULL);
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const result = await this.api.sign({
|
|
61
|
+
xdr,
|
|
62
|
+
publicKey: this.currentAddress || undefined,
|
|
63
|
+
network: options?.networkPassphrase,
|
|
64
|
+
});
|
|
65
|
+
return result.signedXDR;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
throw new WalletError(`Failed to sign transaction: ${error.message}`, WalletErrorCode.SIGNING_FAILED, WalletType.XBULL);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=xBullAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xBullAdapter.js","sourceRoot":"","sources":["../../../src/wallet/adapters/xBullAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,UAAU,EAGV,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AAerB,MAAM,OAAO,YAAY;IAevB;QAdA,SAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QAExB,aAAQ,GAAmB;YACzB,IAAI,EAAE,UAAU,CAAC,KAAK;YACtB,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,mBAAmB;YACxB,SAAS,EAAE,yFAAyF;YACpG,WAAW,EAAE,8CAA8C;YAC3D,WAAW,EAAE,KAAK;SACnB,CAAC;QAEM,QAAG,GAAoB,IAAI,CAAC;QAC5B,mBAAc,GAAkB,IAAI,CAAC;QAG3C,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,WAAW,CACnB,wBAAwB,EACxB,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,KAAK,CACjB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;YACvC,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,WAAW,CACnB,+BAA+B,KAAK,CAAC,OAAO,EAAE,EAC9C,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,KAAK,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,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,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,WAAW,CACnB,wBAAwB,EACxB,eAAe,CAAC,aAAa,EAC7B,UAAU,CAAC,KAAK,CACjB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACjC,GAAG;gBACH,SAAS,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS;gBAC3C,OAAO,EAAE,OAAO,EAAE,iBAAiB;aACpC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,WAAW,CACnB,+BAA+B,KAAK,CAAC,OAAO,EAAE,EAC9C,eAAe,CAAC,cAAc,EAC9B,UAAU,CAAC,KAAK,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Karn Protocol Multi-Wallet Support
|
|
3
|
+
*
|
|
4
|
+
* Provides unified interface for connecting to multiple Stellar wallets:
|
|
5
|
+
* - Freighter (official Stellar extension)
|
|
6
|
+
* - Albedo (web-based, no extension required)
|
|
7
|
+
* - Lobstr (popular mobile + extension)
|
|
8
|
+
* - xBull (modern wallet with advanced features)
|
|
9
|
+
* - Rabet (DeFi-focused wallet with built-in swap)
|
|
10
|
+
*
|
|
11
|
+
* - Rabet (DeFi-focused wallet with built-in swap)
|
|
12
|
+
*/
|
|
13
|
+
export { WalletManager } from './WalletManager.js';
|
|
14
|
+
export { WalletType, WalletState, WalletMetadata, WalletAdapter, WalletConnection, WalletEvent, WalletEventPayload, WalletEventListener, SignTransactionOptions, WalletError, WalletErrorCode, } from './types.js';
|
|
15
|
+
export { FreighterAdapter } from './adapters/FreighterAdapter.js';
|
|
16
|
+
export { AlbedoAdapter } from './adapters/AlbedoAdapter.js';
|
|
17
|
+
export { LobstrAdapter } from './adapters/LobstrAdapter.js';
|
|
18
|
+
export { XBullAdapter } from './adapters/xBullAdapter.js';
|
|
19
|
+
export { RabetAdapter } from './adapters/RabetAdapter.js';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EACL,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Karn Protocol Multi-Wallet Support
|
|
3
|
+
*
|
|
4
|
+
* Provides unified interface for connecting to multiple Stellar wallets:
|
|
5
|
+
* - Freighter (official Stellar extension)
|
|
6
|
+
* - Albedo (web-based, no extension required)
|
|
7
|
+
* - Lobstr (popular mobile + extension)
|
|
8
|
+
* - xBull (modern wallet with advanced features)
|
|
9
|
+
* - Rabet (DeFi-focused wallet with built-in swap)
|
|
10
|
+
*
|
|
11
|
+
* - Rabet (DeFi-focused wallet with built-in swap)
|
|
12
|
+
*/
|
|
13
|
+
// Core wallet manager
|
|
14
|
+
export { WalletManager } from './WalletManager.js';
|
|
15
|
+
// Type definitions
|
|
16
|
+
export { WalletType, WalletEvent, WalletError, WalletErrorCode, } from './types.js';
|
|
17
|
+
// Individual wallet adapters (for advanced usage)
|
|
18
|
+
export { FreighterAdapter } from './adapters/FreighterAdapter.js';
|
|
19
|
+
export { AlbedoAdapter } from './adapters/AlbedoAdapter.js';
|
|
20
|
+
export { LobstrAdapter } from './adapters/LobstrAdapter.js';
|
|
21
|
+
export { XBullAdapter } from './adapters/xBullAdapter.js';
|
|
22
|
+
export { RabetAdapter } from './adapters/RabetAdapter.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,mBAAmB;AACnB,OAAO,EACL,UAAU,EAKV,WAAW,EAIX,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,kDAAkD;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-wallet support types for Karn Protocol SDK
|
|
3
|
+
*
|
|
4
|
+
* Supports: Freighter, Albedo, Lobstr, xBull, Rabet
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Supported wallet types
|
|
8
|
+
*/
|
|
9
|
+
export declare enum WalletType {
|
|
10
|
+
FREIGHTER = "freighter",
|
|
11
|
+
ALBEDO = "albedo",
|
|
12
|
+
LOBSTR = "lobstr",
|
|
13
|
+
XBULL = "xbull",
|
|
14
|
+
RABET = "rabet"
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Wallet connection state
|
|
18
|
+
*/
|
|
19
|
+
export interface WalletState {
|
|
20
|
+
/** Whether wallet is connected */
|
|
21
|
+
isConnected: boolean;
|
|
22
|
+
/** Connected wallet address (Stellar public key) */
|
|
23
|
+
address: string | null;
|
|
24
|
+
/** Currently active wallet type */
|
|
25
|
+
walletType: WalletType | null;
|
|
26
|
+
/** Connection in progress */
|
|
27
|
+
isConnecting: boolean;
|
|
28
|
+
/** Error message if any */
|
|
29
|
+
error: string | null;
|
|
30
|
+
/** Wallet display name */
|
|
31
|
+
walletName: string | null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Wallet metadata for UI display
|
|
35
|
+
*/
|
|
36
|
+
export interface WalletMetadata {
|
|
37
|
+
/** Wallet type identifier */
|
|
38
|
+
type: WalletType;
|
|
39
|
+
/** Display name */
|
|
40
|
+
name: string;
|
|
41
|
+
/** Icon URL or data URI */
|
|
42
|
+
icon?: string;
|
|
43
|
+
/** Homepage URL */
|
|
44
|
+
url: string;
|
|
45
|
+
/** Chrome extension URL */
|
|
46
|
+
chromeUrl?: string;
|
|
47
|
+
/** Firefox addon URL */
|
|
48
|
+
firefoxUrl?: string;
|
|
49
|
+
/** Description */
|
|
50
|
+
description: string;
|
|
51
|
+
/** Is installed/available */
|
|
52
|
+
isAvailable: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Transaction signing options
|
|
56
|
+
*/
|
|
57
|
+
export interface SignTransactionOptions {
|
|
58
|
+
/** Network passphrase (default: Testnet) */
|
|
59
|
+
networkPassphrase?: string;
|
|
60
|
+
/** Optional account sequence */
|
|
61
|
+
accountToSign?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Wallet adapter interface
|
|
65
|
+
*
|
|
66
|
+
* Each wallet provider implements this interface
|
|
67
|
+
*/
|
|
68
|
+
export interface WalletAdapter {
|
|
69
|
+
/** Wallet type */
|
|
70
|
+
type: WalletType;
|
|
71
|
+
/** Wallet metadata */
|
|
72
|
+
metadata: WalletMetadata;
|
|
73
|
+
/**
|
|
74
|
+
* Check if wallet is installed/available
|
|
75
|
+
*/
|
|
76
|
+
isAvailable(): Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Connect to wallet and request access
|
|
79
|
+
* @returns Public key (Stellar address)
|
|
80
|
+
*/
|
|
81
|
+
connect(): Promise<string>;
|
|
82
|
+
/**
|
|
83
|
+
* Disconnect from wallet
|
|
84
|
+
*/
|
|
85
|
+
disconnect(): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Get current connected address
|
|
88
|
+
* @returns Public key or null if not connected
|
|
89
|
+
*/
|
|
90
|
+
getAddress(): Promise<string | null>;
|
|
91
|
+
/**
|
|
92
|
+
* Check if wallet is currently connected
|
|
93
|
+
*/
|
|
94
|
+
isConnected(): Promise<boolean>;
|
|
95
|
+
/**
|
|
96
|
+
* Sign a transaction
|
|
97
|
+
* @param xdr Transaction XDR string
|
|
98
|
+
* @param options Signing options
|
|
99
|
+
* @returns Signed transaction XDR
|
|
100
|
+
*/
|
|
101
|
+
signTransaction(xdr: string, options?: SignTransactionOptions): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Sign arbitrary message (if supported)
|
|
104
|
+
* @param message Message to sign
|
|
105
|
+
* @returns Signature
|
|
106
|
+
*/
|
|
107
|
+
signMessage?(message: string): Promise<string>;
|
|
108
|
+
/**
|
|
109
|
+
* Get network (if supported)
|
|
110
|
+
* @returns Network name (e.g., 'TESTNET', 'PUBLIC')
|
|
111
|
+
*/
|
|
112
|
+
getNetwork?(): Promise<string>;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Wallet connection result
|
|
116
|
+
*/
|
|
117
|
+
export interface WalletConnection {
|
|
118
|
+
/** Wallet type */
|
|
119
|
+
walletType: WalletType;
|
|
120
|
+
/** Connected address */
|
|
121
|
+
address: string;
|
|
122
|
+
/** Wallet adapter instance */
|
|
123
|
+
adapter: WalletAdapter;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Wallet event types
|
|
127
|
+
*/
|
|
128
|
+
export declare enum WalletEvent {
|
|
129
|
+
CONNECT = "connect",
|
|
130
|
+
DISCONNECT = "disconnect",
|
|
131
|
+
ACCOUNT_CHANGED = "accountChanged",
|
|
132
|
+
NETWORK_CHANGED = "networkChanged"
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Wallet event payload
|
|
136
|
+
*/
|
|
137
|
+
export interface WalletEventPayload {
|
|
138
|
+
walletType: WalletType;
|
|
139
|
+
address?: string;
|
|
140
|
+
network?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Wallet event listener
|
|
144
|
+
*/
|
|
145
|
+
export type WalletEventListener = (payload: WalletEventPayload) => void;
|
|
146
|
+
/**
|
|
147
|
+
* Wallet error types
|
|
148
|
+
*/
|
|
149
|
+
export declare class WalletError extends Error {
|
|
150
|
+
code: WalletErrorCode;
|
|
151
|
+
walletType?: WalletType | undefined;
|
|
152
|
+
constructor(message: string, code: WalletErrorCode, walletType?: WalletType | undefined);
|
|
153
|
+
}
|
|
154
|
+
export declare enum WalletErrorCode {
|
|
155
|
+
NOT_INSTALLED = "NOT_INSTALLED",
|
|
156
|
+
USER_REJECTED = "USER_REJECTED",
|
|
157
|
+
UNAUTHORIZED = "UNAUTHORIZED",
|
|
158
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
159
|
+
SIGNING_FAILED = "SIGNING_FAILED",
|
|
160
|
+
NOT_CONNECTED = "NOT_CONNECTED",
|
|
161
|
+
ALREADY_CONNECTED = "ALREADY_CONNECTED",
|
|
162
|
+
UNSUPPORTED_METHOD = "UNSUPPORTED_METHOD",
|
|
163
|
+
UNKNOWN_ERROR = "UNKNOWN_ERROR"
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-wallet support types for Karn Protocol SDK
|
|
3
|
+
*
|
|
4
|
+
* Supports: Freighter, Albedo, Lobstr, xBull, Rabet
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Supported wallet types
|
|
8
|
+
*/
|
|
9
|
+
export var WalletType;
|
|
10
|
+
(function (WalletType) {
|
|
11
|
+
WalletType["FREIGHTER"] = "freighter";
|
|
12
|
+
WalletType["ALBEDO"] = "albedo";
|
|
13
|
+
WalletType["LOBSTR"] = "lobstr";
|
|
14
|
+
WalletType["XBULL"] = "xbull";
|
|
15
|
+
WalletType["RABET"] = "rabet";
|
|
16
|
+
})(WalletType || (WalletType = {}));
|
|
17
|
+
/**
|
|
18
|
+
* Wallet event types
|
|
19
|
+
*/
|
|
20
|
+
export var WalletEvent;
|
|
21
|
+
(function (WalletEvent) {
|
|
22
|
+
WalletEvent["CONNECT"] = "connect";
|
|
23
|
+
WalletEvent["DISCONNECT"] = "disconnect";
|
|
24
|
+
WalletEvent["ACCOUNT_CHANGED"] = "accountChanged";
|
|
25
|
+
WalletEvent["NETWORK_CHANGED"] = "networkChanged";
|
|
26
|
+
})(WalletEvent || (WalletEvent = {}));
|
|
27
|
+
/**
|
|
28
|
+
* Wallet error types
|
|
29
|
+
*/
|
|
30
|
+
export class WalletError extends Error {
|
|
31
|
+
constructor(message, code, walletType) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.code = code;
|
|
34
|
+
this.walletType = walletType;
|
|
35
|
+
this.name = 'WalletError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export var WalletErrorCode;
|
|
39
|
+
(function (WalletErrorCode) {
|
|
40
|
+
WalletErrorCode["NOT_INSTALLED"] = "NOT_INSTALLED";
|
|
41
|
+
WalletErrorCode["USER_REJECTED"] = "USER_REJECTED";
|
|
42
|
+
WalletErrorCode["UNAUTHORIZED"] = "UNAUTHORIZED";
|
|
43
|
+
WalletErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
44
|
+
WalletErrorCode["SIGNING_FAILED"] = "SIGNING_FAILED";
|
|
45
|
+
WalletErrorCode["NOT_CONNECTED"] = "NOT_CONNECTED";
|
|
46
|
+
WalletErrorCode["ALREADY_CONNECTED"] = "ALREADY_CONNECTED";
|
|
47
|
+
WalletErrorCode["UNSUPPORTED_METHOD"] = "UNSUPPORTED_METHOD";
|
|
48
|
+
WalletErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
49
|
+
})(WalletErrorCode || (WalletErrorCode = {}));
|
|
50
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,qCAAuB,CAAA;IACvB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,6BAAe,CAAA;AACjB,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AA4ID;;GAEG;AACH,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,wCAAyB,CAAA;IACzB,iDAAkC,CAAA;IAClC,iDAAkC,CAAA;AACpC,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAgBD;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YACE,OAAe,EACR,IAAqB,EACrB,UAAuB;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAiB;QACrB,eAAU,GAAV,UAAU,CAAa;QAG9B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,CAAN,IAAY,eAUX;AAVD,WAAY,eAAe;IACzB,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,gDAA6B,CAAA;IAC7B,kDAA+B,CAAA;IAC/B,oDAAiC,CAAA;IACjC,kDAA+B,CAAA;IAC/B,0DAAuC,CAAA;IACvC,4DAAyC,CAAA;IACzC,kDAA+B,CAAA;AACjC,CAAC,EAVW,eAAe,KAAf,eAAe,QAU1B"}
|