@turnkey/core 1.0.0-beta.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.
Files changed (149) hide show
  1. package/LICENSE +201 -0
  2. package/README.MD +5 -0
  3. package/dist/__clients__/core.d.ts +1010 -0
  4. package/dist/__clients__/core.d.ts.map +1 -0
  5. package/dist/__clients__/core.js +2358 -0
  6. package/dist/__clients__/core.js.map +1 -0
  7. package/dist/__clients__/core.mjs +2356 -0
  8. package/dist/__clients__/core.mjs.map +1 -0
  9. package/dist/__generated__/sdk-client-base.d.ts +211 -0
  10. package/dist/__generated__/sdk-client-base.d.ts.map +1 -0
  11. package/dist/__generated__/sdk-client-base.js +3219 -0
  12. package/dist/__generated__/sdk-client-base.js.map +1 -0
  13. package/dist/__generated__/sdk-client-base.mjs +3217 -0
  14. package/dist/__generated__/sdk-client-base.mjs.map +1 -0
  15. package/dist/__generated__/version.d.ts +2 -0
  16. package/dist/__generated__/version.d.ts.map +1 -0
  17. package/dist/__generated__/version.js +6 -0
  18. package/dist/__generated__/version.js.map +1 -0
  19. package/dist/__generated__/version.mjs +4 -0
  20. package/dist/__generated__/version.mjs.map +1 -0
  21. package/dist/__inputs__/public_api.types.d.ts +5170 -0
  22. package/dist/__inputs__/public_api.types.d.ts.map +1 -0
  23. package/dist/__polyfills__/window.d.ts +15 -0
  24. package/dist/__polyfills__/window.d.ts.map +1 -0
  25. package/dist/__polyfills__/window.js +30 -0
  26. package/dist/__polyfills__/window.js.map +1 -0
  27. package/dist/__polyfills__/window.mjs +28 -0
  28. package/dist/__polyfills__/window.mjs.map +1 -0
  29. package/dist/__stampers__/api/base.d.ts +20 -0
  30. package/dist/__stampers__/api/base.d.ts.map +1 -0
  31. package/dist/__stampers__/api/base.js +67 -0
  32. package/dist/__stampers__/api/base.js.map +1 -0
  33. package/dist/__stampers__/api/base.mjs +65 -0
  34. package/dist/__stampers__/api/base.mjs.map +1 -0
  35. package/dist/__stampers__/api/mobile/stamper.d.ts +13 -0
  36. package/dist/__stampers__/api/mobile/stamper.d.ts.map +1 -0
  37. package/dist/__stampers__/api/mobile/stamper.js +69 -0
  38. package/dist/__stampers__/api/mobile/stamper.js.map +1 -0
  39. package/dist/__stampers__/api/mobile/stamper.mjs +67 -0
  40. package/dist/__stampers__/api/mobile/stamper.mjs.map +1 -0
  41. package/dist/__stampers__/api/web/stamper.d.ts +14 -0
  42. package/dist/__stampers__/api/web/stamper.d.ts.map +1 -0
  43. package/dist/__stampers__/api/web/stamper.js +212 -0
  44. package/dist/__stampers__/api/web/stamper.js.map +1 -0
  45. package/dist/__stampers__/api/web/stamper.mjs +210 -0
  46. package/dist/__stampers__/api/web/stamper.mjs.map +1 -0
  47. package/dist/__stampers__/passkey/base.d.ts +18 -0
  48. package/dist/__stampers__/passkey/base.d.ts.map +1 -0
  49. package/dist/__stampers__/passkey/base.js +138 -0
  50. package/dist/__stampers__/passkey/base.js.map +1 -0
  51. package/dist/__stampers__/passkey/base.mjs +134 -0
  52. package/dist/__stampers__/passkey/base.mjs.map +1 -0
  53. package/dist/__storage__/base.d.ts +3 -0
  54. package/dist/__storage__/base.d.ts.map +1 -0
  55. package/dist/__storage__/base.js +27 -0
  56. package/dist/__storage__/base.js.map +1 -0
  57. package/dist/__storage__/base.mjs +25 -0
  58. package/dist/__storage__/base.mjs.map +1 -0
  59. package/dist/__storage__/mobile/storage.d.ts +18 -0
  60. package/dist/__storage__/mobile/storage.d.ts.map +1 -0
  61. package/dist/__storage__/mobile/storage.js +74 -0
  62. package/dist/__storage__/mobile/storage.js.map +1 -0
  63. package/dist/__storage__/mobile/storage.mjs +72 -0
  64. package/dist/__storage__/mobile/storage.mjs.map +1 -0
  65. package/dist/__storage__/web/storage.d.ts +19 -0
  66. package/dist/__storage__/web/storage.d.ts.map +1 -0
  67. package/dist/__storage__/web/storage.js +79 -0
  68. package/dist/__storage__/web/storage.js.map +1 -0
  69. package/dist/__storage__/web/storage.mjs +77 -0
  70. package/dist/__storage__/web/storage.mjs.map +1 -0
  71. package/dist/__types__/base.d.ts +407 -0
  72. package/dist/__types__/base.d.ts.map +1 -0
  73. package/dist/__types__/base.js +88 -0
  74. package/dist/__types__/base.js.map +1 -0
  75. package/dist/__types__/base.mjs +84 -0
  76. package/dist/__types__/base.mjs.map +1 -0
  77. package/dist/__wallet__/base.d.ts +3 -0
  78. package/dist/__wallet__/base.d.ts.map +1 -0
  79. package/dist/__wallet__/base.js +24 -0
  80. package/dist/__wallet__/base.js.map +1 -0
  81. package/dist/__wallet__/base.mjs +22 -0
  82. package/dist/__wallet__/base.mjs.map +1 -0
  83. package/dist/__wallet__/connector.d.ts +33 -0
  84. package/dist/__wallet__/connector.d.ts.map +1 -0
  85. package/dist/__wallet__/connector.js +63 -0
  86. package/dist/__wallet__/connector.js.map +1 -0
  87. package/dist/__wallet__/connector.mjs +61 -0
  88. package/dist/__wallet__/connector.mjs.map +1 -0
  89. package/dist/__wallet__/mobile/manager.d.ts +35 -0
  90. package/dist/__wallet__/mobile/manager.d.ts.map +1 -0
  91. package/dist/__wallet__/mobile/manager.js +95 -0
  92. package/dist/__wallet__/mobile/manager.js.map +1 -0
  93. package/dist/__wallet__/mobile/manager.mjs +93 -0
  94. package/dist/__wallet__/mobile/manager.mjs.map +1 -0
  95. package/dist/__wallet__/stamper.d.ts +19 -0
  96. package/dist/__wallet__/stamper.d.ts.map +1 -0
  97. package/dist/__wallet__/stamper.js +116 -0
  98. package/dist/__wallet__/stamper.js.map +1 -0
  99. package/dist/__wallet__/stamper.mjs +113 -0
  100. package/dist/__wallet__/stamper.mjs.map +1 -0
  101. package/dist/__wallet__/wallet-connect/base.d.ts +83 -0
  102. package/dist/__wallet__/wallet-connect/base.d.ts.map +1 -0
  103. package/dist/__wallet__/wallet-connect/base.js +362 -0
  104. package/dist/__wallet__/wallet-connect/base.js.map +1 -0
  105. package/dist/__wallet__/wallet-connect/base.mjs +360 -0
  106. package/dist/__wallet__/wallet-connect/base.mjs.map +1 -0
  107. package/dist/__wallet__/wallet-connect/client.d.ts +78 -0
  108. package/dist/__wallet__/wallet-connect/client.d.ts.map +1 -0
  109. package/dist/__wallet__/wallet-connect/client.js +139 -0
  110. package/dist/__wallet__/wallet-connect/client.js.map +1 -0
  111. package/dist/__wallet__/wallet-connect/client.mjs +137 -0
  112. package/dist/__wallet__/wallet-connect/client.mjs.map +1 -0
  113. package/dist/__wallet__/web/manager.d.ts +41 -0
  114. package/dist/__wallet__/web/manager.d.ts.map +1 -0
  115. package/dist/__wallet__/web/manager.js +115 -0
  116. package/dist/__wallet__/web/manager.js.map +1 -0
  117. package/dist/__wallet__/web/manager.mjs +113 -0
  118. package/dist/__wallet__/web/manager.mjs.map +1 -0
  119. package/dist/__wallet__/web/native/ethereum.d.ts +67 -0
  120. package/dist/__wallet__/web/native/ethereum.d.ts.map +1 -0
  121. package/dist/__wallet__/web/native/ethereum.js +248 -0
  122. package/dist/__wallet__/web/native/ethereum.js.map +1 -0
  123. package/dist/__wallet__/web/native/ethereum.mjs +245 -0
  124. package/dist/__wallet__/web/native/ethereum.mjs.map +1 -0
  125. package/dist/__wallet__/web/native/solana.d.ts +19 -0
  126. package/dist/__wallet__/web/native/solana.d.ts.map +1 -0
  127. package/dist/__wallet__/web/native/solana.js +149 -0
  128. package/dist/__wallet__/web/native/solana.js.map +1 -0
  129. package/dist/__wallet__/web/native/solana.mjs +146 -0
  130. package/dist/__wallet__/web/native/solana.mjs.map +1 -0
  131. package/dist/index.d.ts +9 -0
  132. package/dist/index.d.ts.map +1 -0
  133. package/dist/index.js +78 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/index.mjs +8 -0
  136. package/dist/index.mjs.map +1 -0
  137. package/dist/turnkey-helpers.d.ts +68 -0
  138. package/dist/turnkey-helpers.d.ts.map +1 -0
  139. package/dist/turnkey-helpers.js +466 -0
  140. package/dist/turnkey-helpers.js.map +1 -0
  141. package/dist/turnkey-helpers.mjs +399 -0
  142. package/dist/turnkey-helpers.mjs.map +1 -0
  143. package/dist/utils.d.ts +54 -0
  144. package/dist/utils.d.ts.map +1 -0
  145. package/dist/utils.js +596 -0
  146. package/dist/utils.js.map +1 -0
  147. package/dist/utils.mjs +574 -0
  148. package/dist/utils.mjs.map +1 -0
  149. package/package.json +67 -0
