@crossmint/wallets-sdk 0.18.2 → 0.18.4

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 (191) hide show
  1. package/dist/api/client.cjs +9 -1
  2. package/dist/api/client.d.cts +4 -4
  3. package/dist/api/client.d.ts +4 -4
  4. package/dist/api/client.js +9 -1
  5. package/dist/api/gen/client.gen.cjs +7 -1
  6. package/dist/api/gen/client.gen.js +7 -1
  7. package/dist/api/gen/index.cjs +179 -1
  8. package/dist/api/gen/index.js +179 -1
  9. package/dist/api/gen/sdk.gen.cjs +178 -1
  10. package/dist/api/gen/sdk.gen.js +178 -1
  11. package/dist/api/gen/types.gen.js +1 -1
  12. package/dist/api/index.cjs +11 -1
  13. package/dist/api/index.d.cts +1 -1
  14. package/dist/api/index.d.ts +1 -1
  15. package/dist/api/index.js +11 -1
  16. package/dist/api/types.d.cts +4 -2
  17. package/dist/api/types.d.ts +4 -2
  18. package/dist/api/types.js +1 -1
  19. package/dist/chains/chains.cjs +9 -1
  20. package/dist/chains/chains.js +9 -1
  21. package/dist/chains/definitions/story.cjs +7 -1
  22. package/dist/chains/definitions/story.js +7 -1
  23. package/dist/chains/definitions/storyTestnet.cjs +7 -1
  24. package/dist/chains/definitions/storyTestnet.js +7 -1
  25. package/dist/chunk-2DHIAP2S.js +58 -0
  26. package/dist/chunk-2T5HHKUI.js +19 -0
  27. package/dist/chunk-2VOEAAFA.cjs +200 -0
  28. package/dist/chunk-3U6UAYOV.js +25 -0
  29. package/dist/chunk-4BMNDPJ4.cjs +92 -0
  30. package/dist/chunk-4QGBVHV3.js +629 -0
  31. package/dist/chunk-55V4VMTX.cjs +25 -0
  32. package/dist/chunk-5H5YHSCK.js +200 -0
  33. package/dist/chunk-7ECQJFYM.cjs +63 -0
  34. package/dist/chunk-7GHQBCRV.cjs +57 -0
  35. package/dist/chunk-7JFVG4IY.js +59 -0
  36. package/dist/chunk-7QL5JVK4.js +262 -0
  37. package/dist/chunk-AJCWEEWH.js +73 -0
  38. package/dist/chunk-AL77JANE.js +36 -0
  39. package/dist/chunk-BAHU3KZE.cjs +75 -0
  40. package/dist/chunk-BAULM7A2.js +289 -0
  41. package/dist/chunk-BFAU2NL6.js +175 -0
  42. package/dist/chunk-BSC55MYK.cjs +43 -0
  43. package/dist/chunk-CHGPNMRL.cjs +36 -0
  44. package/dist/chunk-CN2GVFBU.cjs +138 -0
  45. package/dist/chunk-COVOGZ4S.js +80 -0
  46. package/dist/chunk-DPERJZBG.js +63 -0
  47. package/dist/chunk-DQCXGBZM.js +59 -0
  48. package/dist/chunk-E4LJ7252.cjs +289 -0
  49. package/dist/chunk-EM6H7EUU.cjs +80 -0
  50. package/dist/chunk-EYJQSDDI.js +43 -0
  51. package/dist/chunk-FAGFW4AR.js +16 -0
  52. package/dist/chunk-FK23BDCU.js +87 -0
  53. package/dist/chunk-FPMW7Q5O.js +55 -0
  54. package/dist/chunk-G5NYLGM5.cjs +55 -0
  55. package/dist/chunk-HHDDI3CS.js +75 -0
  56. package/dist/chunk-HNRM45KF.cjs +87 -0
  57. package/dist/chunk-JICSSJOK.js +57 -0
  58. package/dist/chunk-KS63YEQ4.js +138 -0
  59. package/dist/chunk-KT3CVXFG.js +9 -0
  60. package/dist/chunk-LLFD22UQ.cjs +36 -0
  61. package/dist/chunk-MPGPBFUZ.cjs +16 -0
  62. package/dist/chunk-MYKPHXUR.cjs +629 -0
  63. package/dist/chunk-MZBFXUHT.js +63 -0
  64. package/dist/chunk-NIBKCMQ2.cjs +19 -0
  65. package/dist/chunk-OD5RGQ4Z.js +92 -0
  66. package/dist/chunk-PSPNZEG4.cjs +175 -0
  67. package/dist/chunk-R2OY54EJ.cjs +59 -0
  68. package/dist/chunk-RHR6P2KP.cjs +15 -0
  69. package/dist/chunk-RSPJPRQW.cjs +262 -0
  70. package/dist/chunk-RTRDZB52.js +778 -0
  71. package/dist/chunk-SG7WIZLK.cjs +63 -0
  72. package/dist/chunk-SGINWAB6.js +155 -0
  73. package/dist/chunk-TK3EUCQ4.cjs +59 -0
  74. package/dist/chunk-V3QJQUT7.cjs +778 -0
  75. package/dist/chunk-WC7T2CR4.js +44 -0
  76. package/dist/chunk-WJUPOCKJ.js +15 -0
  77. package/dist/chunk-XC2V34TS.cjs +155 -0
  78. package/dist/chunk-XH3ARVJG.cjs +58 -0
  79. package/dist/chunk-YBA7WO32.cjs +44 -0
  80. package/dist/chunk-YOJETSLN.cjs +73 -0
  81. package/dist/chunk-ZT7EGOCI.cjs +9 -0
  82. package/dist/chunk-ZTGRDOOH.js +36 -0
  83. package/dist/index.cjs +55 -1
  84. package/dist/index.js +55 -1
  85. package/dist/sdk.cjs +31 -1
  86. package/dist/sdk.js +31 -1
  87. package/dist/signers/evm-api-key.cjs +7 -1
  88. package/dist/signers/evm-api-key.js +7 -1
  89. package/dist/signers/evm-external-wallet.cjs +7 -1
  90. package/dist/signers/evm-external-wallet.js +7 -1
  91. package/dist/signers/index.cjs +21 -1
  92. package/dist/signers/index.js +21 -1
  93. package/dist/signers/non-custodial/index.cjs +24 -1
  94. package/dist/signers/non-custodial/index.js +24 -1
  95. package/dist/signers/non-custodial/ncs-evm-signer.cjs +10 -1
  96. package/dist/signers/non-custodial/ncs-evm-signer.js +10 -1
  97. package/dist/signers/non-custodial/ncs-iframe-manager.cjs +7 -1
  98. package/dist/signers/non-custodial/ncs-iframe-manager.js +7 -1
  99. package/dist/signers/non-custodial/ncs-signer.cjs +11 -1
  100. package/dist/signers/non-custodial/ncs-signer.js +11 -1
  101. package/dist/signers/non-custodial/ncs-solana-signer.cjs +10 -1
  102. package/dist/signers/non-custodial/ncs-solana-signer.js +10 -1
  103. package/dist/signers/non-custodial/ncs-stellar-signer.cjs +10 -1
  104. package/dist/signers/non-custodial/ncs-stellar-signer.js +10 -1
  105. package/dist/signers/passkey.cjs +7 -1
  106. package/dist/signers/passkey.js +7 -1
  107. package/dist/signers/solana-api-key.cjs +7 -1
  108. package/dist/signers/solana-api-key.js +7 -1
  109. package/dist/signers/solana-external-wallet.cjs +8 -1
  110. package/dist/signers/solana-external-wallet.js +8 -1
  111. package/dist/signers/stellar-external-wallet.cjs +7 -1
  112. package/dist/signers/stellar-external-wallet.js +7 -1
  113. package/dist/signers/types.cjs +9 -1
  114. package/dist/signers/types.js +9 -1
  115. package/dist/utils/constants.cjs +13 -1
  116. package/dist/utils/constants.js +13 -1
  117. package/dist/utils/errors.cjs +55 -1
  118. package/dist/utils/errors.js +55 -1
  119. package/dist/utils/signer-validation.cjs +8 -1
  120. package/dist/utils/signer-validation.js +8 -1
  121. package/dist/wallets/evm.cjs +20 -1
  122. package/dist/wallets/evm.js +20 -1
  123. package/dist/wallets/solana.cjs +18 -1
  124. package/dist/wallets/solana.js +18 -1
  125. package/dist/wallets/stellar.cjs +17 -1
  126. package/dist/wallets/stellar.js +17 -1
  127. package/dist/wallets/wallet-factory.cjs +25 -1
  128. package/dist/wallets/wallet-factory.js +25 -1
  129. package/dist/wallets/wallet.cjs +16 -1
  130. package/dist/wallets/wallet.d.cts +12 -1
  131. package/dist/wallets/wallet.d.ts +12 -1
  132. package/dist/wallets/wallet.js +16 -1
  133. package/package.json +4 -4
  134. package/dist/chunk-23ZHV3VD.js +0 -1
  135. package/dist/chunk-2SHDBC47.js +0 -1
  136. package/dist/chunk-2XVV7Z43.cjs +0 -1
  137. package/dist/chunk-2YH3NVVK.cjs +0 -1
  138. package/dist/chunk-3APSOOE3.js +0 -1
  139. package/dist/chunk-3IZNWAZE.cjs +0 -1
  140. package/dist/chunk-4AJT6I6Q.js +0 -1
  141. package/dist/chunk-4KXOWU5E.cjs +0 -1
  142. package/dist/chunk-5M7IRODB.js +0 -1
  143. package/dist/chunk-5QIW67NU.cjs +0 -1
  144. package/dist/chunk-6PVKL5RC.js +0 -1
  145. package/dist/chunk-73RCBQG5.js +0 -1
  146. package/dist/chunk-7JIPYRKX.js +0 -1
  147. package/dist/chunk-7WKKOG6H.cjs +0 -3
  148. package/dist/chunk-BQZES4ST.js +0 -1
  149. package/dist/chunk-BW7YYVZE.js +0 -1
  150. package/dist/chunk-C3T63EC7.cjs +0 -1
  151. package/dist/chunk-CVZ3RNWV.cjs +0 -1
  152. package/dist/chunk-GEY574TH.cjs +0 -1
  153. package/dist/chunk-H4T4IXCF.js +0 -1
  154. package/dist/chunk-HJ5EDMTA.js +0 -1
  155. package/dist/chunk-HMPMFEPS.cjs +0 -1
  156. package/dist/chunk-HPHVJ6BA.cjs +0 -1
  157. package/dist/chunk-HRSVFJND.cjs +0 -1
  158. package/dist/chunk-IGBQEAD5.js +0 -1
  159. package/dist/chunk-IR5WN6FQ.cjs +0 -1
  160. package/dist/chunk-JUSY5XEE.js +0 -1
  161. package/dist/chunk-KHSWQE6W.js +0 -1
  162. package/dist/chunk-KKQBZXFE.js +0 -1
  163. package/dist/chunk-KO6QYKDX.cjs +0 -1
  164. package/dist/chunk-KRV3IXJU.cjs +0 -1
  165. package/dist/chunk-L5L64FWM.js +0 -1
  166. package/dist/chunk-LW6JSI4J.js +0 -1
  167. package/dist/chunk-M4TOGGLV.cjs +0 -1
  168. package/dist/chunk-MQP5VZCA.cjs +0 -1
  169. package/dist/chunk-NEJPPLYW.cjs +0 -1
  170. package/dist/chunk-NIKULSJK.cjs +0 -1
  171. package/dist/chunk-NT4EICOB.cjs +0 -1
  172. package/dist/chunk-O4FVTK7X.cjs +0 -1
  173. package/dist/chunk-P6JJHAAV.js +0 -1
  174. package/dist/chunk-PONCGT2H.cjs +0 -1
  175. package/dist/chunk-PSXRNSOE.js +0 -1
  176. package/dist/chunk-R6VFNNAA.js +0 -3
  177. package/dist/chunk-RJZV72YF.js +0 -1
  178. package/dist/chunk-S3DYQVRD.js +0 -1
  179. package/dist/chunk-SHVVA55W.js +0 -1
  180. package/dist/chunk-STYSP6KL.cjs +0 -1
  181. package/dist/chunk-UBOWSXW3.js +0 -1
  182. package/dist/chunk-UNBXKCNN.js +0 -1
  183. package/dist/chunk-VXFSSEA4.js +0 -1
  184. package/dist/chunk-VY634F3J.js +0 -1
  185. package/dist/chunk-WQP2FSVI.js +0 -1
  186. package/dist/chunk-WYYAPI4G.cjs +0 -1
  187. package/dist/chunk-WZFHEUWT.cjs +0 -1
  188. package/dist/chunk-XALFCQKD.cjs +0 -1
  189. package/dist/chunk-XIRT2EZN.cjs +0 -1
  190. package/dist/chunk-YWPTI2QO.cjs +0 -1
  191. package/dist/chunk-YZ4HRYSL.cjs +0 -1
