@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.
- package/dist/api/client.cjs +9 -1
- package/dist/api/client.d.cts +4 -4
- package/dist/api/client.d.ts +4 -4
- package/dist/api/client.js +9 -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 +11 -1
- package/dist/api/index.d.cts +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +11 -1
- package/dist/api/types.d.cts +4 -2
- package/dist/api/types.d.ts +4 -2
- 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-2DHIAP2S.js +58 -0
- package/dist/chunk-2T5HHKUI.js +19 -0
- package/dist/chunk-2VOEAAFA.cjs +200 -0
- package/dist/chunk-3U6UAYOV.js +25 -0
- package/dist/chunk-4BMNDPJ4.cjs +92 -0
- package/dist/chunk-4QGBVHV3.js +629 -0
- package/dist/chunk-55V4VMTX.cjs +25 -0
- package/dist/chunk-5H5YHSCK.js +200 -0
- package/dist/chunk-7ECQJFYM.cjs +63 -0
- package/dist/chunk-7GHQBCRV.cjs +57 -0
- package/dist/chunk-7JFVG4IY.js +59 -0
- package/dist/chunk-7QL5JVK4.js +262 -0
- package/dist/chunk-AJCWEEWH.js +73 -0
- package/dist/chunk-AL77JANE.js +36 -0
- package/dist/chunk-BAHU3KZE.cjs +75 -0
- package/dist/chunk-BAULM7A2.js +289 -0
- package/dist/chunk-BFAU2NL6.js +175 -0
- package/dist/chunk-BSC55MYK.cjs +43 -0
- package/dist/chunk-CHGPNMRL.cjs +36 -0
- package/dist/chunk-CN2GVFBU.cjs +138 -0
- package/dist/chunk-COVOGZ4S.js +80 -0
- package/dist/chunk-DPERJZBG.js +63 -0
- package/dist/chunk-DQCXGBZM.js +59 -0
- package/dist/chunk-E4LJ7252.cjs +289 -0
- package/dist/chunk-EM6H7EUU.cjs +80 -0
- package/dist/chunk-EYJQSDDI.js +43 -0
- package/dist/chunk-FAGFW4AR.js +16 -0
- package/dist/chunk-FK23BDCU.js +87 -0
- package/dist/chunk-FPMW7Q5O.js +55 -0
- package/dist/chunk-G5NYLGM5.cjs +55 -0
- package/dist/chunk-HHDDI3CS.js +75 -0
- package/dist/chunk-HNRM45KF.cjs +87 -0
- package/dist/chunk-JICSSJOK.js +57 -0
- package/dist/chunk-KS63YEQ4.js +138 -0
- package/dist/chunk-KT3CVXFG.js +9 -0
- package/dist/chunk-LLFD22UQ.cjs +36 -0
- package/dist/chunk-MPGPBFUZ.cjs +16 -0
- package/dist/chunk-MYKPHXUR.cjs +629 -0
- package/dist/chunk-MZBFXUHT.js +63 -0
- package/dist/chunk-NIBKCMQ2.cjs +19 -0
- package/dist/chunk-OD5RGQ4Z.js +92 -0
- package/dist/chunk-PSPNZEG4.cjs +175 -0
- package/dist/chunk-R2OY54EJ.cjs +59 -0
- package/dist/chunk-RHR6P2KP.cjs +15 -0
- package/dist/chunk-RSPJPRQW.cjs +262 -0
- package/dist/chunk-RTRDZB52.js +778 -0
- package/dist/chunk-SG7WIZLK.cjs +63 -0
- package/dist/chunk-SGINWAB6.js +155 -0
- package/dist/chunk-TK3EUCQ4.cjs +59 -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-XC2V34TS.cjs +155 -0
- package/dist/chunk-XH3ARVJG.cjs +58 -0
- package/dist/chunk-YBA7WO32.cjs +44 -0
- package/dist/chunk-YOJETSLN.cjs +73 -0
- package/dist/chunk-ZT7EGOCI.cjs +9 -0
- package/dist/chunk-ZTGRDOOH.js +36 -0
- package/dist/index.cjs +55 -1
- package/dist/index.js +55 -1
- package/dist/sdk.cjs +31 -1
- package/dist/sdk.js +31 -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 +8 -1
- package/dist/utils/signer-validation.js +8 -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 +25 -1
- package/dist/wallets/wallet-factory.js +25 -1
- package/dist/wallets/wallet.cjs +16 -1
- package/dist/wallets/wallet.d.cts +12 -1
- package/dist/wallets/wallet.d.ts +12 -1
- package/dist/wallets/wallet.js +16 -1
- package/package.json +4 -4
- package/dist/chunk-23ZHV3VD.js +0 -1
- 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-3IZNWAZE.cjs +0 -1
- package/dist/chunk-4AJT6I6Q.js +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-73RCBQG5.js +0 -1
- package/dist/chunk-7JIPYRKX.js +0 -1
- package/dist/chunk-7WKKOG6H.cjs +0 -3
- package/dist/chunk-BQZES4ST.js +0 -1
- package/dist/chunk-BW7YYVZE.js +0 -1
- package/dist/chunk-C3T63EC7.cjs +0 -1
- package/dist/chunk-CVZ3RNWV.cjs +0 -1
- package/dist/chunk-GEY574TH.cjs +0 -1
- package/dist/chunk-H4T4IXCF.js +0 -1
- package/dist/chunk-HJ5EDMTA.js +0 -1
- package/dist/chunk-HMPMFEPS.cjs +0 -1
- package/dist/chunk-HPHVJ6BA.cjs +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-KHSWQE6W.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-L5L64FWM.js +0 -1
- package/dist/chunk-LW6JSI4J.js +0 -1
- package/dist/chunk-M4TOGGLV.cjs +0 -1
- package/dist/chunk-MQP5VZCA.cjs +0 -1
- package/dist/chunk-NEJPPLYW.cjs +0 -1
- package/dist/chunk-NIKULSJK.cjs +0 -1
- package/dist/chunk-NT4EICOB.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-R6VFNNAA.js +0 -3
- package/dist/chunk-RJZV72YF.js +0 -1
- package/dist/chunk-S3DYQVRD.js +0 -1
- package/dist/chunk-SHVVA55W.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-VXFSSEA4.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-XIRT2EZN.cjs +0 -1
- package/dist/chunk-YWPTI2QO.cjs +0 -1
- 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;
|