@@ -0,0 +1,93 @@
1
+ import { CrossPlatformWalletStamper } from '../stamper.mjs';
2
+ import { CrossPlatformWalletConnector } from '../connector.mjs';
3
+ import { WalletInterfaceType, Chain } from '../../__types__/base.mjs';
4
+ import { WalletConnectClient } from '../wallet-connect/client.mjs';
5
+ import { WalletConnectWallet } from '../wallet-connect/base.mjs';
6
+
7
+ class MobileWalletManager {
8
+ /**
9
+ * Constructs a MobileWalletManager that only uses WalletConnect.
10
+ *
11
+ * @param cfg - Wallet manager configuration (uses only WalletConnect fields).
12
+ */
13
+ constructor(cfg) {
14
+ // queue of async initialization functions
15
+ this.initializers = [];
16
+ // mapping of wallet interface types to their wallet instances
17
+ this.wallets = {};
18
+ // maps a blockchain chain to its corresponding wallet interface types
19
+ this.chainToInterfaces = {};
20
+ /**
21
+ * Registers a wallet interface as supporting a specific blockchain chain.
22
+ */
23
+ this.addChainInterface = (chain, iface) => {
24
+ if (!this.chainToInterfaces[chain])
25
+ this.chainToInterfaces[chain] = [];
26
+ this.chainToInterfaces[chain].push(iface);
27
+ };
28
+ const ethereumNamespaces = cfg.chains.ethereum?.walletConnectNamespaces ?? [];
29
+ const solanaNamespaces = cfg.chains.solana?.walletConnectNamespaces ?? [];
30
+ const enableWalletConnectEvm = ethereumNamespaces.length > 0;
31
+ const enableWalletConnectSol = solanaNamespaces.length > 0;
32
+ const enableWalletConnect = enableWalletConnectEvm || enableWalletConnectSol;
33
+ if (cfg.walletConnect && enableWalletConnect) {
34
+ this.wcClient = new WalletConnectClient();
35
+ const wcUnified = new WalletConnectWallet(this.wcClient);
36
+ this.wallets[WalletInterfaceType.WalletConnect] = wcUnified;
37
+ // add async init step to the initializer queue
38
+ this.initializers.push(() => wcUnified.init({ ethereumNamespaces, solanaNamespaces }));
39
+ // register WalletConnect as a wallet interface for each enabled chain
40
+ if (enableWalletConnectEvm) {
41
+ this.addChainInterface(Chain.Ethereum, WalletInterfaceType.WalletConnect);
42
+ }
43
+ if (enableWalletConnectSol) {
44
+ this.addChainInterface(Chain.Solana, WalletInterfaceType.WalletConnect);
45
+ }
46
+ }
47
+ if (cfg.features?.auth) {
48
+ this.stamper = new CrossPlatformWalletStamper(this.wallets);
49
+ }
50
+ if (cfg.features?.connecting) {
51
+ this.connector = new CrossPlatformWalletConnector(this.wallets);
52
+ }
53
+ }
54
+ /**
55
+ * Initializes the wallet manager and WalletConnect client.
56
+ *
57
+ * @param cfg - Wallet manager configuration.
58
+ */
59
+ async init(cfg) {
60
+ if (this.wcClient) {
61
+ await this.wcClient.init(cfg.walletConnect);
62
+ }
63
+ await Promise.all(this.initializers.map((fn) => fn()));
64
+ await this.stamper?.init();
65
+ }
66
+ /**
67
+ * Retrieves available wallet providers, optionally filtered by chain.
68
+ *
69
+ * @param chain - Optional chain to filter providers by.
70
+ * @throws If no wallet interface is registered for the given chain.
71
+ */
72
+ async getProviders(chain) {
73
+ if (chain) {
74
+ const ifaceTypes = this.chainToInterfaces[chain];
75
+ if (!ifaceTypes || ifaceTypes.length === 0) {
76
+ throw new Error(`No wallet supports chain: ${chain}`);
77
+ }
78
+ const walletsToQuery = ifaceTypes
79
+ .map((iface) => this.wallets[iface])
80
+ .filter(Boolean);
81
+ const providersArrays = await Promise.all(walletsToQuery.map((wallet) => wallet.getProviders()));
82
+ // we still need to filter by chain because WalletConnect can return providers for multiple chains
83
+ return providersArrays
84
+ .flat()
85
+ .filter((p) => p.chainInfo.namespace === chain);
86
+ }
87
+ const providersArrays = await Promise.all(Object.values(this.wallets).map((wallet) => wallet.getProviders()));
88
+ return providersArrays.flat();
89
+ }
90
+ }
91
+
92
+ export { MobileWalletManager };
93
+ //# sourceMappingURL=manager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.mjs","sources":["../../../src/__wallet__/mobile/manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type WalletInterface, type TStamp, type TStamper, type WalletProvider, WalletInterfaceType } from "@types";
2
+ export declare class CrossPlatformWalletStamper implements TStamper {
3
+ private readonly ctx;
4
+ private activeInterfaceType?;
5
+ constructor(wallets: Partial<Record<WalletInterfaceType, WalletInterface>>);
6
+ init(): Promise<void>;
7
+ stamp(payload: string, interfaceType?: WalletInterfaceType, provider?: WalletProvider): Promise<TStamp>;
8
+ getPublicKey(interfaceType: WalletInterfaceType | undefined, provider: WalletProvider): Promise<string>;
9
+ setProvider(interfaceType: WalletInterfaceType, provider: WalletProvider): void;
10
+ getWalletInterface(interfaceType?: WalletInterfaceType): WalletInterface;
11
+ private defaultInterface;
12
+ private getCtx;
13
+ }
14
+ export declare class WalletStamper {
15
+ private readonly wallet;
16
+ constructor(wallet: WalletInterface);
17
+ stamp(payload: string, provider: WalletProvider): Promise<TStamp>;
18
+ }
19
+ //# sourceMappingURL=stamper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stamper.d.ts","sourceRoot":"","sources":["../../src/__wallet__/stamper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,mBAAmB,EACpB,MAAM,QAAQ,CAAC;AAsBhB,qBAAa,0BAA2B,YAAW,QAAQ;IACzD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,mBAAmB,CAAC,CAAsB;gBAEtC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;IAUpE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,KAAK,CACT,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,mBAA6C,EAC5D,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC;IAaZ,YAAY,CAChB,aAAa,iCAA+C,EAC5D,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;IAIlB,WAAW,CACT,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,cAAc,GACvB,IAAI;IAKP,kBAAkB,CAChB,aAAa,GAAE,mBAA6C,GAC3D,eAAe;IAIlB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,MAAM;CASf;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAE9C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAqDxE"}
@@ -0,0 +1,116 @@
1
+ 'use strict';
2
+
3
+ var base = require('../__types__/base.js');
4
+ var encoding = require('@turnkey/encoding');
5
+ var utils = require('../utils.js');
6
+
7
+ const SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191 = "SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191";
8
+ const SIGNATURE_SCHEME_TK_API_ED25519 = "SIGNATURE_SCHEME_TK_API_ED25519";
9
+ const STAMP_HEADER_NAME = "X-Stamp";
10
+ class CrossPlatformWalletStamper {
11
+ constructor(wallets) {
12
+ this.ctx = {};
13
+ for (const [interfaceType, wallet] of Object.entries(wallets)) {
14
+ const typedInterface = interfaceType;
15
+ this.ctx[typedInterface] = {
16
+ wallet,
17
+ stamper: new WalletStamper(wallet),
18
+ };
19
+ }
20
+ }
21
+ async init() {
22
+ if (!Object.keys(this.ctx).length) {
23
+ throw new Error("No interfaces initialized in WalletStamper");
24
+ }
25
+ }
26
+ async stamp(payload, interfaceType = this.defaultInterface(), provider) {
27
+ const ctx = this.getCtx(interfaceType);
28
+ const selectedProvider = provider ?? ctx.provider;
29
+ if (!selectedProvider) {
30
+ throw new Error(`Could not find a provider for interface '${interfaceType}'.`);
31
+ }
32
+ return ctx.stamper.stamp(payload, selectedProvider);
33
+ }
34
+ async getPublicKey(interfaceType = this.defaultInterface(), provider) {
35
+ return this.getCtx(interfaceType).wallet.getPublicKey(provider);
36
+ }
37
+ setProvider(interfaceType, provider) {
38
+ this.getCtx(interfaceType).provider = provider;
39
+ this.activeInterfaceType = interfaceType;
40
+ }
41
+ getWalletInterface(interfaceType = this.defaultInterface()) {
42
+ return this.getCtx(interfaceType).wallet;
43
+ }
44
+ defaultInterface() {
45
+ if (this.activeInterfaceType) {
46
+ return this.activeInterfaceType;
47
+ }
48
+ const initializedInterfaces = Object.keys(this.ctx);
49
+ if (initializedInterfaces.includes(base.WalletInterfaceType.Ethereum)) {
50
+ return base.WalletInterfaceType.Ethereum;
51
+ }
52
+ if (initializedInterfaces.includes(base.WalletInterfaceType.Solana)) {
53
+ return base.WalletInterfaceType.Solana;
54
+ }
55
+ if (initializedInterfaces.includes(base.WalletInterfaceType.WalletConnect)) {
56
+ return base.WalletInterfaceType.WalletConnect;
57
+ }
58
+ throw new Error("No interfaces initialized");
59
+ }
60
+ getCtx(interfaceType) {
61
+ const ctx = this.ctx[interfaceType];
62
+ if (!ctx) {
63
+ throw new Error(`Interface '${interfaceType}' not initialised`);
64
+ }
65
+ return ctx;
66
+ }
67
+ }
68
+ class WalletStamper {
69
+ constructor(wallet) {
70
+ this.wallet = wallet;
71
+ }
72
+ async stamp(payload, provider) {
73
+ let signature;
74
+ let publicKey;
75
+ try {
76
+ signature = await this.wallet.sign(payload, provider, base.SignIntent.SignMessage);
77
+ }
78
+ catch (error) {
79
+ throw new Error(`Failed to sign the message: ${error}`);
80
+ }
81
+ const scheme = utils.isSolanaWallet(provider)
82
+ ? SIGNATURE_SCHEME_TK_API_ED25519
83
+ : SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191;
84
+ try {
85
+ if (utils.isEthereumWallet(provider)) {
86
+ const { recoverPublicKey, hashMessage } = await import('viem');
87
+ const { compressRawPublicKey, toDerSignature } = await import('@turnkey/crypto');
88
+ const rawPublicKey = await recoverPublicKey({
89
+ hash: hashMessage(payload),
90
+ signature: signature,
91
+ });
92
+ const publicKeyHex = rawPublicKey.startsWith("0x")
93
+ ? rawPublicKey.slice(2)
94
+ : rawPublicKey;
95
+ const publicKeyBytes = encoding.uint8ArrayFromHexString(publicKeyHex);
96
+ const publicKeyBytesCompressed = compressRawPublicKey(publicKeyBytes);
97
+ publicKey = encoding.uint8ArrayToHexString(publicKeyBytesCompressed);
98
+ signature = toDerSignature(signature.replace("0x", ""));
99
+ }
100
+ else {
101
+ publicKey = await this.wallet.getPublicKey(provider);
102
+ }
103
+ }
104
+ catch (error) {
105
+ throw new Error(`Failed to recover public key: ${error}`);
106
+ }
107
+ return {
108
+ stampHeaderName: STAMP_HEADER_NAME,
109
+ stampHeaderValue: encoding.stringToBase64urlString(JSON.stringify({ publicKey, scheme, signature })),
110
+ };
111
+ }
112
+ }
113
+
114
+ exports.CrossPlatformWalletStamper = CrossPlatformWalletStamper;
115
+ exports.WalletStamper = WalletStamper;
116
+ //# sourceMappingURL=stamper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stamper.js","sources":["../../src/__wallet__/stamper.ts"],"sourcesContent":[null],"names":["WalletInterfaceType","SignIntent","isSolanaWallet","isEthereumWallet","uint8ArrayFromHexString","uint8ArrayToHexString","stringToBase64urlString"],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { WalletInterfaceType, SignIntent } from '../__types__/base.mjs';
2
+ import { uint8ArrayFromHexString, uint8ArrayToHexString, stringToBase64urlString } from '@turnkey/encoding';
3
+ import { isSolanaWallet, isEthereumWallet } from '../utils.mjs';
4
+
5
+ const SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191 = "SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191";
6
+ const SIGNATURE_SCHEME_TK_API_ED25519 = "SIGNATURE_SCHEME_TK_API_ED25519";
7
+ const STAMP_HEADER_NAME = "X-Stamp";
8
+ class CrossPlatformWalletStamper {
9
+ constructor(wallets) {
10
+ this.ctx = {};
11
+ for (const [interfaceType, wallet] of Object.entries(wallets)) {
12
+ const typedInterface = interfaceType;
13
+ this.ctx[typedInterface] = {
14
+ wallet,
15
+ stamper: new WalletStamper(wallet),
16
+ };
17
+ }
18
+ }
19
+ async init() {
20
+ if (!Object.keys(this.ctx).length) {
21
+ throw new Error("No interfaces initialized in WalletStamper");
22
+ }
23
+ }
24
+ async stamp(payload, interfaceType = this.defaultInterface(), provider) {
25
+ const ctx = this.getCtx(interfaceType);
26
+ const selectedProvider = provider ?? ctx.provider;
27
+ if (!selectedProvider) {
28
+ throw new Error(`Could not find a provider for interface '${interfaceType}'.`);
29
+ }
30
+ return ctx.stamper.stamp(payload, selectedProvider);
31
+ }
32
+ async getPublicKey(interfaceType = this.defaultInterface(), provider) {
33
+ return this.getCtx(interfaceType).wallet.getPublicKey(provider);
34
+ }
35
+ setProvider(interfaceType, provider) {
36
+ this.getCtx(interfaceType).provider = provider;
37
+ this.activeInterfaceType = interfaceType;
38
+ }
39
+ getWalletInterface(interfaceType = this.defaultInterface()) {
40
+ return this.getCtx(interfaceType).wallet;
41
+ }
42
+ defaultInterface() {
43
+ if (this.activeInterfaceType) {
44
+ return this.activeInterfaceType;
45
+ }
46
+ const initializedInterfaces = Object.keys(this.ctx);
47
+ if (initializedInterfaces.includes(WalletInterfaceType.Ethereum)) {
48
+ return WalletInterfaceType.Ethereum;
49
+ }
50
+ if (initializedInterfaces.includes(WalletInterfaceType.Solana)) {
51
+ return WalletInterfaceType.Solana;
52
+ }
53
+ if (initializedInterfaces.includes(WalletInterfaceType.WalletConnect)) {
54
+ return WalletInterfaceType.WalletConnect;
55
+ }
56
+ throw new Error("No interfaces initialized");
57
+ }
58
+ getCtx(interfaceType) {
59
+ const ctx = this.ctx[interfaceType];
60
+ if (!ctx) {
61
+ throw new Error(`Interface '${interfaceType}' not initialised`);
62
+ }
63
+ return ctx;
64
+ }
65
+ }
66
+ class WalletStamper {
67
+ constructor(wallet) {
68
+ this.wallet = wallet;
69
+ }
70
+ async stamp(payload, provider) {
71
+ let signature;
72
+ let publicKey;
73
+ try {
74
+ signature = await this.wallet.sign(payload, provider, SignIntent.SignMessage);
75
+ }
76
+ catch (error) {
77
+ throw new Error(`Failed to sign the message: ${error}`);
78
+ }
79
+ const scheme = isSolanaWallet(provider)
80
+ ? SIGNATURE_SCHEME_TK_API_ED25519
81
+ : SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191;
82
+ try {
83
+ if (isEthereumWallet(provider)) {
84
+ const { recoverPublicKey, hashMessage } = await import('viem');
85
+ const { compressRawPublicKey, toDerSignature } = await import('@turnkey/crypto');
86
+ const rawPublicKey = await recoverPublicKey({
87
+ hash: hashMessage(payload),
88
+ signature: signature,
89
+ });
90
+ const publicKeyHex = rawPublicKey.startsWith("0x")
91
+ ? rawPublicKey.slice(2)
92
+ : rawPublicKey;
93
+ const publicKeyBytes = uint8ArrayFromHexString(publicKeyHex);
94
+ const publicKeyBytesCompressed = compressRawPublicKey(publicKeyBytes);
95
+ publicKey = uint8ArrayToHexString(publicKeyBytesCompressed);
96
+ signature = toDerSignature(signature.replace("0x", ""));
97
+ }
98
+ else {
99
+ publicKey = await this.wallet.getPublicKey(provider);
100
+ }
101
+ }
102
+ catch (error) {
103
+ throw new Error(`Failed to recover public key: ${error}`);
104
+ }
105
+ return {
106
+ stampHeaderName: STAMP_HEADER_NAME,
107
+ stampHeaderValue: stringToBase64urlString(JSON.stringify({ publicKey, scheme, signature })),
108
+ };
109
+ }
110
+ }
111
+
112
+ export { CrossPlatformWalletStamper, WalletStamper };
113
+ //# sourceMappingURL=stamper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stamper.mjs","sources":["../../src/__wallet__/stamper.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { WalletInterfaceType, WalletProvider, SignIntent, WalletConnectInterface, SwitchableChain } from "@types";
2
+ import type { WalletConnectClient } from "./client";
3
+ export declare class WalletConnectWallet implements WalletConnectInterface {
4
+ private client;
5
+ readonly interfaceType = WalletInterfaceType.WalletConnect;
6
+ private ethereumNamespaces;
7
+ private solanaNamespaces;
8
+ private ethChain;
9
+ private solChain;
10
+ private uri?;
11
+ constructor(client: WalletConnectClient);
12
+ /**
13
+ * Initializes WalletConnect pairing flow with the specified chains.
14
+ * If an active session already exists, pairing is skipped.
15
+ *
16
+ * @param opts.ethereum - Whether to enable Ethereum pairing
17
+ * @param opts.solana - Whether to enable Solana pairing
18
+ * @throws {Error} If no chains are enabled
19
+ */
20
+ init(opts: {
21
+ ethereumNamespaces: string[];
22
+ solanaNamespaces: string[];
23
+ }): Promise<void>;
24
+ /**
25
+ * Returns WalletConnect providers with associated chain/account metadata.
26
+ */
27
+ getProviders(): Promise<WalletProvider[]>;
28
+ /**
29
+ * Approves the session if needed and ensures at least one account is available.
30
+ */
31
+ connectWalletAccount(_provider: WalletProvider): Promise<void>;
32
+ /**
33
+ * Switch the user’s WalletConnect session to a new EVM chain.
34
+ *
35
+ * @param provider – the WalletProvider returned by getProviders()
36
+ * @param chainOrId – either:
37
+ * • a CAIP string ("eip155:1", "eip155:137", …)
38
+ * • a SwitchableChain object carrying full metadata
39
+ */
40
+ switchChain(provider: WalletProvider, chainOrId: string | SwitchableChain): Promise<void>;
41
+ /**
42
+ * Signs a message or transaction using the specified provider and intent.
43
+ *
44
+ * @param message - The message or serialized transaction to sign.
45
+ * @param provider - The WalletProvider to use.
46
+ * @param intent - The type of signing intent (message, tx, send).
47
+ */
48
+ sign(message: string, provider: WalletProvider, intent: SignIntent): Promise<string>;
49
+ /**
50
+ * Retrieves the public key of the connected wallet.
51
+ *
52
+ * @param provider - The WalletProvider to fetch the key from.
53
+ * @returns Compressed public key as a hex string.
54
+ */
55
+ getPublicKey(provider: WalletProvider): Promise<string>;
56
+ /**
57
+ * Disconnects the current session and re-initiates a fresh pairing URI.
58
+ */
59
+ disconnectWalletAccount(_provider: WalletProvider): Promise<void>;
60
+ /**
61
+ * Builds a lightweight provider interface for the given chain.
62
+ *
63
+ * @param chainId - The namespace chain ID (e.g., eip155:1)
64
+ * @returns A WalletConnect-compatible provider implementation
65
+ */
66
+ private makeProvider;
67
+ /**
68
+ * Ensures there is an active WalletConnect session, initiating approval if necessary.
69
+ *
70
+ * @returns The current WalletConnect session
71
+ * @throws {Error} If approval fails or session is not established
72
+ */
73
+ private ensureSession;
74
+ /**
75
+ * Builds a WalletProvider descriptor for an EVM chain.
76
+ */
77
+ private buildEthProvider;
78
+ /**
79
+ * Builds a WalletProvider descriptor for Solana.
80
+ */
81
+ private buildSolProvider;
82
+ }
83
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/__wallet__/wallet-connect/base.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,mBAAmB,EACnB,cAAc,EAEd,UAAU,EAEV,sBAAsB,EACtB,eAAe,EAChB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIpD,qBAAa,mBAAoB,YAAW,sBAAsB;IAWpD,OAAO,CAAC,MAAM;IAV1B,QAAQ,CAAC,aAAa,qCAAqC;IAE3D,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,GAAG,CAAC,CAAS;gBAED,MAAM,EAAE,mBAAmB;IAI/C;;;;;;;OAOG;IACG,IAAI,CAAC,IAAI,EAAE;QACf,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDjB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAqB/C;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE;;;;;;;OAOG;IACG,WAAW,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,GAAG,eAAe,GAClC,OAAO,CAAC,IAAI,CAAC;IAmChB;;;;;;OAMG;IACG,IAAI,CACR,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC;IAuGlB;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAyC7D;;OAEG;IACG,uBAAuB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCvE;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;;OAKG;YACW,aAAa;IAU3B;;OAEG;YACW,gBAAgB;IAwB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAgBzB"}