@guveno/wallet-sdk 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/guveno.d.ts +40 -4
- package/dist/guveno.d.ts.map +1 -1
- package/dist/guveno.js +59 -6
- package/dist/guveno.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/polkadot/silence-esm-cjs-warning.d.ts +2 -0
- package/dist/polkadot/silence-esm-cjs-warning.d.ts.map +1 -0
- package/dist/polkadot/silence-esm-cjs-warning.js +20 -0
- package/dist/polkadot/silence-esm-cjs-warning.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -36,6 +36,10 @@ const wallets = await guveno.listWallets();
|
|
|
36
36
|
// Load a wallet to sign with it: fetches the sealed secret and unlocks it locally.
|
|
37
37
|
const wallet = await guveno.loadWallet(wallets[0].id, process.env.GUVENO_ENCRYPTION_PASSWORD!);
|
|
38
38
|
|
|
39
|
+
// Derive and register the next receive address (uses the server-tracked index).
|
|
40
|
+
const { address } = await wallet.deriveAddress({ label: 'deposits' });
|
|
41
|
+
console.log('Deposit to', address.address);
|
|
42
|
+
|
|
39
43
|
const withdrawal = await wallet.withdraw({
|
|
40
44
|
// Omit addressId to auto-select the source: the server picks an address with
|
|
41
45
|
// enough balance — and for Bitcoin aggregates UTXOs across the wallet.
|
|
@@ -48,6 +52,16 @@ console.log(withdrawal.status); // 'broadcast' — confirmation arrives via webh
|
|
|
48
52
|
wallet.lock(); // wipe key material from memory when done
|
|
49
53
|
```
|
|
50
54
|
|
|
55
|
+
`loadWallet()` accepts a numeric id, a wallet name, or a `{ name, chain, network }` selector:
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
await guveno.loadWallet(wallets[0].id, password); // by id
|
|
59
|
+
await guveno.loadWallet('treasury', password); // by name
|
|
60
|
+
await guveno.loadWallet({ name: 'treasury', chain: 'bitcoin', network: 'mainnet' }, password);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Names are only unique within a `(chain, network)`, so a bare name that matches wallets on more than one chain/network throws — pass the scoped `{ name, chain, network }` selector or the id to disambiguate.
|
|
64
|
+
|
|
51
65
|
`withdraw()` runs the full `prepare → sign → broadcast` loop: the server returns an unsigned payload, the SDK signs it **in process**, and broadcasts the signed transaction. The recovery phrase never leaves your machine.
|
|
52
66
|
|
|
53
67
|
By default the source is **auto-selected**. Pass `addressId` to send from one specific address, or (Bitcoin only) `sourceAddressIds` to restrict UTXO aggregation to a chosen subset of the wallet's addresses. Account-based chains can't combine balances across addresses, so an auto withdrawal throws if no single address covers the amount.
|
package/dist/guveno.d.ts
CHANGED
|
@@ -12,6 +12,23 @@ string
|
|
|
12
12
|
| {
|
|
13
13
|
keys: KeyProvider;
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* How to identify a wallet when loading it. Wallet names are only unique within
|
|
17
|
+
* a `(chain, network)` for your company, so a bare name can match several wallets
|
|
18
|
+
* on different chains/networks — pass the `{ name, chain, network }` form (or the
|
|
19
|
+
* numeric id) when you need to be unambiguous.
|
|
20
|
+
*/
|
|
21
|
+
export type WalletSelector =
|
|
22
|
+
/** The numeric wallet id — always unique. */
|
|
23
|
+
number
|
|
24
|
+
/** A wallet name; resolved client-side. Throws if more than one wallet matches. */
|
|
25
|
+
| string
|
|
26
|
+
/** A name scoped to a chain/network — maps 1:1 to a wallet, never ambiguous. */
|
|
27
|
+
| {
|
|
28
|
+
name: string;
|
|
29
|
+
chain: SupportedChain;
|
|
30
|
+
network: SupportedNetwork;
|
|
31
|
+
};
|
|
15
32
|
export interface CreateWalletOptions {
|
|
16
33
|
name: string;
|
|
17
34
|
chain: SupportedChain;
|
|
@@ -48,7 +65,7 @@ export interface ImportWalletOptions {
|
|
|
48
65
|
* ```ts
|
|
49
66
|
* const guveno = new Guveno({ apiKey: process.env.GUVENO_API_KEY });
|
|
50
67
|
* const wallets = await guveno.listWallets(); // metadata only, no password
|
|
51
|
-
* const wallet = await guveno.loadWallet(
|
|
68
|
+
* const wallet = await guveno.loadWallet(wallets[0].id, encryptionPassword);
|
|
52
69
|
* await wallet.withdraw({ addressId, assetId, toAddress, amount });
|
|
53
70
|
* ```
|
|
54
71
|
*
|
|
@@ -64,15 +81,34 @@ export declare class Guveno {
|
|
|
64
81
|
constructor(options?: GuvenoOptions);
|
|
65
82
|
/** List wallets stored on the server. Needs only the API key. */
|
|
66
83
|
listWallets(options?: ListApiWalletOptions): Promise<ApiWalletSummary[]>;
|
|
67
|
-
/**
|
|
68
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Fetch a wallet's metadata by id, name, or `{ name, chain, network }` selector.
|
|
86
|
+
* Needs only the API key. A bare name that matches wallets on more than one
|
|
87
|
+
* chain/network throws — see {@link WalletSelector}.
|
|
88
|
+
*/
|
|
89
|
+
getWallet(selector: WalletSelector): Promise<ApiWalletDetail>;
|
|
69
90
|
/**
|
|
70
91
|
* Load a wallet for signing. Fetches the wallet's encrypted secret from the
|
|
71
92
|
* server and unlocks it with your encryption password (or resolves the key from
|
|
72
93
|
* the supplied provider). The returned {@link Wallet} can withdraw, derive
|
|
73
94
|
* addresses, and reveal its recovery phrase.
|
|
95
|
+
*
|
|
96
|
+
* The wallet can be identified by numeric id, by name, or by a
|
|
97
|
+
* `{ name, chain, network }` selector:
|
|
98
|
+
*
|
|
99
|
+
* ```ts
|
|
100
|
+
* await guveno.loadWallet(10, password); // by id
|
|
101
|
+
* await guveno.loadWallet('treasury', password); // by name (throws if ambiguous)
|
|
102
|
+
* await guveno.loadWallet({ name: 'treasury', chain: 'bitcoin', network: 'mainnet' }, password);
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* Names are only unique within a `(chain, network)`, so a bare name that matches
|
|
106
|
+
* wallets on more than one chain/network throws — pass the scoped selector or the
|
|
107
|
+
* id to disambiguate.
|
|
74
108
|
*/
|
|
75
|
-
loadWallet(
|
|
109
|
+
loadWallet(selector: WalletSelector, key: WalletKeySource): Promise<Wallet>;
|
|
110
|
+
/** Resolve a {@link WalletSelector} to a full wallet detail record. */
|
|
111
|
+
private resolveWallet;
|
|
76
112
|
/** Generate a new wallet, derive its first address, seal the phrase, and register it. */
|
|
77
113
|
createWallet(options: CreateWalletOptions): Promise<CreateWalletResult>;
|
|
78
114
|
/** Import an existing recovery phrase as a new server-side wallet. */
|
package/dist/guveno.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guveno.d.ts","sourceRoot":"","sources":["../src/guveno.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACjH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE7C,4DAA4D;AAC5D,MAAM,MAAM,eAAe;AACzB,kFAAkF;AAChF,MAAM;AACR,6FAA6F;GAC3F;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sFAAsF;IACtF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,yBAAyB,CAAC;IACxC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAUD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,MAAM;IACjB,uHAAuH;IACvH,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAGjC,OAAO,CAAC,UAAU,CAAsB;gBAE5B,OAAO,GAAE,aAAkB;IAIvC,iEAAiE;IAC3D,WAAW,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIlF
|
|
1
|
+
{"version":3,"file":"guveno.d.ts","sourceRoot":"","sources":["../src/guveno.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACjH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE7C,4DAA4D;AAC5D,MAAM,MAAM,eAAe;AACzB,kFAAkF;AAChF,MAAM;AACR,6FAA6F;GAC3F;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,cAAc;AACxB,6CAA6C;AAC3C,MAAM;AACR,mFAAmF;GACjF,MAAM;AACR,gFAAgF;GAC9E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sFAAsF;IACtF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,yBAAyB,CAAC;IACxC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAUD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,MAAM;IACjB,uHAAuH;IACvH,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAGjC,OAAO,CAAC,UAAU,CAAsB;gBAE5B,OAAO,GAAE,aAAkB;IAIvC,iEAAiE;IAC3D,WAAW,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIlF;;;;OAIG;IACG,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAInE;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IASjF,uEAAuE;YACzD,aAAa;IA0C3B,yFAAyF;IACnF,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkB7E,sEAAsE;IAChE,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;YAiBnD,aAAa;YA6Bb,MAAM;CAIrB"}
|
package/dist/guveno.js
CHANGED
|
@@ -18,7 +18,7 @@ function normalizeLabel(label) {
|
|
|
18
18
|
* ```ts
|
|
19
19
|
* const guveno = new Guveno({ apiKey: process.env.GUVENO_API_KEY });
|
|
20
20
|
* const wallets = await guveno.listWallets(); // metadata only, no password
|
|
21
|
-
* const wallet = await guveno.loadWallet(
|
|
21
|
+
* const wallet = await guveno.loadWallet(wallets[0].id, encryptionPassword);
|
|
22
22
|
* await wallet.withdraw({ addressId, assetId, toAddress, amount });
|
|
23
23
|
* ```
|
|
24
24
|
*
|
|
@@ -40,24 +40,77 @@ export class Guveno {
|
|
|
40
40
|
async listWallets(options = {}) {
|
|
41
41
|
return this.client.listWalletRecords(options);
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Fetch a wallet's metadata by id, name, or `{ name, chain, network }` selector.
|
|
45
|
+
* Needs only the API key. A bare name that matches wallets on more than one
|
|
46
|
+
* chain/network throws — see {@link WalletSelector}.
|
|
47
|
+
*/
|
|
48
|
+
async getWallet(selector) {
|
|
49
|
+
return this.resolveWallet(selector);
|
|
46
50
|
}
|
|
47
51
|
/**
|
|
48
52
|
* Load a wallet for signing. Fetches the wallet's encrypted secret from the
|
|
49
53
|
* server and unlocks it with your encryption password (or resolves the key from
|
|
50
54
|
* the supplied provider). The returned {@link Wallet} can withdraw, derive
|
|
51
55
|
* addresses, and reveal its recovery phrase.
|
|
56
|
+
*
|
|
57
|
+
* The wallet can be identified by numeric id, by name, or by a
|
|
58
|
+
* `{ name, chain, network }` selector:
|
|
59
|
+
*
|
|
60
|
+
* ```ts
|
|
61
|
+
* await guveno.loadWallet(10, password); // by id
|
|
62
|
+
* await guveno.loadWallet('treasury', password); // by name (throws if ambiguous)
|
|
63
|
+
* await guveno.loadWallet({ name: 'treasury', chain: 'bitcoin', network: 'mainnet' }, password);
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* Names are only unique within a `(chain, network)`, so a bare name that matches
|
|
67
|
+
* wallets on more than one chain/network throws — pass the scoped selector or the
|
|
68
|
+
* id to disambiguate.
|
|
52
69
|
*/
|
|
53
|
-
async loadWallet(
|
|
54
|
-
const detail = await this.
|
|
70
|
+
async loadWallet(selector, key) {
|
|
71
|
+
const detail = await this.resolveWallet(selector);
|
|
55
72
|
if (typeof key === 'string') {
|
|
56
73
|
const session = await this.unlock(key);
|
|
57
74
|
return new Wallet({ api: this.client, detail, session });
|
|
58
75
|
}
|
|
59
76
|
return new Wallet({ api: this.client, detail, keys: key.keys });
|
|
60
77
|
}
|
|
78
|
+
/** Resolve a {@link WalletSelector} to a full wallet detail record. */
|
|
79
|
+
async resolveWallet(selector) {
|
|
80
|
+
if (typeof selector === 'number') {
|
|
81
|
+
return this.client.getWalletRecord(selector);
|
|
82
|
+
}
|
|
83
|
+
const name = typeof selector === 'string' ? selector : selector.name;
|
|
84
|
+
const chain = typeof selector === 'string' ? undefined : assertSupportedChain(selector.chain);
|
|
85
|
+
const network = typeof selector === 'string' ? undefined : assertSupportedNetwork(selector.network);
|
|
86
|
+
// Names are unique only per (company, chain, network), so the scoped form
|
|
87
|
+
// yields at most one match; a bare name may match several across chains.
|
|
88
|
+
const matches = [];
|
|
89
|
+
let cursor;
|
|
90
|
+
do {
|
|
91
|
+
const page = await this.client.listWalletRecordPage({
|
|
92
|
+
...(cursor ? { cursor } : {}),
|
|
93
|
+
...(chain ? { chain } : {}),
|
|
94
|
+
...(network ? { network } : {})
|
|
95
|
+
});
|
|
96
|
+
for (const summary of page.items) {
|
|
97
|
+
if (summary.name === name)
|
|
98
|
+
matches.push(summary);
|
|
99
|
+
}
|
|
100
|
+
cursor = page.pageInfo.hasNextPage ? page.pageInfo.nextCursor ?? undefined : undefined;
|
|
101
|
+
} while (cursor);
|
|
102
|
+
if (matches.length > 1) {
|
|
103
|
+
const where = matches.map((w) => `${w.chain}/${w.network} (id ${w.id})`).join(', ');
|
|
104
|
+
throw new Error(`Wallet name "${name}" is ambiguous — it matches ${matches.length} wallets: ${where}. ` +
|
|
105
|
+
'Pass { name, chain, network } or the numeric id to disambiguate.');
|
|
106
|
+
}
|
|
107
|
+
const match = matches[0];
|
|
108
|
+
if (!match) {
|
|
109
|
+
const scope = chain && network ? ` on ${chain}/${network}` : '';
|
|
110
|
+
throw new Error(`No wallet named "${name}"${scope} was found.`);
|
|
111
|
+
}
|
|
112
|
+
return this.client.getWalletRecord(match.id);
|
|
113
|
+
}
|
|
61
114
|
/** Generate a new wallet, derive its first address, seal the phrase, and register it. */
|
|
62
115
|
async createWallet(options) {
|
|
63
116
|
const chain = assertSupportedChain(options.chain);
|
package/dist/guveno.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guveno.js","sourceRoot":"","sources":["../src/guveno.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQlD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"guveno.js","sourceRoot":"","sources":["../src/guveno.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import './polkadot/silence-esm-cjs-warning.js';
|
|
1
2
|
export { GuvenoApiClient } from './api/client.js';
|
|
2
3
|
export { WEBHOOK_EVENT_TYPES } from './api/types.js';
|
|
3
4
|
export { FileSystemConfigStore, init, loadConfig, createClientFromConfig } from './config/file-store.js';
|
|
4
5
|
export type { GuvenoConfig } from './config/file-store.js';
|
|
5
6
|
export { Guveno } from './guveno.js';
|
|
6
|
-
export type { GuvenoOptions, WalletKeySource, CreateWalletOptions, CreateWalletResult, ImportWalletOptions } from './guveno.js';
|
|
7
|
+
export type { GuvenoOptions, WalletKeySource, WalletSelector, CreateWalletOptions, CreateWalletResult, ImportWalletOptions } from './guveno.js';
|
|
7
8
|
export { Wallet } from './wallet.js';
|
|
8
9
|
export type { WalletWithdrawInput, WalletDeps } from './wallet.js';
|
|
9
10
|
export type { DeriveAddressOptions, DeriveAddressResult } from './wallet-service.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// Silence @polkadot's false-positive ESM/CJS "multiple versions" warning.
|
|
2
|
+
// Must run before any @polkadot module is evaluated, so keep it first.
|
|
3
|
+
import './polkadot/silence-esm-cjs-warning.js';
|
|
1
4
|
export { GuvenoApiClient } from './api/client.js';
|
|
2
5
|
export { WEBHOOK_EVENT_TYPES } from './api/types.js';
|
|
3
6
|
export { FileSystemConfigStore, init, loadConfig, createClientFromConfig } from './config/file-store.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,IAAI,EACJ,UAAU,EACV,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,OAAO,uCAAuC,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,IAAI,EACJ,UAAU,EACV,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"silence-esm-cjs-warning.d.ts","sourceRoot":"","sources":["../../src/polkadot/silence-esm-cjs-warning.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Silence @polkadot's "multiple versions" console warning.
|
|
3
|
+
*
|
|
4
|
+
* `@substrate/txwrapper-polkadot` is CommonJS-only, so it `require()`s the CJS
|
|
5
|
+
* build of `@polkadot/util` (et al.) while the SDK's own ESM code imports the
|
|
6
|
+
* ESM build. That loads two module formats of the *same* version (e.g. 13.5.9)
|
|
7
|
+
* into one process, which `@polkadot/util`'s `detectPackage` reports as a
|
|
8
|
+
* dedupe warning. It's a false positive here — the wasm/crypto state is
|
|
9
|
+
* identical across the two builds — so we opt out via the library's own flag.
|
|
10
|
+
*
|
|
11
|
+
* `detectPackage` only honors the flag when every loaded entry is the same
|
|
12
|
+
* version, so a genuine version mismatch still warns. We use `??=` so a
|
|
13
|
+
* consumer who set the flag explicitly (e.g. to `'0'`) keeps their choice.
|
|
14
|
+
*
|
|
15
|
+
* This MUST be imported before any `@polkadot/*` module is evaluated, hence it
|
|
16
|
+
* is the first import in `src/index.ts`.
|
|
17
|
+
*/
|
|
18
|
+
process.env.POLKADOTJS_DISABLE_ESM_CJS_WARNING ??= '1';
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=silence-esm-cjs-warning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"silence-esm-cjs-warning.js","sourceRoot":"","sources":["../../src/polkadot/silence-esm-cjs-warning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,GAAG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guveno/wallet-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Add secure crypto custody to your app in minutes — create and manage multi-chain wallets, automate withdrawals, and receive real-time webhooks for Bitcoin, Ethereum, XRP, and Polkadot. Built for exchanges, fintechs, and platforms.",
|
|
5
5
|
"author": "Guveno LLC",
|
|
6
6
|
"license": "MIT",
|