@tatumio/wallet-sdk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/chains.d.ts +38 -0
  4. package/dist/chains.d.ts.map +1 -0
  5. package/dist/chains.js +109 -0
  6. package/dist/chains.js.map +1 -0
  7. package/dist/constants/index.d.ts +3 -0
  8. package/dist/constants/index.d.ts.map +1 -0
  9. package/dist/constants/index.js +3 -0
  10. package/dist/constants/index.js.map +1 -0
  11. package/dist/constants/paths.d.ts +3 -0
  12. package/dist/constants/paths.d.ts.map +1 -0
  13. package/dist/constants/paths.js +3 -0
  14. package/dist/constants/paths.js.map +1 -0
  15. package/dist/constants/urls.d.ts +13 -0
  16. package/dist/constants/urls.d.ts.map +1 -0
  17. package/dist/constants/urls.js +13 -0
  18. package/dist/constants/urls.js.map +1 -0
  19. package/dist/errors.d.ts +9 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/errors.js +15 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/http.d.ts +31 -0
  24. package/dist/http.d.ts.map +1 -0
  25. package/dist/http.js +123 -0
  26. package/dist/http.js.map +1 -0
  27. package/dist/index.d.ts +17 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +9 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/operation.d.ts +8 -0
  32. package/dist/operation.d.ts.map +1 -0
  33. package/dist/operation.js +26 -0
  34. package/dist/operation.js.map +1 -0
  35. package/dist/path.d.ts +3 -0
  36. package/dist/path.d.ts.map +1 -0
  37. package/dist/path.js +10 -0
  38. package/dist/path.js.map +1 -0
  39. package/dist/portal/client-api.d.ts +73 -0
  40. package/dist/portal/client-api.d.ts.map +1 -0
  41. package/dist/portal/client-api.js +63 -0
  42. package/dist/portal/client-api.js.map +1 -0
  43. package/dist/portal/custodian.d.ts +92 -0
  44. package/dist/portal/custodian.d.ts.map +1 -0
  45. package/dist/portal/custodian.js +84 -0
  46. package/dist/portal/custodian.js.map +1 -0
  47. package/dist/portal/enclave-api.d.ts +53 -0
  48. package/dist/portal/enclave-api.d.ts.map +1 -0
  49. package/dist/portal/enclave-api.js +70 -0
  50. package/dist/portal/enclave-api.js.map +1 -0
  51. package/dist/portal/transport.d.ts +13 -0
  52. package/dist/portal/transport.d.ts.map +1 -0
  53. package/dist/portal/transport.js +27 -0
  54. package/dist/portal/transport.js.map +1 -0
  55. package/dist/portal/types/client.d.ts +74 -0
  56. package/dist/portal/types/client.d.ts.map +1 -0
  57. package/dist/portal/types/client.js +2 -0
  58. package/dist/portal/types/client.js.map +1 -0
  59. package/dist/portal/types/custodian.d.ts +39 -0
  60. package/dist/portal/types/custodian.d.ts.map +1 -0
  61. package/dist/portal/types/custodian.js +2 -0
  62. package/dist/portal/types/custodian.js.map +1 -0
  63. package/dist/portal/types/enclave.d.ts +64 -0
  64. package/dist/portal/types/enclave.d.ts.map +1 -0
  65. package/dist/portal/types/enclave.js +2 -0
  66. package/dist/portal/types/enclave.js.map +1 -0
  67. package/dist/portal/types/index.d.ts +5 -0
  68. package/dist/portal/types/index.d.ts.map +1 -0
  69. package/dist/portal/types/index.js +5 -0
  70. package/dist/portal/types/index.js.map +1 -0
  71. package/dist/portal/types/shared.d.ts +163 -0
  72. package/dist/portal/types/shared.d.ts.map +1 -0
  73. package/dist/portal/types/shared.js +2 -0
  74. package/dist/portal/types/shared.js.map +1 -0
  75. package/dist/portal/wallets-client.d.ts +105 -0
  76. package/dist/portal/wallets-client.d.ts.map +1 -0
  77. package/dist/portal/wallets-client.js +126 -0
  78. package/dist/portal/wallets-client.js.map +1 -0
  79. package/dist/sdk.d.ts +35 -0
  80. package/dist/sdk.d.ts.map +1 -0
  81. package/dist/sdk.js +41 -0
  82. package/dist/sdk.js.map +1 -0
  83. package/dist/tatum/api-client.d.ts +12 -0
  84. package/dist/tatum/api-client.d.ts.map +1 -0
  85. package/dist/tatum/api-client.js +35 -0
  86. package/dist/tatum/api-client.js.map +1 -0
  87. package/dist/tatum/provider.d.ts +17 -0
  88. package/dist/tatum/provider.d.ts.map +1 -0
  89. package/dist/tatum/provider.js +41 -0
  90. package/dist/tatum/provider.js.map +1 -0
  91. package/dist/types.d.ts +33 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +2 -0
  94. package/dist/types.js.map +1 -0
  95. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallets-client.js","sourceRoot":"","sources":["../../src/portal/wallets-client.ts"],"names":[],"mappings":"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"}