@@ -0,0 +1,63 @@
1
+ import {
2
+ __async
3
+ } from "./chunk-FPMW7Q5O.js";
4
+
5
+ // src/signers/evm-external-wallet.ts
6
+ var EVMExternalWalletSigner = class {
7
+ constructor(config) {
8
+ this.config = config;
9
+ this.type = "external-wallet";
10
+ if (config.address == null) {
11
+ throw new Error("Please provide an address for the External Wallet Signer");
12
+ }
13
+ this._address = config.address;
14
+ this.provider = config.provider;
15
+ this.viemAccount = config.viemAccount;
16
+ }
17
+ address() {
18
+ return this._address;
19
+ }
20
+ locator() {
21
+ return this.config.locator;
22
+ }
23
+ signMessage(message) {
24
+ return __async(this, null, function* () {
25
+ var _a;
26
+ if (this.provider != null) {
27
+ const signature = yield this.provider.request({
28
+ method: "personal_sign",
29
+ params: [message, this._address]
30
+ });
31
+ if (signature == null) {
32
+ throw new Error(
33
+ "[EVMExternalWalletSigner] Failed to sign message: EIP1193 provider signMessage returned null"
34
+ );
35
+ }
36
+ return { signature };
37
+ }
38
+ if (((_a = this.viemAccount) == null ? void 0 : _a.signMessage) != null) {
39
+ const signature = yield this.viemAccount.signMessage({
40
+ message: {
41
+ raw: message
42
+ }
43
+ });
44
+ if (signature == null) {
45
+ throw new Error(
46
+ "[EVMExternalWalletSigner] Failed to sign message: Viem account signMessage returned null"
47
+ );
48
+ }
49
+ return { signature };
50
+ }
51
+ throw new Error("No signer provider or viem account provided");
52
+ });
53
+ }
54
+ signTransaction(transaction) {
55
+ return __async(this, null, function* () {
56
+ return yield this.signMessage(transaction);
57
+ });
58
+ }
59
+ };
60
+
61
+ export {
62
+ EVMExternalWalletSigner
63
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/chains/definitions/story.ts
2
+ var _viem = require('viem');
3
+ var story = _viem.defineChain.call(void 0, {
4
+ id: 1514,
5
+ name: "Story",
6
+ nativeCurrency: {
7
+ decimals: 18,
8
+ name: "IP Token",
9
+ symbol: "IP"
10
+ },
11
+ rpcUrls: {
12
+ default: { http: ["https://mainnet.storyrpc.io"] }
13
+ },
14
+ testnet: false
15
+ });
16
+
17
+
18
+
19
+ exports.story = story;
@@ -0,0 +1,92 @@
1
+ import {
2
+ Wallet
3
+ } from "./chunk-4QGBVHV3.js";
4
+ import {
5
+ SolanaExternalWalletSigner
6
+ } from "./chunk-DQCXGBZM.js";
7
+ import {
8
+ TransactionNotCreatedError
9
+ } from "./chunk-SGINWAB6.js";
10
+ import {
11
+ __async
12
+ } from "./chunk-FPMW7Q5O.js";
13
+
14
+ // src/wallets/solana.ts
15
+ import bs58 from "bs58";
16
+ import { isValidSolanaAddress } from "@crossmint/common-sdk-base";
17
+ var SolanaWallet = class _SolanaWallet extends Wallet {
18
+ constructor(wallet) {
19
+ super(
20
+ {
21
+ chain: wallet.chain,
22
+ address: wallet.address,
23
+ owner: wallet.owner,
24
+ signer: wallet.signer,
25
+ options: Wallet.getOptions(wallet),
26
+ alias: wallet.alias
27
+ },
28
+ Wallet.getApiClient(wallet)
29
+ );
30
+ }
31
+ static from(wallet) {
32
+ if (!isValidSolanaAddress(wallet.address)) {
33
+ throw new Error("Wallet is not a Solana wallet");
34
+ }
35
+ return new _SolanaWallet(wallet);
36
+ }
37
+ sendTransaction(params) {
38
+ return __async(this, null, function* () {
39
+ var _a, _b;
40
+ yield this.preAuthIfNeeded();
41
+ const createdTransaction = yield this.createTransaction(params);
42
+ if ((_a = params.options) == null ? void 0 : _a.experimental_prepareOnly) {
43
+ return {
44
+ hash: void 0,
45
+ explorerLink: void 0,
46
+ transactionId: createdTransaction.id
47
+ };
48
+ }
49
+ const _additionalSigners = (_b = params.additionalSigners) == null ? void 0 : _b.map(
50
+ (signer) => new SolanaExternalWalletSigner({
51
+ type: "external-wallet",
52
+ address: signer.publicKey.toString(),
53
+ locator: `external-wallet:${signer.publicKey.toString()}`,
54
+ onSignTransaction: (transaction) => {
55
+ transaction.sign([signer]);
56
+ return Promise.resolve(transaction);
57
+ }
58
+ })
59
+ );
60
+ const options = {
61
+ additionalSigners: _additionalSigners
62
+ };
63
+ return yield this.approveTransactionAndWait(createdTransaction.id, options);
64
+ });
65
+ }
66
+ createTransaction(params) {
67
+ return __async(this, null, function* () {
68
+ var _a, _b;
69
+ const signer = (_b = (_a = params.options) == null ? void 0 : _a.experimental_signer) != null ? _b : this.signer.locator();
70
+ let serializedTransaction;
71
+ if ("serializedTransaction" in params) {
72
+ serializedTransaction = params.serializedTransaction;
73
+ } else {
74
+ serializedTransaction = bs58.encode(params.transaction.serialize());
75
+ }
76
+ const transactionCreationResponse = yield this.apiClient.createTransaction(this.walletLocator, {
77
+ params: {
78
+ transaction: serializedTransaction,
79
+ signer
80
+ }
81
+ });
82
+ if ("error" in transactionCreationResponse) {
83
+ throw new TransactionNotCreatedError(JSON.stringify(transactionCreationResponse));
84
+ }
85
+ return transactionCreationResponse;
86
+ });
87
+ }
88
+ };
89
+
90
+ export {
91
+ SolanaWallet
92
+ };
@@ -0,0 +1,175 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkMYKPHXURcjs = require('./chunk-MYKPHXUR.cjs');
4
+
5
+
6
+
7
+
8
+ var _chunkXC2V34TScjs = require('./chunk-XC2V34TS.cjs');
9
+
10
+
11
+ var _chunkCN2GVFBUcjs = require('./chunk-CN2GVFBU.cjs');
12
+
13
+
14
+ var _chunkG5NYLGM5cjs = require('./chunk-G5NYLGM5.cjs');
15
+
16
+ // src/wallets/evm.ts
17
+ var _viem = require('viem');
18
+ var _commonsdkbase = require('@crossmint/common-sdk-base');
19
+ var EVMWallet = class _EVMWallet extends _chunkMYKPHXURcjs.Wallet {
20
+ constructor(wallet) {
21
+ super(
22
+ {
23
+ chain: wallet.chain,
24
+ address: wallet.address,
25
+ owner: wallet.owner,
26
+ signer: wallet.signer,
27
+ options: _chunkMYKPHXURcjs.Wallet.getOptions(wallet),
28
+ alias: wallet.alias
29
+ },
30
+ _chunkMYKPHXURcjs.Wallet.getApiClient(wallet)
31
+ );
32
+ }
33
+ static from(wallet) {
34
+ if (!_commonsdkbase.isValidEvmAddress.call(void 0, wallet.address)) {
35
+ throw new Error("Wallet is not an EVM wallet");
36
+ }
37
+ return new _EVMWallet(wallet);
38
+ }
39
+ sendTransaction(params) {
40
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
41
+ var _a;
42
+ yield this.preAuthIfNeeded();
43
+ const builtTransaction = this.buildTransaction(params);
44
+ const createdTransaction = yield this.createTransaction(builtTransaction, params.options);
45
+ if ((_a = params.options) == null ? void 0 : _a.experimental_prepareOnly) {
46
+ return {
47
+ hash: void 0,
48
+ explorerLink: void 0,
49
+ transactionId: createdTransaction.id
50
+ };
51
+ }
52
+ return yield this.approveTransactionAndWait(createdTransaction.id);
53
+ });
54
+ }
55
+ signMessage(params) {
56
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
57
+ var _a;
58
+ yield this.preAuthIfNeeded();
59
+ const signatureCreationResponse = yield this.apiClient.createSignature(this.walletLocator, {
60
+ type: "message",
61
+ params: {
62
+ message: params.message,
63
+ signer: this.signer.locator(),
64
+ chain: this.chain
65
+ }
66
+ });
67
+ if ("error" in signatureCreationResponse) {
68
+ throw new (0, _chunkXC2V34TScjs.SignatureNotCreatedError)(JSON.stringify(signatureCreationResponse));
69
+ }
70
+ if ((_a = params.options) == null ? void 0 : _a.experimental_prepareOnly) {
71
+ return {
72
+ signature: void 0,
73
+ signatureId: signatureCreationResponse.id
74
+ };
75
+ }
76
+ return yield this.approveSignatureAndWait(signatureCreationResponse.id);
77
+ });
78
+ }
79
+ signTypedData(params) {
80
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
81
+ var _a;
82
+ yield this.preAuthIfNeeded();
83
+ const { domain, message, primaryType, types, chain } = params;
84
+ if (!domain || !message || !types || !chain) {
85
+ throw new (0, _chunkXC2V34TScjs.InvalidTypedDataError)("Invalid typed data");
86
+ }
87
+ const { name, version, chainId, verifyingContract, salt } = domain;
88
+ if (!name || !version || !chainId || !verifyingContract) {
89
+ throw new (0, _chunkXC2V34TScjs.InvalidTypedDataError)("Invalid typed data domain");
90
+ }
91
+ const signatureCreationResponse = yield this.apiClient.createSignature(this.walletLocator, {
92
+ type: "typed-data",
93
+ params: {
94
+ typedData: {
95
+ domain: {
96
+ name,
97
+ version,
98
+ chainId: Number(chainId),
99
+ verifyingContract,
100
+ salt
101
+ },
102
+ message,
103
+ primaryType,
104
+ types
105
+ },
106
+ signer: this.signer.locator(),
107
+ chain
108
+ }
109
+ });
110
+ if ("error" in signatureCreationResponse) {
111
+ throw new (0, _chunkXC2V34TScjs.SignatureNotCreatedError)(JSON.stringify(signatureCreationResponse));
112
+ }
113
+ if ((_a = params.options) == null ? void 0 : _a.experimental_prepareOnly) {
114
+ return {
115
+ signature: void 0,
116
+ signatureId: signatureCreationResponse.id
117
+ };
118
+ }
119
+ return yield this.approveSignatureAndWait(signatureCreationResponse.id);
120
+ });
121
+ }
122
+ getViemClient(params) {
123
+ var _a;
124
+ return _viem.createPublicClient.call(void 0, {
125
+ transport: (_a = params == null ? void 0 : params.transport) != null ? _a : _viem.http.call(void 0, ),
126
+ chain: _chunkCN2GVFBUcjs.toViemChain.call(void 0, this.chain)
127
+ });
128
+ }
129
+ createTransaction(transaction, options) {
130
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
131
+ var _a;
132
+ const signer = (_a = options == null ? void 0 : options.experimental_signer) != null ? _a : this.signer.locator();
133
+ const transactionCreationResponse = yield this.apiClient.createTransaction(this.walletLocator, {
134
+ params: {
135
+ signer,
136
+ chain: this.chain,
137
+ calls: [transaction]
138
+ }
139
+ });
140
+ if ("error" in transactionCreationResponse) {
141
+ throw new (0, _chunkXC2V34TScjs.TransactionNotCreatedError)(JSON.stringify(transactionCreationResponse));
142
+ }
143
+ return transactionCreationResponse;
144
+ });
145
+ }
146
+ buildTransaction(params) {
147
+ var _a, _b, _c, _d, _e;
148
+ if ("transaction" in params) {
149
+ return { transaction: params.transaction };
150
+ }
151
+ if (params.abi == null) {
152
+ return {
153
+ to: params.to,
154
+ value: (_b = (_a = params.value) == null ? void 0 : _a.toString()) != null ? _b : "0",
155
+ data: (_c = params.data) != null ? _c : "0x"
156
+ };
157
+ }
158
+ if (!params.functionName) {
159
+ throw new Error("Function name is required");
160
+ }
161
+ return {
162
+ to: params.to,
163
+ value: (_e = (_d = params.value) == null ? void 0 : _d.toString()) != null ? _e : "0",
164
+ data: _viem.encodeFunctionData.call(void 0, {
165
+ abi: params.abi,
166
+ functionName: params.functionName,
167
+ args: params.args
168
+ })
169
+ };
170
+ }
171
+ };
172
+
173
+
174
+
175
+ exports.EVMWallet = EVMWallet;
@@ -0,0 +1,59 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkXC2V34TScjs = require('./chunk-XC2V34TS.cjs');
4
+
5
+
6
+ var _chunkG5NYLGM5cjs = require('./chunk-G5NYLGM5.cjs');
7
+
8
+ // src/signers/solana-external-wallet.ts
9
+ var _web3js = require('@solana/web3.js');
10
+ var _bs58 = require('bs58'); var _bs582 = _interopRequireDefault(_bs58);
11
+ var SolanaExternalWalletSigner = class {
12
+ constructor(config) {
13
+ this.config = config;
14
+ this.type = "external-wallet";
15
+ if (config.address == null) {
16
+ throw new Error("Please provide an address for the External Wallet Signer");
17
+ }
18
+ this._address = config.address;
19
+ this.onSignTransaction = config.onSignTransaction;
20
+ }
21
+ address() {
22
+ return this._address;
23
+ }
24
+ locator() {
25
+ return this.config.locator;
26
+ }
27
+ signMessage() {
28
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
29
+ return yield Promise.reject(new Error("signMessage method not implemented for solana external wallet signer"));
30
+ });
31
+ }
32
+ signTransaction(transaction) {
33
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
34
+ if (this.onSignTransaction == null) {
35
+ return yield Promise.reject(
36
+ new Error("onSignTransaction method is required to sign transactions with a Solana external wallet")
37
+ );
38
+ }
39
+ const transactionBytes = _bs582.default.decode(transaction);
40
+ const deserializedTransaction = _web3js.VersionedTransaction.deserialize(transactionBytes);
41
+ const signedTxn = yield this.onSignTransaction(deserializedTransaction);
42
+ const externalWalletPublicKey = new (0, _web3js.PublicKey)(this._address);
43
+ const signerIndex = signedTxn.message.staticAccountKeys.findIndex((key) => key.equals(externalWalletPublicKey));
44
+ if (signerIndex === -1) {
45
+ throw new (0, _chunkXC2V34TScjs.TransactionFailedError)("Wallet public key not found in transaction signers");
46
+ }
47
+ const validSignature = signedTxn.signatures[signerIndex];
48
+ if (validSignature == null) {
49
+ throw new (0, _chunkXC2V34TScjs.TransactionFailedError)("No valid signature found in the transaction");
50
+ }
51
+ const signatureBytes = new Uint8Array(Object.values(validSignature));
52
+ return { signature: _bs582.default.encode(signatureBytes) };
53
+ });
54
+ }
55
+ };
56
+
57
+
58
+
59
+ exports.SolanaExternalWalletSigner = SolanaExternalWalletSigner;
@@ -0,0 +1,15 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/signers/types.ts
2
+ var AuthRejectedError = class extends Error {
3
+ constructor() {
4
+ super("Authentication was rejected by the user");
5
+ this.name = "AuthRejectedError";
6
+ }
7
+ };
8
+ function isExportableSigner(signer) {
9
+ return signer._exportPrivateKey !== void 0;
10
+ }
11
+
12
+
13
+
14
+
15
+ exports.AuthRejectedError = AuthRejectedError; exports.isExportableSigner = isExportableSigner;
@@ -0,0 +1,262 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk7GHQBCRVcjs = require('./chunk-7GHQBCRV.cjs');
4
+
5
+
6
+ var _chunkMYKPHXURcjs = require('./chunk-MYKPHXUR.cjs');
7
+
8
+
9
+ var _chunkXH3ARVJGcjs = require('./chunk-XH3ARVJG.cjs');
10
+
11
+
12
+
13
+ var _chunkXC2V34TScjs = require('./chunk-XC2V34TS.cjs');
14
+
15
+
16
+
17
+ var _chunkG5NYLGM5cjs = require('./chunk-G5NYLGM5.cjs');
18
+
19
+ // src/wallets/wallet-factory.ts
20
+ var _ox = require('ox');
21
+ var DELEGATED_SIGNER_MISMATCH_ERROR = "When 'delegatedSigners' is provided to a method that may fetch an existing wallet, each specified delegated signer must exist in that wallet's configuration.";
22
+ var WalletFactory = class {
23
+ constructor(apiClient) {
24
+ this.apiClient = apiClient;
25
+ }
26
+ getOrCreateWallet(args) {
27
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
28
+ if (this.apiClient.isServerSide) {
29
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)(
30
+ "getOrCreateWallet can only be called from client-side code.\n- Make sure you're running this in the browser (or another client environment), not on your server.\n- Use your Crossmint Client API Key (not a server key)."
31
+ );
32
+ }
33
+ const locator = this.getWalletLocator(args);
34
+ const existingWallet = yield this.apiClient.getWallet(locator);
35
+ if (existingWallet != null && !("error" in existingWallet)) {
36
+ return this.createWalletInstance(existingWallet, args);
37
+ }
38
+ return this.createWallet(args);
39
+ });
40
+ }
41
+ getWallet(walletLocator, args) {
42
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
43
+ if (!this.apiClient.isServerSide) {
44
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("getWallet is not supported on client side, use getOrCreateWallet instead");
45
+ }
46
+ const existingWallet = yield this.apiClient.getWallet(walletLocator);
47
+ if ("error" in existingWallet) {
48
+ throw new (0, _chunkXC2V34TScjs.WalletNotAvailableError)(JSON.stringify(existingWallet));
49
+ }
50
+ return this.createWalletInstance(existingWallet, args);
51
+ });
52
+ }
53
+ createWallet(args) {
54
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
55
+ var _a, _b, _c, _d, _e;
56
+ yield (_c = (_b = (_a = args.options) == null ? void 0 : _a.experimental_callbacks) == null ? void 0 : _b.onWalletCreationStart) == null ? void 0 : _c.call(_b);
57
+ this.mutateSignerFromCustomAuth(args, true);
58
+ const adminSigner = args.signer.type === "passkey" ? yield this.createPasskeyAdminSigner(args.signer) : args.signer;
59
+ const walletResponse = yield this.apiClient.createWallet({
60
+ type: "smart",
61
+ chainType: this.getChainType(args.chain),
62
+ config: _chunkG5NYLGM5cjs.__spreadValues.call(void 0, _chunkG5NYLGM5cjs.__spreadValues.call(void 0, {
63
+ adminSigner
64
+ }, (args == null ? void 0 : args.plugins) ? { plugins: args.plugins } : {}), args.delegatedSigners != null ? { delegatedSigners: args.delegatedSigners } : {}),
65
+ owner: (_d = args.owner) != null ? _d : void 0,
66
+ alias: (_e = args.alias) != null ? _e : void 0
67
+ });
68
+ if ("error" in walletResponse) {
69
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)(JSON.stringify(walletResponse));
70
+ }
71
+ return this.createWalletInstance(walletResponse, args);
72
+ });
73
+ }
74
+ createWalletInstance(walletResponse, args) {
75
+ this.validateExistingWalletConfig(walletResponse, args);
76
+ const signerConfig = this.toInternalSignerConfig(walletResponse, args.signer, args.options);
77
+ return new (0, _chunkMYKPHXURcjs.Wallet)(
78
+ {
79
+ chain: args.chain,
80
+ address: walletResponse.address,
81
+ owner: walletResponse.owner,
82
+ signer: _chunkXH3ARVJGcjs.assembleSigner.call(void 0, args.chain, signerConfig),
83
+ options: args.options,
84
+ alias: args.alias
85
+ },
86
+ this.apiClient
87
+ );
88
+ }
89
+ toInternalSignerConfig(walletResponse, signerArgs, options) {
90
+ var _a, _b, _c, _d, _e, _f;
91
+ if (!(walletResponse.chainType === "evm" || walletResponse.chainType === "solana" || walletResponse.chainType === "stellar")) {
92
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)(`Wallet type ${walletResponse.chainType} is not supported`);
93
+ }
94
+ if (signerArgs == null && ((_a = walletResponse.config) == null ? void 0 : _a.adminSigner) == null) {
95
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("Signer is required to create a wallet");
96
+ }
97
+ switch (signerArgs.type) {
98
+ case "api-key": {
99
+ if (((_b = walletResponse.config) == null ? void 0 : _b.adminSigner.type) !== "api-key") {
100
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("API key signer does not match the wallet's signer type");
101
+ }
102
+ return {
103
+ type: "api-key",
104
+ address: walletResponse.config.adminSigner.address,
105
+ locator: walletResponse.config.adminSigner.locator
106
+ };
107
+ }
108
+ case "external-wallet":
109
+ if (((_c = walletResponse.config) == null ? void 0 : _c.adminSigner.type) !== "external-wallet") {
110
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("External wallet signer does not match the wallet's signer type");
111
+ }
112
+ return _chunkG5NYLGM5cjs.__spreadValues.call(void 0, _chunkG5NYLGM5cjs.__spreadValues.call(void 0, {}, walletResponse.config.adminSigner), signerArgs);
113
+ case "passkey":
114
+ if (((_d = walletResponse.config) == null ? void 0 : _d.adminSigner.type) !== "passkey") {
115
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("Passkey signer does not match the wallet's signer type");
116
+ }
117
+ return {
118
+ type: "passkey",
119
+ id: walletResponse.config.adminSigner.id,
120
+ name: walletResponse.config.adminSigner.name,
121
+ locator: walletResponse.config.adminSigner.locator,
122
+ onCreatePasskey: signerArgs.onCreatePasskey,
123
+ onSignWithPasskey: signerArgs.onSignWithPasskey
124
+ };
125
+ case "email": {
126
+ if (((_e = walletResponse.config) == null ? void 0 : _e.adminSigner.type) !== "email") {
127
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("Email signer does not match the wallet's signer type");
128
+ }
129
+ const { locator, email, address } = walletResponse.config.adminSigner;
130
+ return {
131
+ type: "email",
132
+ email,
133
+ locator,
134
+ address,
135
+ crossmint: this.apiClient.crossmint,
136
+ onAuthRequired: signerArgs.onAuthRequired,
137
+ clientTEEConnection: options == null ? void 0 : options.clientTEEConnection
138
+ };
139
+ }
140
+ case "phone": {
141
+ if (((_f = walletResponse.config) == null ? void 0 : _f.adminSigner.type) !== "phone") {
142
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("Phone signer does not match the wallet's signer type");
143
+ }
144
+ const { locator, phone, address } = walletResponse.config.adminSigner;
145
+ return {
146
+ type: "phone",
147
+ phone,
148
+ locator,
149
+ address,
150
+ crossmint: this.apiClient.crossmint,
151
+ onAuthRequired: signerArgs.onAuthRequired,
152
+ clientTEEConnection: options == null ? void 0 : options.clientTEEConnection
153
+ };
154
+ }
155
+ default:
156
+ throw new Error("Invalid signer type");
157
+ }
158
+ }
159
+ getWalletLocator(args) {
160
+ return `me:${this.getChainType(args.chain)}:smart` + (args.alias != null ? `:alias:${args.alias}` : "");
161
+ }
162
+ createPasskeyAdminSigner(signer) {
163
+ return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
164
+ var _a;
165
+ if (signer.type !== "passkey") {
166
+ throw new Error("Signer is not a passkey");
167
+ }
168
+ const passkeyName = (_a = signer.name) != null ? _a : `Crossmint Wallet ${Date.now()}`;
169
+ const passkeyCredential = signer.onCreatePasskey ? yield signer.onCreatePasskey(passkeyName) : yield _ox.WebAuthnP256.createCredential({ name: passkeyName });
170
+ return {
171
+ type: "passkey",
172
+ id: passkeyCredential.id,
173
+ name: passkeyName,
174
+ publicKey: {
175
+ x: passkeyCredential.publicKey.x.toString(),
176
+ y: passkeyCredential.publicKey.y.toString()
177
+ }
178
+ };
179
+ });
180
+ }
181
+ mutateSignerFromCustomAuth(args, isNewWalletSigner = false) {
182
+ var _a, _b;
183
+ const { experimental_customAuth } = this.apiClient.crossmint;
184
+ if (args.signer.type === "email" && (experimental_customAuth == null ? void 0 : experimental_customAuth.email) != null) {
185
+ args.signer.email = (_a = args.signer.email) != null ? _a : experimental_customAuth.email;
186
+ }
187
+ if (args.signer.type === "phone" && (experimental_customAuth == null ? void 0 : experimental_customAuth.phone) != null) {
188
+ args.signer.phone = (_b = args.signer.phone) != null ? _b : experimental_customAuth.phone;
189
+ }
190
+ if (args.signer.type === "external-wallet" && (experimental_customAuth == null ? void 0 : experimental_customAuth.externalWalletSigner) != null) {
191
+ args.signer = isNewWalletSigner ? {
192
+ type: "external-wallet",
193
+ address: experimental_customAuth.externalWalletSigner.address
194
+ } : experimental_customAuth.externalWalletSigner;
195
+ }
196
+ return;
197
+ }
198
+ validateExistingWalletConfig(existingWallet, args) {
199
+ var _a;
200
+ this.mutateSignerFromCustomAuth(args);
201
+ if (args.owner != null && existingWallet.owner != null && args.owner !== existingWallet.owner) {
202
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)("Wallet owner does not match existing wallet's linked user");
203
+ }
204
+ if (args.chain === "solana" && existingWallet.chainType !== "solana" || args.chain !== "solana" && existingWallet.chainType === "solana" || args.chain === "stellar" && existingWallet.chainType !== "stellar" || args.chain !== "stellar" && existingWallet.chainType === "stellar") {
205
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)(
206
+ `Wallet chain does not match existing wallet's chain. You must use chain: ${existingWallet.chainType}.`
207
+ );
208
+ }
209
+ if (existingWallet.type !== "smart") {
210
+ return;
211
+ }
212
+ const adminSignerArgs = args.signer;
213
+ const existingWalletSigner = (_a = existingWallet == null ? void 0 : existingWallet.config) == null ? void 0 : _a.adminSigner;
214
+ if (adminSignerArgs != null && existingWalletSigner != null) {
215
+ if (adminSignerArgs.type !== existingWalletSigner.type) {
216
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)(
217
+ "The wallet signer type provided in the wallet config does not match the existing wallet's adminSigner type"
218
+ );
219
+ }
220
+ _chunk7GHQBCRVcjs.compareSignerConfigs.call(void 0, adminSignerArgs, existingWalletSigner);
221
+ }
222
+ if (args.delegatedSigners != null) {
223
+ this.validateDelegatedSigners(existingWallet, args.delegatedSigners);
224
+ }
225
+ }
226
+ validateDelegatedSigners(existingWallet, inputDelegatedSigners) {
227
+ var _a;
228
+ const existingDelegatedSigners = (_a = existingWallet == null ? void 0 : existingWallet.config) == null ? void 0 : _a.delegatedSigners;
229
+ if (inputDelegatedSigners.length === 0) {
230
+ return;
231
+ }
232
+ if (existingDelegatedSigners == null || existingDelegatedSigners.length === 0) {
233
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)(
234
+ `${inputDelegatedSigners.length} delegated signer(s) specified, but wallet "${existingWallet.address}" has no delegated signers. ${DELEGATED_SIGNER_MISMATCH_ERROR}`
235
+ );
236
+ }
237
+ for (const argSigner of inputDelegatedSigners) {
238
+ const matchingExistingSigner = existingDelegatedSigners.find(
239
+ (existingSigner) => existingSigner.locator === argSigner.signer
240
+ );
241
+ if (matchingExistingSigner == null) {
242
+ const walletSigners = existingDelegatedSigners.map((s) => s.locator).join(", ");
243
+ throw new (0, _chunkXC2V34TScjs.WalletCreationError)(
244
+ `Delegated signer '${argSigner.signer}' does not exist in wallet "${existingWallet.address}". Available delegated signers: ${walletSigners}. ${DELEGATED_SIGNER_MISMATCH_ERROR}`
245
+ );
246
+ }
247
+ }
248
+ }
249
+ getChainType(chain) {
250
+ if (chain === "solana") {
251
+ return "solana";
252
+ }
253
+ if (chain === "stellar") {
254
+ return "stellar";
255
+ }
256
+ return "evm";
257
+ }
258
+ };
259
+
260
+
261
+
262
+ exports.WalletFactory = WalletFactory;