@crossmint/wallets-sdk 0.18.3 → 0.18.6
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/dist/api/client.cjs +10 -1
- package/dist/api/client.js +10 -1
- package/dist/api/gen/client.gen.cjs +7 -1
- package/dist/api/gen/client.gen.js +7 -1
- package/dist/api/gen/index.cjs +179 -1
- package/dist/api/gen/index.js +179 -1
- package/dist/api/gen/sdk.gen.cjs +178 -1
- package/dist/api/gen/sdk.gen.js +178 -1
- package/dist/api/gen/types.gen.js +1 -1
- package/dist/api/index.cjs +12 -1
- package/dist/api/index.js +12 -1
- package/dist/api/types.js +1 -1
- package/dist/chains/chains.cjs +9 -1
- package/dist/chains/chains.js +9 -1
- package/dist/chains/definitions/story.cjs +7 -1
- package/dist/chains/definitions/story.js +7 -1
- package/dist/chains/definitions/storyTestnet.cjs +7 -1
- package/dist/chains/definitions/storyTestnet.js +7 -1
- package/dist/chunk-2T5HHKUI.js +19 -0
- package/dist/chunk-34FDYDOM.cjs +87 -0
- package/dist/chunk-3U6UAYOV.js +25 -0
- package/dist/chunk-454RYNSZ.js +80 -0
- package/dist/chunk-455NK5LB.js +0 -0
- package/dist/chunk-55V4VMTX.cjs +25 -0
- package/dist/chunk-5BP6CVYY.cjs +58 -0
- package/dist/chunk-5YR2ILEW.js +69 -0
- package/dist/chunk-6G7ZWCCG.js +247 -0
- package/dist/chunk-7ECQJFYM.cjs +63 -0
- package/dist/chunk-7JFVG4IY.js +59 -0
- package/dist/chunk-AL77JANE.js +36 -0
- package/dist/chunk-B6JOIWRH.cjs +289 -0
- package/dist/chunk-BSC55MYK.cjs +43 -0
- package/dist/chunk-CCIGWTAO.cjs +1 -0
- package/dist/chunk-CHGPNMRL.cjs +36 -0
- package/dist/chunk-CL44FTXR.js +289 -0
- package/dist/chunk-CN2GVFBU.cjs +138 -0
- package/dist/chunk-DQCXGBZM.js +59 -0
- package/dist/chunk-E3OS753T.js +175 -0
- package/dist/chunk-EYJQSDDI.js +43 -0
- package/dist/chunk-F6E3ZDRG.cjs +175 -0
- package/dist/chunk-FPMW7Q5O.js +55 -0
- package/dist/chunk-G3LEJR3P.cjs +53 -0
- package/dist/chunk-G5NYLGM5.cjs +55 -0
- package/dist/chunk-GLRDLJS5.js +92 -0
- package/dist/chunk-GNF2U7IX.cjs +69 -0
- package/dist/chunk-GQIZWD4F.cjs +301 -0
- package/dist/chunk-HYKMSBCT.cjs +75 -0
- package/dist/chunk-IVNYZDI5.cjs +73 -0
- package/dist/chunk-K3HFAPSV.js +73 -0
- package/dist/chunk-KS63YEQ4.js +138 -0
- package/dist/chunk-KT3CVXFG.js +9 -0
- package/dist/chunk-LGONZW4W.cjs +629 -0
- package/dist/chunk-LHYSCUKJ.cjs +16 -0
- package/dist/chunk-LKAO2MV2.cjs +80 -0
- package/dist/chunk-LLFD22UQ.cjs +36 -0
- package/dist/chunk-MZBFXUHT.js +63 -0
- package/dist/chunk-NIBKCMQ2.cjs +19 -0
- package/dist/chunk-OKXSUK63.js +87 -0
- package/dist/chunk-R2OY54EJ.cjs +59 -0
- package/dist/chunk-RAWKXOHR.js +53 -0
- package/dist/chunk-RBHGZDDX.cjs +58 -0
- package/dist/chunk-RHR6P2KP.cjs +15 -0
- package/dist/chunk-RTRDZB52.js +778 -0
- package/dist/chunk-S5YXROL6.js +301 -0
- package/dist/chunk-SGINWAB6.js +155 -0
- package/dist/chunk-TK3EUCQ4.cjs +59 -0
- package/dist/chunk-TOHXQVLS.js +58 -0
- package/dist/chunk-UKBWSQ7R.js +629 -0
- package/dist/chunk-UMGB3Q7I.cjs +92 -0
- package/dist/chunk-V3QJQUT7.cjs +778 -0
- package/dist/chunk-WC7T2CR4.js +44 -0
- package/dist/chunk-WJUPOCKJ.js +15 -0
- package/dist/chunk-WQVJM3PG.js +16 -0
- package/dist/chunk-XC2V34TS.cjs +155 -0
- package/dist/chunk-XRA5GFH3.js +75 -0
- package/dist/chunk-YBA7WO32.cjs +44 -0
- package/dist/chunk-ZP4ZZCIE.js +58 -0
- package/dist/chunk-ZT7EGOCI.cjs +9 -0
- package/dist/chunk-ZTGRDOOH.js +36 -0
- package/dist/chunk-ZZJ7U5G3.cjs +247 -0
- package/dist/index.cjs +57 -1
- package/dist/index.js +57 -1
- package/dist/logger/index.cjs +11 -0
- package/dist/logger/index.d.cts +2 -0
- package/dist/logger/index.d.ts +2 -0
- package/dist/logger/index.js +11 -0
- package/dist/logger/init.cjs +10 -0
- package/dist/logger/init.d.cts +15 -0
- package/dist/logger/init.d.ts +15 -0
- package/dist/logger/init.js +10 -0
- package/dist/sdk.cjs +33 -1
- package/dist/sdk.js +33 -1
- package/dist/signers/evm-api-key.cjs +7 -1
- package/dist/signers/evm-api-key.js +7 -1
- package/dist/signers/evm-external-wallet.cjs +7 -1
- package/dist/signers/evm-external-wallet.js +7 -1
- package/dist/signers/index.cjs +21 -1
- package/dist/signers/index.js +21 -1
- package/dist/signers/non-custodial/index.cjs +24 -1
- package/dist/signers/non-custodial/index.js +24 -1
- package/dist/signers/non-custodial/ncs-evm-signer.cjs +10 -1
- package/dist/signers/non-custodial/ncs-evm-signer.js +10 -1
- package/dist/signers/non-custodial/ncs-iframe-manager.cjs +7 -1
- package/dist/signers/non-custodial/ncs-iframe-manager.js +7 -1
- package/dist/signers/non-custodial/ncs-signer.cjs +11 -1
- package/dist/signers/non-custodial/ncs-signer.js +11 -1
- package/dist/signers/non-custodial/ncs-solana-signer.cjs +10 -1
- package/dist/signers/non-custodial/ncs-solana-signer.js +10 -1
- package/dist/signers/non-custodial/ncs-stellar-signer.cjs +10 -1
- package/dist/signers/non-custodial/ncs-stellar-signer.js +10 -1
- package/dist/signers/passkey.cjs +7 -1
- package/dist/signers/passkey.js +7 -1
- package/dist/signers/solana-api-key.cjs +7 -1
- package/dist/signers/solana-api-key.js +7 -1
- package/dist/signers/solana-external-wallet.cjs +8 -1
- package/dist/signers/solana-external-wallet.js +8 -1
- package/dist/signers/stellar-external-wallet.cjs +7 -1
- package/dist/signers/stellar-external-wallet.js +7 -1
- package/dist/signers/types.cjs +9 -1
- package/dist/signers/types.js +9 -1
- package/dist/utils/constants.cjs +13 -1
- package/dist/utils/constants.js +13 -1
- package/dist/utils/errors.cjs +55 -1
- package/dist/utils/errors.js +55 -1
- package/dist/utils/signer-validation.cjs +10 -1
- package/dist/utils/signer-validation.d.cts +7 -1
- package/dist/utils/signer-validation.d.ts +7 -1
- package/dist/utils/signer-validation.js +10 -1
- package/dist/wallets/evm.cjs +20 -1
- package/dist/wallets/evm.js +20 -1
- package/dist/wallets/solana.cjs +18 -1
- package/dist/wallets/solana.js +18 -1
- package/dist/wallets/stellar.cjs +17 -1
- package/dist/wallets/stellar.js +17 -1
- package/dist/wallets/wallet-factory.cjs +27 -1
- package/dist/wallets/wallet-factory.js +27 -1
- package/dist/wallets/wallet.cjs +16 -1
- package/dist/wallets/wallet.js +16 -1
- package/package.json +6 -5
- package/dist/chunk-2SHDBC47.js +0 -1
- package/dist/chunk-2XVV7Z43.cjs +0 -1
- package/dist/chunk-2YH3NVVK.cjs +0 -1
- package/dist/chunk-3APSOOE3.js +0 -1
- package/dist/chunk-3SW6AJSG.cjs +0 -1
- package/dist/chunk-4KXOWU5E.cjs +0 -1
- package/dist/chunk-5M7IRODB.js +0 -1
- package/dist/chunk-5QIW67NU.cjs +0 -1
- package/dist/chunk-6PVKL5RC.js +0 -1
- package/dist/chunk-7HTB7WKD.cjs +0 -1
- package/dist/chunk-7JIPYRKX.js +0 -1
- package/dist/chunk-BQZES4ST.js +0 -1
- package/dist/chunk-BW7YYVZE.js +0 -1
- package/dist/chunk-C3T63EC7.cjs +0 -1
- package/dist/chunk-CXTC3YDL.cjs +0 -1
- package/dist/chunk-DV6ZRFKV.js +0 -1
- package/dist/chunk-DX7VVXY5.cjs +0 -1
- package/dist/chunk-FATVK26C.js +0 -1
- package/dist/chunk-GEY574TH.cjs +0 -1
- package/dist/chunk-GKZFI322.js +0 -1
- package/dist/chunk-H4T4IXCF.js +0 -1
- package/dist/chunk-HJ5EDMTA.js +0 -1
- package/dist/chunk-HPHVJ6BA.cjs +0 -1
- package/dist/chunk-HQAKCIYM.js +0 -1
- package/dist/chunk-HRSVFJND.cjs +0 -1
- package/dist/chunk-IGBQEAD5.js +0 -1
- package/dist/chunk-IR5WN6FQ.cjs +0 -1
- package/dist/chunk-JUSY5XEE.js +0 -1
- package/dist/chunk-KFJLRIY7.js +0 -1
- package/dist/chunk-KKQBZXFE.js +0 -1
- package/dist/chunk-KO6QYKDX.cjs +0 -1
- package/dist/chunk-KRV3IXJU.cjs +0 -1
- package/dist/chunk-LW6JSI4J.js +0 -1
- package/dist/chunk-M2UBZY5S.cjs +0 -1
- package/dist/chunk-M4TOGGLV.cjs +0 -1
- package/dist/chunk-MQP5VZCA.cjs +0 -1
- package/dist/chunk-NP32UO2G.cjs +0 -1
- package/dist/chunk-O4FVTK7X.cjs +0 -1
- package/dist/chunk-P6JJHAAV.js +0 -1
- package/dist/chunk-PONCGT2H.cjs +0 -1
- package/dist/chunk-PSXRNSOE.js +0 -1
- package/dist/chunk-QMXG67T3.cjs +0 -1
- package/dist/chunk-RJZV72YF.js +0 -1
- package/dist/chunk-S3DYQVRD.js +0 -1
- package/dist/chunk-SLG7HGGL.js +0 -1
- package/dist/chunk-STYSP6KL.cjs +0 -1
- package/dist/chunk-UBOWSXW3.js +0 -1
- package/dist/chunk-UNBXKCNN.js +0 -1
- package/dist/chunk-VY634F3J.js +0 -1
- package/dist/chunk-WQP2FSVI.js +0 -1
- package/dist/chunk-WYYAPI4G.cjs +0 -1
- package/dist/chunk-WZFHEUWT.cjs +0 -1
- package/dist/chunk-XALFCQKD.cjs +0 -1
- package/dist/chunk-YWPTI2QO.cjs +0 -1
- package/dist/chunk-YWXQIFVZ.js +0 -3
- package/dist/chunk-YZ4HRYSL.cjs +0 -1
- package/dist/chunk-Z54LVUDS.js +0 -1
- package/dist/chunk-ZWMB3QLR.cjs +0 -3
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkG5NYLGM5cjs = require('./chunk-G5NYLGM5.cjs');
|
|
4
|
+
|
|
5
|
+
// src/signers/passkey.ts
|
|
6
|
+
var _ox = require('ox');
|
|
7
|
+
var PasskeySigner = class {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.type = "passkey";
|
|
11
|
+
this.id = config.id;
|
|
12
|
+
}
|
|
13
|
+
locator() {
|
|
14
|
+
return this.config.locator;
|
|
15
|
+
}
|
|
16
|
+
signMessage(message) {
|
|
17
|
+
return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
|
|
18
|
+
if (this.config.onSignWithPasskey) {
|
|
19
|
+
return yield this.config.onSignWithPasskey(message);
|
|
20
|
+
}
|
|
21
|
+
const { signature, metadata } = yield _ox.WebAuthnP256.sign({
|
|
22
|
+
credentialId: this.id,
|
|
23
|
+
challenge: message
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
signature: {
|
|
27
|
+
r: `0x${signature.r.toString(16)}`,
|
|
28
|
+
s: `0x${signature.s.toString(16)}`
|
|
29
|
+
},
|
|
30
|
+
metadata
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
signTransaction(transaction) {
|
|
35
|
+
return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
|
|
36
|
+
return yield this.signMessage(transaction);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
exports.PasskeySigner = PasskeySigner;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkG5NYLGM5cjs = require('./chunk-G5NYLGM5.cjs');
|
|
4
|
+
|
|
5
|
+
// src/signers/evm-api-key.ts
|
|
6
|
+
var EVMApiKeySigner = class {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.type = "api-key";
|
|
10
|
+
}
|
|
11
|
+
locator() {
|
|
12
|
+
return this.config.locator;
|
|
13
|
+
}
|
|
14
|
+
signMessage() {
|
|
15
|
+
return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
|
|
16
|
+
return yield Promise.reject(
|
|
17
|
+
new Error(
|
|
18
|
+
"API key signers do not support direct message signing - signatures are handled automatically by the backend"
|
|
19
|
+
)
|
|
20
|
+
);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
signTransaction() {
|
|
24
|
+
return _chunkG5NYLGM5cjs.__async.call(void 0, this, null, function* () {
|
|
25
|
+
return yield Promise.reject(
|
|
26
|
+
new Error(
|
|
27
|
+
"API key signers do not support direct transaction signing - transaction are handled automatically by the backend"
|
|
28
|
+
)
|
|
29
|
+
);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
exports.EVMApiKeySigner = EVMApiKeySigner;
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NcsIframeManager
|
|
3
|
+
} from "./chunk-7JFVG4IY.js";
|
|
4
|
+
import {
|
|
5
|
+
AuthRejectedError
|
|
6
|
+
} from "./chunk-WJUPOCKJ.js";
|
|
7
|
+
import {
|
|
8
|
+
__async,
|
|
9
|
+
__spreadProps,
|
|
10
|
+
__spreadValues
|
|
11
|
+
} from "./chunk-FPMW7Q5O.js";
|
|
12
|
+
|
|
13
|
+
// src/signers/non-custodial/ncs-signer.ts
|
|
14
|
+
import { validateAPIKey } from "@crossmint/common-sdk-base";
|
|
15
|
+
var NonCustodialSigner = class {
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.config = config;
|
|
18
|
+
this._needsAuth = true;
|
|
19
|
+
this._authPromise = null;
|
|
20
|
+
this._initializationPromise = null;
|
|
21
|
+
if (typeof window !== "undefined") {
|
|
22
|
+
this.initialize();
|
|
23
|
+
}
|
|
24
|
+
this.type = this.config.type;
|
|
25
|
+
}
|
|
26
|
+
locator() {
|
|
27
|
+
return this.config.locator;
|
|
28
|
+
}
|
|
29
|
+
address() {
|
|
30
|
+
return this.config.address;
|
|
31
|
+
}
|
|
32
|
+
initialize() {
|
|
33
|
+
return __async(this, null, function* () {
|
|
34
|
+
if (this.config.clientTEEConnection == null) {
|
|
35
|
+
const parsedAPIKey = validateAPIKey(this.config.crossmint.apiKey);
|
|
36
|
+
if (!parsedAPIKey.isValid) {
|
|
37
|
+
throw new Error("Invalid API key");
|
|
38
|
+
}
|
|
39
|
+
const iframeManager = new NcsIframeManager({ environment: parsedAPIKey.environment });
|
|
40
|
+
this.config.clientTEEConnection = yield iframeManager.initialize();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
getTEEConnection() {
|
|
45
|
+
return __async(this, null, function* () {
|
|
46
|
+
if (this.config.clientTEEConnection == null) {
|
|
47
|
+
if (this._initializationPromise) {
|
|
48
|
+
yield this._initializationPromise;
|
|
49
|
+
return this.config.clientTEEConnection;
|
|
50
|
+
}
|
|
51
|
+
this._initializationPromise = this.initializeTEEConnection();
|
|
52
|
+
try {
|
|
53
|
+
yield this._initializationPromise;
|
|
54
|
+
} finally {
|
|
55
|
+
this._initializationPromise = null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return this.config.clientTEEConnection;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
initializeTEEConnection() {
|
|
62
|
+
return __async(this, null, function* () {
|
|
63
|
+
console.warn("TEE connection is not initialized, initializing now...");
|
|
64
|
+
const parsedAPIKey = validateAPIKey(this.config.crossmint.apiKey);
|
|
65
|
+
if (!parsedAPIKey.isValid) {
|
|
66
|
+
throw new Error("Invalid API key");
|
|
67
|
+
}
|
|
68
|
+
const iframeManager = new NcsIframeManager({ environment: parsedAPIKey.environment });
|
|
69
|
+
this.config.clientTEEConnection = yield iframeManager.initialize();
|
|
70
|
+
if (this.config.clientTEEConnection == null) {
|
|
71
|
+
throw new Error("Failed to initialize TEE connection");
|
|
72
|
+
}
|
|
73
|
+
console.log("TEE connection initialized successfully");
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
handleAuthRequired() {
|
|
77
|
+
return __async(this, null, function* () {
|
|
78
|
+
var _a, _b;
|
|
79
|
+
const clientTEEConnection = yield this.getTEEConnection();
|
|
80
|
+
if (this.config.onAuthRequired == null) {
|
|
81
|
+
throw new Error(
|
|
82
|
+
`${this.type} signer requires the onAuthRequired callback to handle OTP verification. This callback manages the authentication flow (sending OTP and verifying user input). If using our React/React Native SDK, this is handled automatically by the provider. For other environments, implement: onAuthRequired: (needsAuth, sendEmailWithOtp, verifyOtp, reject) => { /* your UI logic */ }`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
const signerResponse = yield clientTEEConnection.sendAction({
|
|
86
|
+
event: "request:get-status",
|
|
87
|
+
responseEvent: "response:get-status",
|
|
88
|
+
data: {
|
|
89
|
+
authData: {
|
|
90
|
+
jwt: (_b = (_a = this.config.crossmint.experimental_customAuth) == null ? void 0 : _a.jwt) != null ? _b : "",
|
|
91
|
+
apiKey: this.config.crossmint.apiKey
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
options: __spreadProps(__spreadValues({}, DEFAULT_EVENT_OPTIONS), {
|
|
95
|
+
maxRetries: 5
|
|
96
|
+
})
|
|
97
|
+
});
|
|
98
|
+
if ((signerResponse == null ? void 0 : signerResponse.status) !== "success") {
|
|
99
|
+
throw new Error(signerResponse == null ? void 0 : signerResponse.error);
|
|
100
|
+
}
|
|
101
|
+
if (signerResponse.signerStatus === "ready") {
|
|
102
|
+
this._needsAuth = false;
|
|
103
|
+
return;
|
|
104
|
+
} else {
|
|
105
|
+
this._needsAuth = true;
|
|
106
|
+
}
|
|
107
|
+
const { promise, resolve, reject } = this.createAuthPromise();
|
|
108
|
+
this._authPromise = { promise, resolve, reject };
|
|
109
|
+
if (this.config.onAuthRequired) {
|
|
110
|
+
try {
|
|
111
|
+
yield this.config.onAuthRequired(
|
|
112
|
+
this._needsAuth,
|
|
113
|
+
() => this.sendMessageWithOtp(),
|
|
114
|
+
(otp) => this.verifyOtp(otp),
|
|
115
|
+
() => __async(this, null, function* () {
|
|
116
|
+
this._needsAuth = false;
|
|
117
|
+
if (this.config.onAuthRequired != null) {
|
|
118
|
+
yield this.config.onAuthRequired(
|
|
119
|
+
this._needsAuth,
|
|
120
|
+
() => this.sendMessageWithOtp(),
|
|
121
|
+
(otp) => this.verifyOtp(otp),
|
|
122
|
+
() => {
|
|
123
|
+
var _a2;
|
|
124
|
+
return (_a2 = this._authPromise) == null ? void 0 : _a2.reject(new AuthRejectedError());
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
reject(new AuthRejectedError());
|
|
129
|
+
})
|
|
130
|
+
);
|
|
131
|
+
} catch (error) {
|
|
132
|
+
reject(error);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
yield promise;
|
|
137
|
+
} catch (error) {
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
ensureAuthenticated() {
|
|
143
|
+
return __async(this, null, function* () {
|
|
144
|
+
yield this.handleAuthRequired();
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
getJwtOrThrow() {
|
|
148
|
+
var _a;
|
|
149
|
+
const jwt = (_a = this.config.crossmint.experimental_customAuth) == null ? void 0 : _a.jwt;
|
|
150
|
+
if (jwt == null) {
|
|
151
|
+
throw new Error("JWT is required");
|
|
152
|
+
}
|
|
153
|
+
return jwt;
|
|
154
|
+
}
|
|
155
|
+
createAuthPromise() {
|
|
156
|
+
let resolvePromise;
|
|
157
|
+
let rejectPromise;
|
|
158
|
+
const promise = new Promise((resolve, reject) => {
|
|
159
|
+
resolvePromise = resolve;
|
|
160
|
+
rejectPromise = reject;
|
|
161
|
+
});
|
|
162
|
+
return { promise, resolve: resolvePromise, reject: rejectPromise };
|
|
163
|
+
}
|
|
164
|
+
sendMessageWithOtp() {
|
|
165
|
+
return __async(this, null, function* () {
|
|
166
|
+
var _a, _b, _c;
|
|
167
|
+
const handshakeParent = yield this.getTEEConnection();
|
|
168
|
+
const authId = this.getAuthId();
|
|
169
|
+
const response = yield handshakeParent.sendAction({
|
|
170
|
+
event: "request:start-onboarding",
|
|
171
|
+
responseEvent: "response:start-onboarding",
|
|
172
|
+
data: {
|
|
173
|
+
authData: {
|
|
174
|
+
jwt: (_b = (_a = this.config.crossmint.experimental_customAuth) == null ? void 0 : _a.jwt) != null ? _b : "",
|
|
175
|
+
apiKey: this.config.crossmint.apiKey
|
|
176
|
+
},
|
|
177
|
+
data: { authId }
|
|
178
|
+
},
|
|
179
|
+
options: __spreadProps(__spreadValues({}, DEFAULT_EVENT_OPTIONS), {
|
|
180
|
+
maxRetries: 3
|
|
181
|
+
})
|
|
182
|
+
});
|
|
183
|
+
if ((response == null ? void 0 : response.status) === "success" && response.signerStatus === "ready") {
|
|
184
|
+
this._needsAuth = false;
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if ((response == null ? void 0 : response.status) === "error") {
|
|
188
|
+
console.error("[sendMessageWithOtp] Failed to send OTP:", response);
|
|
189
|
+
(_c = this._authPromise) == null ? void 0 : _c.reject(new Error(response.error || "Failed to initiate OTP process."));
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
getAuthId() {
|
|
194
|
+
if (this.config.type === "email") {
|
|
195
|
+
return `email:${this.config.email}`;
|
|
196
|
+
}
|
|
197
|
+
return `phone:${this.config.phone}`;
|
|
198
|
+
}
|
|
199
|
+
verifyOtp(encryptedOtp) {
|
|
200
|
+
return __async(this, null, function* () {
|
|
201
|
+
var _a, _b, _c, _d, _e;
|
|
202
|
+
let response;
|
|
203
|
+
try {
|
|
204
|
+
const handshakeParent = yield this.getTEEConnection();
|
|
205
|
+
response = yield handshakeParent.sendAction({
|
|
206
|
+
event: "request:complete-onboarding",
|
|
207
|
+
responseEvent: "response:complete-onboarding",
|
|
208
|
+
data: {
|
|
209
|
+
authData: {
|
|
210
|
+
jwt: (_b = (_a = this.config.crossmint.experimental_customAuth) == null ? void 0 : _a.jwt) != null ? _b : "",
|
|
211
|
+
apiKey: this.config.crossmint.apiKey
|
|
212
|
+
},
|
|
213
|
+
data: {
|
|
214
|
+
onboardingAuthentication: { encryptedOtp }
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
options: __spreadProps(__spreadValues({}, DEFAULT_EVENT_OPTIONS), {
|
|
218
|
+
maxRetries: 3
|
|
219
|
+
})
|
|
220
|
+
});
|
|
221
|
+
} catch (err) {
|
|
222
|
+
console.error("[verifyOtp] Error sending OTP validation request:", err);
|
|
223
|
+
this._needsAuth = true;
|
|
224
|
+
(_c = this._authPromise) == null ? void 0 : _c.reject(err);
|
|
225
|
+
throw err;
|
|
226
|
+
}
|
|
227
|
+
if ((response == null ? void 0 : response.status) === "success") {
|
|
228
|
+
this._needsAuth = false;
|
|
229
|
+
if (this.config.onAuthRequired != null) {
|
|
230
|
+
yield this.config.onAuthRequired(
|
|
231
|
+
this._needsAuth,
|
|
232
|
+
() => this.sendMessageWithOtp(),
|
|
233
|
+
(otp) => this.verifyOtp(otp),
|
|
234
|
+
() => {
|
|
235
|
+
var _a2;
|
|
236
|
+
return (_a2 = this._authPromise) == null ? void 0 : _a2.reject(new AuthRejectedError());
|
|
237
|
+
}
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
(_d = this._authPromise) == null ? void 0 : _d.resolve();
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
console.error("[verifyOtp] Failed to validate OTP:", JSON.stringify(response, null, 2));
|
|
244
|
+
this._needsAuth = true;
|
|
245
|
+
const errorMessage = (response == null ? void 0 : response.status) === "error" ? response.error : "Failed to validate encrypted OTP";
|
|
246
|
+
const error = new Error(errorMessage);
|
|
247
|
+
(_e = this._authPromise) == null ? void 0 : _e.reject(error);
|
|
248
|
+
throw error;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Export the private key for this signer
|
|
253
|
+
* @throws {Error} If signer is not authenticated
|
|
254
|
+
*/
|
|
255
|
+
_exportPrivateKey(exportTEEConnection) {
|
|
256
|
+
return __async(this, null, function* () {
|
|
257
|
+
yield this.handleAuthRequired();
|
|
258
|
+
const jwt = this.getJwtOrThrow();
|
|
259
|
+
const { scheme, encoding } = this.getChainKeyParams();
|
|
260
|
+
const response = yield exportTEEConnection.sendAction({
|
|
261
|
+
event: "request:export-signer",
|
|
262
|
+
responseEvent: "response:export-signer",
|
|
263
|
+
data: {
|
|
264
|
+
authData: {
|
|
265
|
+
jwt,
|
|
266
|
+
apiKey: this.config.crossmint.apiKey
|
|
267
|
+
},
|
|
268
|
+
data: {
|
|
269
|
+
scheme,
|
|
270
|
+
encoding
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
options: DEFAULT_EVENT_OPTIONS
|
|
274
|
+
});
|
|
275
|
+
if ((response == null ? void 0 : response.status) === "error") {
|
|
276
|
+
throw new Error(response.error || "Failed to export private key");
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
var DEFAULT_EVENT_OPTIONS = {
|
|
282
|
+
timeoutMs: 1e4,
|
|
283
|
+
intervalMs: 5e3
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
export {
|
|
287
|
+
NonCustodialSigner,
|
|
288
|
+
DEFAULT_EVENT_OPTIONS
|
|
289
|
+
};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkNIBKCMQ2cjs = require('./chunk-NIBKCMQ2.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk55V4VMTXcjs = require('./chunk-55V4VMTX.cjs');
|
|
7
|
+
|
|
8
|
+
// src/chains/chains.ts
|
|
9
|
+
var _commonsdkbase = require('@crossmint/common-sdk-base');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
var _chains = require('viem/chains');
|
|
32
|
+
var TESTNET_AA_CHAINS = [
|
|
33
|
+
_commonsdkbase.BlockchainIncludingTestnet.ABSTRACT_TESTNET,
|
|
34
|
+
_commonsdkbase.BlockchainIncludingTestnet.ARBITRUM_SEPOLIA,
|
|
35
|
+
_commonsdkbase.BlockchainIncludingTestnet.BASE_SEPOLIA,
|
|
36
|
+
_commonsdkbase.BlockchainIncludingTestnet.CURTIS,
|
|
37
|
+
_commonsdkbase.BlockchainIncludingTestnet.ETHEREUM_SEPOLIA,
|
|
38
|
+
_commonsdkbase.BlockchainIncludingTestnet.FLOW_TESTNET,
|
|
39
|
+
_commonsdkbase.BlockchainIncludingTestnet.MANTLE_SEPOLIA,
|
|
40
|
+
_commonsdkbase.BlockchainIncludingTestnet.MODE_SEPOLIA,
|
|
41
|
+
_commonsdkbase.BlockchainIncludingTestnet.OPTIMISM_SEPOLIA,
|
|
42
|
+
_commonsdkbase.BlockchainIncludingTestnet.PLUME_TESTNET,
|
|
43
|
+
_commonsdkbase.BlockchainIncludingTestnet.POLYGON_AMOY,
|
|
44
|
+
_commonsdkbase.BlockchainIncludingTestnet.SCROLL_SEPOLIA,
|
|
45
|
+
_commonsdkbase.BlockchainIncludingTestnet.SEI_ATLANTIC_2_TESTNET,
|
|
46
|
+
_commonsdkbase.BlockchainIncludingTestnet.STORY_TESTNET,
|
|
47
|
+
_commonsdkbase.BlockchainIncludingTestnet.WORLD_CHAIN_SEPOLIA,
|
|
48
|
+
_commonsdkbase.BlockchainIncludingTestnet.ZORA_SEPOLIA
|
|
49
|
+
];
|
|
50
|
+
var PRODUCTION_AA_CHAINS = [
|
|
51
|
+
_commonsdkbase.BlockchainIncludingTestnet.ABSTRACT,
|
|
52
|
+
_commonsdkbase.BlockchainIncludingTestnet.APECHAIN,
|
|
53
|
+
_commonsdkbase.BlockchainIncludingTestnet.ARBITRUM,
|
|
54
|
+
_commonsdkbase.BlockchainIncludingTestnet.ARBITRUMNOVA,
|
|
55
|
+
_commonsdkbase.BlockchainIncludingTestnet.BASE,
|
|
56
|
+
_commonsdkbase.BlockchainIncludingTestnet.BSC,
|
|
57
|
+
_commonsdkbase.BlockchainIncludingTestnet.FLOW,
|
|
58
|
+
_commonsdkbase.BlockchainIncludingTestnet.MANTLE,
|
|
59
|
+
_commonsdkbase.BlockchainIncludingTestnet.MODE,
|
|
60
|
+
_commonsdkbase.BlockchainIncludingTestnet.OPTIMISM,
|
|
61
|
+
_commonsdkbase.BlockchainIncludingTestnet.PLUME,
|
|
62
|
+
_commonsdkbase.BlockchainIncludingTestnet.POLYGON,
|
|
63
|
+
_commonsdkbase.BlockchainIncludingTestnet.SCROLL,
|
|
64
|
+
_commonsdkbase.BlockchainIncludingTestnet.SEI_PACIFIC_1,
|
|
65
|
+
_commonsdkbase.BlockchainIncludingTestnet.SHAPE,
|
|
66
|
+
_commonsdkbase.BlockchainIncludingTestnet.STORY,
|
|
67
|
+
_commonsdkbase.BlockchainIncludingTestnet.WORLDCHAIN,
|
|
68
|
+
_commonsdkbase.BlockchainIncludingTestnet.ZORA
|
|
69
|
+
];
|
|
70
|
+
function toViemChain(chain) {
|
|
71
|
+
switch (chain) {
|
|
72
|
+
case _commonsdkbase.BlockchainIncludingTestnet.BASE_SEPOLIA:
|
|
73
|
+
return _chains.baseSepolia;
|
|
74
|
+
case _commonsdkbase.BlockchainIncludingTestnet.BASE:
|
|
75
|
+
return _chains.base;
|
|
76
|
+
case _commonsdkbase.BlockchainIncludingTestnet.POLYGON_AMOY:
|
|
77
|
+
return _chains.polygonAmoy;
|
|
78
|
+
case _commonsdkbase.BlockchainIncludingTestnet.POLYGON:
|
|
79
|
+
return _chains.polygon;
|
|
80
|
+
case _commonsdkbase.BlockchainIncludingTestnet.OPTIMISM_SEPOLIA:
|
|
81
|
+
return _chains.optimismSepolia;
|
|
82
|
+
case _commonsdkbase.BlockchainIncludingTestnet.OPTIMISM:
|
|
83
|
+
return _chains.optimism;
|
|
84
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ARBITRUM_SEPOLIA:
|
|
85
|
+
return _chains.arbitrumSepolia;
|
|
86
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ARBITRUM:
|
|
87
|
+
return _chains.arbitrum;
|
|
88
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ARBITRUMNOVA:
|
|
89
|
+
return _chains.arbitrumNova;
|
|
90
|
+
case _commonsdkbase.BlockchainIncludingTestnet.STORY_TESTNET:
|
|
91
|
+
return _chunk55V4VMTXcjs.storyTestnet;
|
|
92
|
+
case _commonsdkbase.BlockchainIncludingTestnet.STORY:
|
|
93
|
+
return _chunkNIBKCMQ2cjs.story;
|
|
94
|
+
case _commonsdkbase.BlockchainIncludingTestnet.MODE_SEPOLIA:
|
|
95
|
+
return _chains.modeTestnet;
|
|
96
|
+
case _commonsdkbase.BlockchainIncludingTestnet.MODE:
|
|
97
|
+
return _chains.mode;
|
|
98
|
+
case _commonsdkbase.BlockchainIncludingTestnet.BSC:
|
|
99
|
+
return _chains.bsc;
|
|
100
|
+
case _commonsdkbase.BlockchainIncludingTestnet.SHAPE:
|
|
101
|
+
return _chains.shape;
|
|
102
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ZORA:
|
|
103
|
+
return _chains.zora;
|
|
104
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ZORA_SEPOLIA:
|
|
105
|
+
return _chains.zoraSepolia;
|
|
106
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ETHEREUM_SEPOLIA:
|
|
107
|
+
return _chains.sepolia;
|
|
108
|
+
case _commonsdkbase.BlockchainIncludingTestnet.FLOW:
|
|
109
|
+
return _chains.flowMainnet;
|
|
110
|
+
case _commonsdkbase.BlockchainIncludingTestnet.FLOW_TESTNET:
|
|
111
|
+
return _chains.flowTestnet;
|
|
112
|
+
case _commonsdkbase.BlockchainIncludingTestnet.PLUME_TESTNET:
|
|
113
|
+
return _chains.plumeTestnet;
|
|
114
|
+
case _commonsdkbase.BlockchainIncludingTestnet.PLUME:
|
|
115
|
+
return _chains.plume;
|
|
116
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ABSTRACT:
|
|
117
|
+
case _commonsdkbase.BlockchainIncludingTestnet.ABSTRACT_TESTNET:
|
|
118
|
+
case _commonsdkbase.BlockchainIncludingTestnet.APECHAIN:
|
|
119
|
+
case _commonsdkbase.BlockchainIncludingTestnet.MANTLE:
|
|
120
|
+
case _commonsdkbase.BlockchainIncludingTestnet.MANTLE_SEPOLIA:
|
|
121
|
+
case _commonsdkbase.BlockchainIncludingTestnet.SCROLL:
|
|
122
|
+
case _commonsdkbase.BlockchainIncludingTestnet.SCROLL_SEPOLIA:
|
|
123
|
+
case _commonsdkbase.BlockchainIncludingTestnet.SEI_PACIFIC_1:
|
|
124
|
+
case _commonsdkbase.BlockchainIncludingTestnet.SEI_ATLANTIC_2_TESTNET:
|
|
125
|
+
case _commonsdkbase.BlockchainIncludingTestnet.CURTIS:
|
|
126
|
+
case _commonsdkbase.BlockchainIncludingTestnet.WORLDCHAIN:
|
|
127
|
+
case _commonsdkbase.BlockchainIncludingTestnet.WORLD_CHAIN_SEPOLIA:
|
|
128
|
+
throw new Error(
|
|
129
|
+
`Chain ${chain} is not yet supported in toViemChain function. Please add the appropriate viem chain definition.`
|
|
130
|
+
);
|
|
131
|
+
default:
|
|
132
|
+
throw new Error(`Unknown chain: ${chain}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
exports.toViemChain = toViemChain;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TransactionFailedError
|
|
3
|
+
} from "./chunk-SGINWAB6.js";
|
|
4
|
+
import {
|
|
5
|
+
__async
|
|
6
|
+
} from "./chunk-FPMW7Q5O.js";
|
|
7
|
+
|
|
8
|
+
// src/signers/solana-external-wallet.ts
|
|
9
|
+
import { PublicKey, VersionedTransaction } from "@solana/web3.js";
|
|
10
|
+
import base58 from "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 __async(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 __async(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 = base58.decode(transaction);
|
|
40
|
+
const deserializedTransaction = VersionedTransaction.deserialize(transactionBytes);
|
|
41
|
+
const signedTxn = yield this.onSignTransaction(deserializedTransaction);
|
|
42
|
+
const externalWalletPublicKey = new PublicKey(this._address);
|
|
43
|
+
const signerIndex = signedTxn.message.staticAccountKeys.findIndex((key) => key.equals(externalWalletPublicKey));
|
|
44
|
+
if (signerIndex === -1) {
|
|
45
|
+
throw new TransactionFailedError("Wallet public key not found in transaction signers");
|
|
46
|
+
}
|
|
47
|
+
const validSignature = signedTxn.signatures[signerIndex];
|
|
48
|
+
if (validSignature == null) {
|
|
49
|
+
throw new TransactionFailedError("No valid signature found in the transaction");
|
|
50
|
+
}
|
|
51
|
+
const signatureBytes = new Uint8Array(Object.values(validSignature));
|
|
52
|
+
return { signature: base58.encode(signatureBytes) };
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export {
|
|
58
|
+
SolanaExternalWalletSigner
|
|
59
|
+
};
|