package/dist/sdk.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ import { CustodianApi } from './portal/custodian.js';
2
+ import { WalletsClient } from './portal/wallets-client.js';
3
+ import { WalletsApiClient } from './tatum/api-client.js';
4
+ import type { InitClientConfig } from './portal/wallets-client.js';
5
+ import type { WalletsSDKConfig } from './types.js';
6
+ /**
7
+ * Entry point for the Tatum-hosted Portal wallet SDK.
8
+ *
9
+ * Construct once with your Tatum API key, then use {@link custodian} for
10
+ * custodian-scoped operations (client management, sessions, eject) and
11
+ * {@link initClient} to act on behalf of a single Portal client (wallet
12
+ * generation, signing, sending, backup/recovery).
13
+ *
14
+ * @example
15
+ * const wallets = new TatumWalletsSdk({ apiKey: process.env.TATUM_API_KEY! });
16
+ * const portalClient = await wallets.custodian.createClient({ body: { isAccountAbstracted: false } });
17
+ * const client = wallets.initClient({ token: portalClient.clientApiKey! });
18
+ */
19
+ export declare class TatumWalletsSdk {
20
+ private readonly config;
21
+ /** Low-level Tatum API client (`x-api-key` auth). Escape hatch for raw, not-yet-modeled Tatum calls. */
22
+ readonly api: WalletsApiClient;
23
+ /** Custodian-scoped Portal operations, authenticated with your Tatum-resolved custodian token. */
24
+ readonly custodian: CustodianApi;
25
+ private readonly portalProvider;
26
+ constructor(config: WalletsSDKConfig);
27
+ /**
28
+ * Create a client-scoped API for a single Portal client.
29
+ *
30
+ * @param config - Holds the client's Portal API key or Client Session Token (CST).
31
+ * @returns A {@link WalletsClient} bound to that token.
32
+ */
33
+ initClient(config: InitClientConfig): WalletsClient;
34
+ }
35
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IAOd,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,wGAAwG;IACxG,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAC/B,kGAAkG;IAClG,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;gBAExB,MAAM,EAAE,gBAAgB;IAMrD;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa;CAGpD"}
package/dist/sdk.js ADDED
@@ -0,0 +1,41 @@
1
+ import { CustodianApi } from './portal/custodian.js';
2
+ import { WalletsClient } from './portal/wallets-client.js';
3
+ import { WalletsApiClient } from './tatum/api-client.js';
4
+ import { PortalTatumProvider } from './tatum/provider.js';
5
+ /**
6
+ * Entry point for the Tatum-hosted Portal wallet SDK.
7
+ *
8
+ * Construct once with your Tatum API key, then use {@link custodian} for
9
+ * custodian-scoped operations (client management, sessions, eject) and
10
+ * {@link initClient} to act on behalf of a single Portal client (wallet
11
+ * generation, signing, sending, backup/recovery).
12
+ *
13
+ * @example
14
+ * const wallets = new TatumWalletsSdk({ apiKey: process.env.TATUM_API_KEY! });
15
+ * const portalClient = await wallets.custodian.createClient({ body: { isAccountAbstracted: false } });
16
+ * const client = wallets.initClient({ token: portalClient.clientApiKey! });
17
+ */
18
+ export class TatumWalletsSdk {
19
+ config;
20
+ /** Low-level Tatum API client (`x-api-key` auth). Escape hatch for raw, not-yet-modeled Tatum calls. */
21
+ api;
22
+ /** Custodian-scoped Portal operations, authenticated with your Tatum-resolved custodian token. */
23
+ custodian;
24
+ portalProvider;
25
+ constructor(config) {
26
+ this.config = config;
27
+ this.api = new WalletsApiClient(config);
28
+ this.portalProvider = new PortalTatumProvider(this.api, config);
29
+ this.custodian = new CustodianApi(this.portalProvider, config);
30
+ }
31
+ /**
32
+ * Create a client-scoped API for a single Portal client.
33
+ *
34
+ * @param config - Holds the client's Portal API key or Client Session Token (CST).
35
+ * @returns A {@link WalletsClient} bound to that token.
36
+ */
37
+ initClient(config) {
38
+ return new WalletsClient(config, this.portalProvider, this.config);
39
+ }
40
+ }
41
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI1D;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,eAAe;IAOG;IAN7B,wGAAwG;IAC/F,GAAG,CAAmB;IAC/B,kGAAkG;IACzF,SAAS,CAAe;IAChB,cAAc,CAAsB;IAErD,YAA6B,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;QACnD,IAAI,CAAC,GAAG,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,MAAwB;QACjC,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { HttpClient } from '../http.js';
2
+ import type { ApiRequestOptions, WalletsSDKConfig } from '../types.js';
3
+ export declare class WalletsApiClient extends HttpClient {
4
+ constructor(config: WalletsSDKConfig);
5
+ get<TResponse = unknown>(path: string, options?: Omit<ApiRequestOptions, 'method' | 'path' | 'body'>): Promise<TResponse>;
6
+ post<TResponse = unknown>(path: string, body?: unknown, options?: Omit<ApiRequestOptions, 'method' | 'path' | 'body'>): Promise<TResponse>;
7
+ put<TResponse = unknown>(path: string, body?: unknown, options?: Omit<ApiRequestOptions, 'method' | 'path' | 'body'>): Promise<TResponse>;
8
+ patch<TResponse = unknown>(path: string, body?: unknown, options?: Omit<ApiRequestOptions, 'method' | 'path' | 'body'>): Promise<TResponse>;
9
+ delete<TResponse = unknown>(path: string, options?: Omit<ApiRequestOptions, 'method' | 'path' | 'body'>): Promise<TResponse>;
10
+ }
11
+ export type { ApiRequestOptions, HttpMethod, QueryParams, WalletsSDKConfig } from '../types.js';
12
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/tatum/api-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvE,qBAAa,gBAAiB,SAAQ,UAAU;gBAClC,MAAM,EAAE,gBAAgB;IAkBpC,GAAG,CAAC,SAAS,GAAG,OAAO,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAM,GAChE,OAAO,CAAC,SAAS,CAAC;IAIrB,IAAI,CAAC,SAAS,GAAG,OAAO,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAM,GAChE,OAAO,CAAC,SAAS,CAAC;IAIrB,GAAG,CAAC,SAAS,GAAG,OAAO,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAM,GAChE,OAAO,CAAC,SAAS,CAAC;IAIrB,KAAK,CAAC,SAAS,GAAG,OAAO,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAM,GAChE,OAAO,CAAC,SAAS,CAAC;IAIrB,MAAM,CAAC,SAAS,GAAG,OAAO,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAM,GAChE,OAAO,CAAC,SAAS,CAAC;CAGtB;AAED,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { TATUM_API_BASE_URL } from '../constants/index.js';
2
+ import { HttpClient } from '../http.js';
3
+ export class WalletsApiClient extends HttpClient {
4
+ constructor(config) {
5
+ if (!config.apiKey) {
6
+ throw new Error('apiKey is required');
7
+ }
8
+ const apiKey = config.apiKey;
9
+ super({
10
+ baseUrl: config.baseUrl ?? TATUM_API_BASE_URL,
11
+ headers: config.headers,
12
+ fetch: config.fetch,
13
+ errorLabel: 'Wallets API',
14
+ applyAuth: (headers) => {
15
+ headers['x-api-key'] = apiKey;
16
+ }
17
+ });
18
+ }
19
+ get(path, options = {}) {
20
+ return this.request({ ...options, method: 'GET', path });
21
+ }
22
+ post(path, body, options = {}) {
23
+ return this.request({ ...options, method: 'POST', path, body });
24
+ }
25
+ put(path, body, options = {}) {
26
+ return this.request({ ...options, method: 'PUT', path, body });
27
+ }
28
+ patch(path, body, options = {}) {
29
+ return this.request({ ...options, method: 'PATCH', path, body });
30
+ }
31
+ delete(path, options = {}) {
32
+ return this.request({ ...options, method: 'DELETE', path });
33
+ }
34
+ }
35
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/tatum/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,KAAK,CAAC;YACJ,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,kBAAkB;YAC7C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,aAAa;YACzB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACrB,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;YAChC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CACD,IAAY,EACZ,UAA+D,EAAE;QAEjE,OAAO,IAAI,CAAC,OAAO,CAAY,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CACF,IAAY,EACZ,IAAc,EACd,UAA+D,EAAE;QAEjE,OAAO,IAAI,CAAC,OAAO,CAAY,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,GAAG,CACD,IAAY,EACZ,IAAc,EACd,UAA+D,EAAE;QAEjE,OAAO,IAAI,CAAC,OAAO,CAAY,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CACH,IAAY,EACZ,IAAc,EACd,UAA+D,EAAE;QAEjE,OAAO,IAAI,CAAC,OAAO,CAAY,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CACJ,IAAY,EACZ,UAA+D,EAAE;QAEjE,OAAO,IAAI,CAAC,OAAO,CAAY,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { WalletsApiClient } from './api-client.js';
2
+ import type { WalletsSDKConfig } from '../types.js';
3
+ export declare class PortalTatumProvider {
4
+ private readonly tatumClient;
5
+ private readonly config;
6
+ private custodianTokenPromise;
7
+ constructor(tatumClient: WalletsApiClient, config: WalletsSDKConfig);
8
+ getCustodianToken(): Promise<string>;
9
+ private fetchCustodianToken;
10
+ /**
11
+ * Resolve the Tatum RPC gateway URL for a supported chain, in the form
12
+ * `https://<network>.gateway.tatum.io/<apiKey>`. `chain` is the Portal
13
+ * CAIP-2 id (the {@link WalletChain} value). Throws for unsupported chains.
14
+ */
15
+ getRpcUrl(chain: string): Promise<string>;
16
+ }
17
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/tatum/provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpD,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,qBAAqB,CAA8B;gBAGxC,WAAW,EAAE,gBAAgB,EAC7B,MAAM,EAAE,gBAAgB;IAG3C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;YAWtB,mBAAmB;IAajC;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAShD"}
@@ -0,0 +1,41 @@
1
+ import { WALLET_CHAINS } from '../chains.js';
2
+ import { CUSTODIAN_API_KEY_PATH, TATUM_RPC_GATEWAY_DOMAIN } from '../constants/index.js';
3
+ export class PortalTatumProvider {
4
+ tatumClient;
5
+ config;
6
+ custodianTokenPromise;
7
+ constructor(tatumClient, config) {
8
+ this.tatumClient = tatumClient;
9
+ this.config = config;
10
+ }
11
+ getCustodianToken() {
12
+ // The custodian key is stable for the SDK's lifetime, so resolve it once.
13
+ // Reset on failure so a transient error doesn't permanently poison the SDK.
14
+ this.custodianTokenPromise ??= this.fetchCustodianToken().catch((error) => {
15
+ this.custodianTokenPromise = undefined;
16
+ throw error;
17
+ });
18
+ return this.custodianTokenPromise;
19
+ }
20
+ async fetchCustodianToken() {
21
+ const response = await this.tatumClient.get(CUSTODIAN_API_KEY_PATH);
22
+ const token = response?.portalCustodianApiKey;
23
+ if (!token) {
24
+ throw new Error(`Tatum API key is not authorized for Portal: ${CUSTODIAN_API_KEY_PATH} returned no portalCustodianApiKey`);
25
+ }
26
+ return token;
27
+ }
28
+ /**
29
+ * Resolve the Tatum RPC gateway URL for a supported chain, in the form
30
+ * `https://<network>.gateway.tatum.io/<apiKey>`. `chain` is the Portal
31
+ * CAIP-2 id (the {@link WalletChain} value). Throws for unsupported chains.
32
+ */
33
+ async getRpcUrl(chain) {
34
+ const network = WALLET_CHAINS[chain]?.tatumRpcNetwork;
35
+ if (!network) {
36
+ throw new Error(`No Tatum RPC gateway configured for chain "${chain}"`);
37
+ }
38
+ return `https://${network}.${TATUM_RPC_GATEWAY_DOMAIN}/${this.config.apiKey}`;
39
+ }
40
+ }
41
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/tatum/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAUzF,MAAM,OAAO,mBAAmB;IAIX;IACA;IAJX,qBAAqB,CAA8B;IAE3D,YACmB,WAA6B,EAC7B,MAAwB;QADxB,gBAAW,GAAX,WAAW,CAAkB;QAC7B,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,iBAAiB;QACf,0EAA0E;QAC1E,4EAA4E;QAC5E,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACjF,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;YACvC,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAA0B,sBAAsB,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,QAAQ,EAAE,qBAAqB,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,+CAA+C,sBAAsB,oCAAoC,CAC1G,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,KAAoB,CAAC,EAAE,eAAe,CAAC;QAErE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,WAAW,OAAO,IAAI,wBAAwB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChF,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ import type { PathParamValue } from './path.js';
2
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3
+ export type QueryValue = string | number | boolean | null | undefined;
4
+ export type QueryParams = Record<string, QueryValue | readonly QueryValue[]>;
5
+ export interface WalletsSDKConfig {
6
+ baseUrl?: string;
7
+ apiKey: string;
8
+ headers?: Record<string, string>;
9
+ fetch?: typeof fetch;
10
+ }
11
+ export interface ApiRequestOptions {
12
+ method?: HttpMethod;
13
+ path: string;
14
+ query?: QueryParams;
15
+ body?: unknown;
16
+ headers?: Record<string, string>;
17
+ signal?: AbortSignal;
18
+ }
19
+ /**
20
+ * Shared per-call options for every generated API wrapper. `method` and `path`
21
+ * are supplied by the operation map, not the caller; `path` here is the map of
22
+ * path parameters used to fill the operation's `{param}` placeholders.
23
+ */
24
+ export interface RequestOptions extends Omit<ApiRequestOptions, 'method' | 'path'> {
25
+ path?: Record<string, PathParamValue | null | undefined>;
26
+ }
27
+ export interface ApiErrorOptions {
28
+ status: number;
29
+ statusText?: string | undefined;
30
+ body?: unknown;
31
+ headers?: Headers;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@tatumio/wallet-sdk",
3
+ "version": "0.0.1",
4
+ "description": "TypeScript SDK for Tatum-hosted Portal MPC wallets — wallet generation, signing, sending, backup/recovery, and custodian/client management.",
5
+ "license": "MIT",
6
+ "author": "Tatum",
7
+ "homepage": "https://tatum.io",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/tatumio/wallet-sdk.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/tatumio/wallet-sdk/issues"
14
+ },
15
+ "type": "module",
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ }
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "README.md",
27
+ "LICENSE"
28
+ ],
29
+ "sideEffects": false,
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc -p tsconfig.build.json",
35
+ "clean": "rm -rf dist coverage",
36
+ "prepack": "npm run build",
37
+ "prepublishOnly": "npm test && npm run typecheck && npm run build",
38
+ "test": "vitest run",
39
+ "test:watch": "vitest",
40
+ "typecheck": "tsc --noEmit"
41
+ },
42
+ "keywords": [
43
+ "tatum",
44
+ "portal",
45
+ "mpc",
46
+ "wallet",
47
+ "wallets",
48
+ "web3",
49
+ "blockchain",
50
+ "sdk",
51
+ "typescript",
52
+ "api-client"
53
+ ],
54
+ "engines": {
55
+ "node": ">=18"
56
+ },
57
+ "devDependencies": {
58
+ "@types/node": "^22.15.29",
59
+ "typescript": "^5.8.3",
60
+ "vitest": "^3.1.4"
61
+ }
62
+ }