@vleap/warps-adapter-evm 0.2.0-beta.58 → 0.2.0-beta.60

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/index.js CHANGED
@@ -51,10 +51,10 @@ __export(index_exports, {
51
51
  module.exports = __toCommonJS(index_exports);
52
52
 
53
53
  // src/chains/arbitrum.ts
54
- var import_warps15 = require("@vleap/warps");
54
+ var import_warps16 = require("@vleap/warps");
55
55
 
56
56
  // src/WarpEvmDataLoader.ts
57
- var import_warps10 = require("@vleap/warps");
57
+ var import_warps11 = require("@vleap/warps");
58
58
  var import_ethers3 = require("ethers");
59
59
 
60
60
  // src/providers/UniswapService.ts
@@ -146,11 +146,10 @@ var UniswapService = _UniswapService;
146
146
  // src/providers/PrivateKeyWalletProvider.ts
147
147
  var import_ethers = require("ethers");
148
148
  var import_warps2 = require("@vleap/warps");
149
- var PrivateKeyWalletProvider = class {
150
- constructor(config, chain, rpcProvider) {
149
+ var _PrivateKeyWalletProvider = class _PrivateKeyWalletProvider {
150
+ constructor(config, chain) {
151
151
  this.config = config;
152
152
  this.chain = chain;
153
- this.rpcProvider = rpcProvider;
154
153
  this.wallet = null;
155
154
  }
156
155
  async getAddress() {
@@ -193,21 +192,15 @@ var PrivateKeyWalletProvider = class {
193
192
  return this.getWallet();
194
193
  }
195
194
  create(mnemonic) {
196
- const wallet = import_ethers.ethers.Wallet.fromPhrase(mnemonic);
197
- return {
198
- provider: "privateKey",
199
- address: wallet.address,
200
- privateKey: wallet.privateKey,
201
- mnemonic
202
- };
195
+ throw new Error("PrivateKeyWalletProvider does not support creating wallets from mnemonics. Use MnemonicWalletProvider instead.");
203
196
  }
204
197
  generate() {
205
198
  const wallet = import_ethers.ethers.Wallet.createRandom();
206
199
  return {
207
- provider: "privateKey",
200
+ provider: _PrivateKeyWalletProvider.PROVIDER_NAME,
208
201
  address: wallet.address,
209
202
  privateKey: wallet.privateKey,
210
- mnemonic: wallet.mnemonic?.phrase || null
203
+ mnemonic: null
211
204
  };
212
205
  }
213
206
  getWallet() {
@@ -218,15 +211,16 @@ var PrivateKeyWalletProvider = class {
218
211
  return this.wallet;
219
212
  }
220
213
  };
214
+ _PrivateKeyWalletProvider.PROVIDER_NAME = "privateKey";
215
+ var PrivateKeyWalletProvider = _PrivateKeyWalletProvider;
221
216
 
222
217
  // src/providers/MnemonicWalletProvider.ts
223
218
  var import_ethers2 = require("ethers");
224
219
  var import_warps3 = require("@vleap/warps");
225
- var MnemonicWalletProvider = class {
226
- constructor(config, chain, rpcProvider) {
220
+ var _MnemonicWalletProvider = class _MnemonicWalletProvider {
221
+ constructor(config, chain) {
227
222
  this.config = config;
228
223
  this.chain = chain;
229
- this.rpcProvider = rpcProvider;
230
224
  this.wallet = null;
231
225
  }
232
226
  async getAddress() {
@@ -271,18 +265,18 @@ var MnemonicWalletProvider = class {
271
265
  create(mnemonic) {
272
266
  const wallet = import_ethers2.ethers.Wallet.fromPhrase(mnemonic);
273
267
  return {
274
- provider: "mnemonic",
268
+ provider: _MnemonicWalletProvider.PROVIDER_NAME,
275
269
  address: wallet.address,
276
- privateKey: wallet.privateKey,
270
+ privateKey: null,
277
271
  mnemonic
278
272
  };
279
273
  }
280
274
  generate() {
281
275
  const wallet = import_ethers2.ethers.Wallet.createRandom();
282
276
  return {
283
- provider: "mnemonic",
277
+ provider: _MnemonicWalletProvider.PROVIDER_NAME,
284
278
  address: wallet.address,
285
- privateKey: wallet.privateKey,
279
+ privateKey: null,
286
280
  mnemonic: wallet.mnemonic?.phrase || null
287
281
  };
288
282
  }
@@ -294,10 +288,43 @@ var MnemonicWalletProvider = class {
294
288
  return this.wallet;
295
289
  }
296
290
  };
291
+ _MnemonicWalletProvider.PROVIDER_NAME = "mnemonic";
292
+ var MnemonicWalletProvider = _MnemonicWalletProvider;
297
293
 
298
- // src/tokens/arbitrum.ts
294
+ // src/providers/ReadOnlyWalletProvider.ts
299
295
  var import_warps4 = require("@vleap/warps");
300
- var ArbitrumChain = import_warps4.WarpChainName.Arbitrum;
296
+ var ReadOnlyWalletProvider = class {
297
+ constructor(config, chain) {
298
+ this.config = config;
299
+ this.chain = chain;
300
+ }
301
+ async getAddress() {
302
+ return (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, this.chain.name);
303
+ }
304
+ async getPublicKey() {
305
+ return null;
306
+ }
307
+ async signTransaction(tx) {
308
+ const address = await this.getAddress();
309
+ throw new Error(`Wallet can not be used for signing: ${address}`);
310
+ }
311
+ async signMessage(message) {
312
+ const address = await this.getAddress();
313
+ throw new Error(`Wallet can not be used for signing: ${address}`);
314
+ }
315
+ create(mnemonic) {
316
+ const address = (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, this.chain.name);
317
+ throw new Error(`Wallet can not be used for signing: ${address}`);
318
+ }
319
+ generate() {
320
+ const address = (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, this.chain.name);
321
+ throw new Error(`Wallet can not be used for signing: ${address}`);
322
+ }
323
+ };
324
+
325
+ // src/tokens/arbitrum.ts
326
+ var import_warps5 = require("@vleap/warps");
327
+ var ArbitrumChain = import_warps5.WarpChainName.Arbitrum;
301
328
  var ArbitrumTokens = [
302
329
  {
303
330
  chain: ArbitrumChain,
@@ -334,8 +361,8 @@ var ArbitrumTokens = [
334
361
  ];
335
362
 
336
363
  // src/tokens/arbitrum-sepolia.ts
337
- var import_warps5 = require("@vleap/warps");
338
- var ArbitrumChain2 = import_warps5.WarpChainName.Arbitrum;
364
+ var import_warps6 = require("@vleap/warps");
365
+ var ArbitrumChain2 = import_warps6.WarpChainName.Arbitrum;
339
366
  var ArbitrumSepoliaTokens = [
340
367
  {
341
368
  chain: ArbitrumChain2,
@@ -364,8 +391,8 @@ var ArbitrumSepoliaTokens = [
364
391
  ];
365
392
 
366
393
  // src/tokens/base.ts
367
- var import_warps6 = require("@vleap/warps");
368
- var BaseChain = import_warps6.WarpChainName.Base;
394
+ var import_warps7 = require("@vleap/warps");
395
+ var BaseChain = import_warps7.WarpChainName.Base;
369
396
  var BaseTokens = [
370
397
  {
371
398
  chain: BaseChain,
@@ -410,8 +437,8 @@ var BaseTokens = [
410
437
  ];
411
438
 
412
439
  // src/tokens/base-sepolia.ts
413
- var import_warps7 = require("@vleap/warps");
414
- var BaseChain2 = import_warps7.WarpChainName.Base;
440
+ var import_warps8 = require("@vleap/warps");
441
+ var BaseChain2 = import_warps8.WarpChainName.Base;
415
442
  var BaseSepoliaTokens = [
416
443
  {
417
444
  chain: BaseChain2,
@@ -448,8 +475,8 @@ var BaseSepoliaTokens = [
448
475
  ];
449
476
 
450
477
  // src/tokens/ethereum.ts
451
- var import_warps8 = require("@vleap/warps");
452
- var EthereumChain = import_warps8.WarpChainName.Ethereum;
478
+ var import_warps9 = require("@vleap/warps");
479
+ var EthereumChain = import_warps9.WarpChainName.Ethereum;
453
480
  var EthereumTokens = [
454
481
  {
455
482
  chain: EthereumChain,
@@ -502,8 +529,8 @@ var EthereumTokens = [
502
529
  ];
503
530
 
504
531
  // src/tokens/ethereum-sepolia.ts
505
- var import_warps9 = require("@vleap/warps");
506
- var EthereumChain2 = import_warps9.WarpChainName.Ethereum;
532
+ var import_warps10 = require("@vleap/warps");
533
+ var EthereumChain2 = import_warps10.WarpChainName.Ethereum;
507
534
  var EthereumSepoliaTokens = [
508
535
  {
509
536
  chain: EthereumChain2,
@@ -585,10 +612,10 @@ var WarpEvmDataLoader = class {
585
612
  constructor(config, chain) {
586
613
  this.config = config;
587
614
  this.chain = chain;
588
- const providerConfig = (0, import_warps10.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
615
+ const providerConfig = (0, import_warps11.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
589
616
  const network = new import_ethers3.ethers.Network(this.chain.name, parseInt(this.chain.chainId));
590
617
  this.provider = new import_ethers3.ethers.JsonRpcProvider(providerConfig.url, network);
591
- this.cache = new import_warps10.WarpCache(config.cache?.type);
618
+ this.cache = new import_warps11.WarpCache(config.cache?.type);
592
619
  this.uniswapService = new UniswapService(this.cache, parseInt(this.chain.chainId));
593
620
  }
594
621
  async getAccount(address) {
@@ -624,7 +651,7 @@ var WarpEvmDataLoader = class {
624
651
  if (identifier === this.chain.nativeToken.identifier) {
625
652
  return this.chain.nativeToken;
626
653
  }
627
- const cacheKey = import_warps10.WarpCacheKey.Asset(this.config.env, this.chain.name, identifier);
654
+ const cacheKey = import_warps11.WarpCacheKey.Asset(this.config.env, this.chain.name, identifier);
628
655
  const cachedAsset = this.cache.get(cacheKey);
629
656
  if (cachedAsset) {
630
657
  return cachedAsset;
@@ -652,7 +679,7 @@ var WarpEvmDataLoader = class {
652
679
  decimals: metadata.decimals,
653
680
  logoUrl: metadata.logoUrl
654
681
  };
655
- this.cache.set(cacheKey, asset, import_warps10.CacheTtl.OneHour);
682
+ this.cache.set(cacheKey, asset, import_warps11.CacheTtl.OneHour);
656
683
  return asset;
657
684
  } catch (error) {
658
685
  return null;
@@ -737,7 +764,7 @@ var WarpEvmDataLoader = class {
737
764
  };
738
765
 
739
766
  // src/WarpEvmExecutor.ts
740
- var import_warps13 = require("@vleap/warps");
767
+ var import_warps14 = require("@vleap/warps");
741
768
  var import_ethers6 = require("ethers");
742
769
 
743
770
  // src/constants.ts
@@ -865,16 +892,16 @@ var SupportedEvmChainIds = [
865
892
  ];
866
893
 
867
894
  // src/WarpEvmOutput.ts
868
- var import_warps12 = require("@vleap/warps");
895
+ var import_warps13 = require("@vleap/warps");
869
896
  var import_ethers5 = require("ethers");
870
897
 
871
898
  // src/WarpEvmSerializer.ts
872
- var import_warps11 = require("@vleap/warps");
899
+ var import_warps12 = require("@vleap/warps");
873
900
  var import_ethers4 = require("ethers");
874
- var SplitParamsRegex = new RegExp(`${import_warps11.WarpConstants.ArgParamsSeparator}(.*)`);
901
+ var SplitParamsRegex = new RegExp(`${import_warps12.WarpConstants.ArgParamsSeparator}(.*)`);
875
902
  var WarpEvmSerializer = class {
876
903
  constructor() {
877
- this.coreSerializer = new import_warps11.WarpSerializer();
904
+ this.coreSerializer = new import_warps12.WarpSerializer();
878
905
  }
879
906
  typedToString(value) {
880
907
  if (typeof value === "string") {
@@ -903,9 +930,9 @@ var WarpEvmSerializer = class {
903
930
  }
904
931
  if (Array.isArray(value)) {
905
932
  if (value.length === 0) return `list:string:`;
906
- const types = value.map((item) => this.typedToString(item).split(import_warps11.WarpConstants.ArgParamsSeparator)[0]);
933
+ const types = value.map((item) => this.typedToString(item).split(import_warps12.WarpConstants.ArgParamsSeparator)[0]);
907
934
  const type = types[0];
908
- const values = value.map((item) => this.typedToString(item).split(import_warps11.WarpConstants.ArgParamsSeparator)[1]);
935
+ const values = value.map((item) => this.typedToString(item).split(import_warps12.WarpConstants.ArgParamsSeparator)[1]);
909
936
  return `list:${type}:${values.join(",")}`;
910
937
  }
911
938
  if (value === null || value === void 0) {
@@ -915,8 +942,8 @@ var WarpEvmSerializer = class {
915
942
  }
916
943
  typedToNative(value) {
917
944
  const stringValue = this.typedToString(value);
918
- const [type, ...valueParts] = stringValue.split(import_warps11.WarpConstants.ArgParamsSeparator);
919
- const nativeValue = valueParts.join(import_warps11.WarpConstants.ArgParamsSeparator);
945
+ const [type, ...valueParts] = stringValue.split(import_warps12.WarpConstants.ArgParamsSeparator);
946
+ const nativeValue = valueParts.join(import_warps12.WarpConstants.ArgParamsSeparator);
920
947
  return [type, this.parseNativeValue(type, nativeValue)];
921
948
  }
922
949
  nativeToTyped(type, value) {
@@ -968,7 +995,7 @@ var WarpEvmSerializer = class {
968
995
  }
969
996
  }
970
997
  stringToTyped(value) {
971
- const parts = value.split(import_warps11.WarpConstants.ArgParamsSeparator, 2);
998
+ const parts = value.split(import_warps12.WarpConstants.ArgParamsSeparator, 2);
972
999
  if (parts.length < 2) {
973
1000
  return value;
974
1001
  }
@@ -1027,14 +1054,14 @@ var WarpEvmOutput = class {
1027
1054
  this.config = config;
1028
1055
  this.chain = chain;
1029
1056
  this.serializer = new WarpEvmSerializer();
1030
- const providerConfig = (0, import_warps12.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
1057
+ const providerConfig = (0, import_warps13.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
1031
1058
  const network = new import_ethers5.ethers.Network(this.chain.name, parseInt(this.chain.chainId));
1032
1059
  this.provider = new import_ethers5.ethers.JsonRpcProvider(providerConfig.url, network);
1033
- this.cache = new import_warps12.WarpCache(config.cache?.type);
1060
+ this.cache = new import_warps13.WarpCache(config.cache?.type);
1034
1061
  }
1035
1062
  async getActionExecution(warp, actionIndex, tx) {
1036
- const inputs = this.cache.get(import_warps12.WarpCacheKey.WarpExecutable(this.config.env, warp.meta?.hash || "", actionIndex)) ?? [];
1037
- const resolvedInputs = (0, import_warps12.extractResolvedInputValues)(inputs);
1063
+ const inputs = this.cache.get(import_warps13.WarpCacheKey.WarpExecutable(this.config.env, warp.meta?.hash || "", actionIndex)) ?? [];
1064
+ const resolvedInputs = (0, import_warps13.extractResolvedInputValues)(inputs);
1038
1065
  if (!tx) {
1039
1066
  return this.createFailedExecution(warp, actionIndex, resolvedInputs);
1040
1067
  }
@@ -1048,7 +1075,7 @@ var WarpEvmOutput = class {
1048
1075
  status: "error",
1049
1076
  warp,
1050
1077
  action: actionIndex,
1051
- user: (0, import_warps12.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
1078
+ user: (0, import_warps13.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
1052
1079
  txHash: "",
1053
1080
  tx: null,
1054
1081
  next: null,
@@ -1071,7 +1098,7 @@ var WarpEvmOutput = class {
1071
1098
  status: success ? "success" : "error",
1072
1099
  warp,
1073
1100
  action: actionIndex,
1074
- user: (0, import_warps12.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
1101
+ user: (0, import_warps13.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
1075
1102
  txHash: transactionHash,
1076
1103
  tx,
1077
1104
  next: null,
@@ -1102,7 +1129,7 @@ var WarpEvmOutput = class {
1102
1129
  status: success ? "success" : "error",
1103
1130
  warp,
1104
1131
  action: actionIndex,
1105
- user: (0, import_warps12.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
1132
+ user: (0, import_warps13.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
1106
1133
  txHash: transactionHash,
1107
1134
  tx,
1108
1135
  next: null,
@@ -1130,8 +1157,8 @@ var WarpEvmOutput = class {
1130
1157
  return value;
1131
1158
  };
1132
1159
  for (const [key, path] of Object.entries(warp.output)) {
1133
- if (path.startsWith(import_warps12.WarpConstants.Transform.Prefix)) continue;
1134
- const currentActionIndex = (0, import_warps12.parseOutputOutIndex)(path);
1160
+ if (path.startsWith(import_warps13.WarpConstants.Transform.Prefix)) continue;
1161
+ const currentActionIndex = (0, import_warps13.parseOutputOutIndex)(path);
1135
1162
  if (currentActionIndex !== null && currentActionIndex !== actionIndex) {
1136
1163
  output[key] = null;
1137
1164
  continue;
@@ -1142,7 +1169,7 @@ var WarpEvmOutput = class {
1142
1169
  output[key] = path;
1143
1170
  }
1144
1171
  }
1145
- return { values, output: await (0, import_warps12.evaluateOutputCommon)(warp, output, actionIndex, inputs, this.serializer.coreSerializer, this.config) };
1172
+ return { values, output: await (0, import_warps13.evaluateOutputCommon)(warp, output, actionIndex, inputs, this.serializer.coreSerializer, this.config) };
1146
1173
  }
1147
1174
  async getTransactionStatus(txHash) {
1148
1175
  try {
@@ -1174,13 +1201,13 @@ var WarpEvmExecutor = class {
1174
1201
  this.config = config;
1175
1202
  this.chain = chain;
1176
1203
  this.serializer = new WarpEvmSerializer();
1177
- const providerConfig = (0, import_warps13.getProviderConfig)(this.config, chain.name, this.config.env, this.chain.defaultApiUrl);
1204
+ const providerConfig = (0, import_warps14.getProviderConfig)(this.config, chain.name, this.config.env, this.chain.defaultApiUrl);
1178
1205
  const network = new import_ethers6.ethers.Network(this.chain.name, parseInt(this.chain.chainId));
1179
1206
  this.provider = new import_ethers6.ethers.JsonRpcProvider(providerConfig.url, network);
1180
1207
  this.output = new WarpEvmOutput(config, this.chain);
1181
1208
  }
1182
1209
  async createTransaction(executable) {
1183
- const action = (0, import_warps13.getWarpActionByIndex)(executable.warp, executable.action);
1210
+ const action = (0, import_warps14.getWarpActionByIndex)(executable.warp, executable.action);
1184
1211
  let tx = null;
1185
1212
  if (action.type === "transfer") {
1186
1213
  tx = await this.createTransferTransaction(executable);
@@ -1195,7 +1222,7 @@ var WarpEvmExecutor = class {
1195
1222
  return tx;
1196
1223
  }
1197
1224
  async createTransferTransaction(executable) {
1198
- const userWallet = (0, import_warps13.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
1225
+ const userWallet = (0, import_warps14.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
1199
1226
  if (!userWallet) throw new Error("WarpEvmExecutor: createTransfer - user address not set");
1200
1227
  if (!import_ethers6.ethers.isAddress(executable.destination)) {
1201
1228
  throw new Error(`WarpEvmExecutor: Invalid destination address: ${executable.destination}`);
@@ -1211,9 +1238,9 @@ var WarpEvmExecutor = class {
1211
1238
  return this.estimateGasAndSetDefaults(tx, userWallet);
1212
1239
  }
1213
1240
  async createContractCallTransaction(executable) {
1214
- const userWallet = (0, import_warps13.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
1241
+ const userWallet = (0, import_warps14.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
1215
1242
  if (!userWallet) throw new Error("WarpEvmExecutor: createContractCall - user address not set");
1216
- const action = (0, import_warps13.getWarpActionByIndex)(executable.warp, executable.action);
1243
+ const action = (0, import_warps14.getWarpActionByIndex)(executable.warp, executable.action);
1217
1244
  if (!action || !("func" in action) || !action.func) throw new Error("WarpEvmExecutor: Contract action must have a function name");
1218
1245
  if (!import_ethers6.ethers.isAddress(executable.destination)) throw new Error(`WarpEvmExecutor: Invalid contract address: ${executable.destination}`);
1219
1246
  try {
@@ -1276,7 +1303,7 @@ var WarpEvmExecutor = class {
1276
1303
  return this.estimateGasAndSetDefaults(tx, userWallet);
1277
1304
  }
1278
1305
  async executeQuery(executable) {
1279
- const action = (0, import_warps13.getWarpActionByIndex)(executable.warp, executable.action);
1306
+ const action = (0, import_warps14.getWarpActionByIndex)(executable.warp, executable.action);
1280
1307
  if (action.type !== "query") throw new Error(`WarpEvmExecutor: Invalid action type for executeQuery: ${action.type}`);
1281
1308
  if (!action.func) throw new Error("WarpEvmExecutor: Query action must have a function name");
1282
1309
  if (!import_ethers6.ethers.isAddress(executable.destination)) throw new Error(`WarpEvmExecutor: Invalid address for query: ${executable.destination}`);
@@ -1303,33 +1330,33 @@ var WarpEvmExecutor = class {
1303
1330
  executable.action,
1304
1331
  executable.resolvedInputs
1305
1332
  );
1306
- const next = (0, import_warps13.getNextInfo)(this.config, [], executable.warp, executable.action, output);
1333
+ const next = (0, import_warps14.getNextInfo)(this.config, [], executable.warp, executable.action, output);
1307
1334
  const destinationInput = executable.resolvedInputs.find((i) => i.input.position === "receiver" || i.input.position === "destination");
1308
1335
  const destination = destinationInput?.value || executable.destination;
1309
- const resolvedInputs = (0, import_warps13.extractResolvedInputValues)(executable.resolvedInputs);
1336
+ const resolvedInputs = (0, import_warps14.extractResolvedInputValues)(executable.resolvedInputs);
1310
1337
  return {
1311
1338
  status: isSuccess ? "success" : "error",
1312
1339
  warp: executable.warp,
1313
1340
  action: executable.action,
1314
- user: (0, import_warps13.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1341
+ user: (0, import_warps14.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1315
1342
  txHash: null,
1316
1343
  tx: null,
1317
1344
  next,
1318
1345
  values,
1319
1346
  output: { ...output, _DATA: decodedResult },
1320
- messages: (0, import_warps13.applyOutputToMessages)(executable.warp, output, this.config),
1347
+ messages: (0, import_warps14.applyOutputToMessages)(executable.warp, output, this.config),
1321
1348
  destination,
1322
1349
  resolvedInputs
1323
1350
  };
1324
1351
  } catch (error) {
1325
1352
  const destinationInput = executable.resolvedInputs.find((i) => i.input.position === "receiver" || i.input.position === "destination");
1326
1353
  const destination = destinationInput?.value || executable.destination;
1327
- const resolvedInputs = (0, import_warps13.extractResolvedInputValues)(executable.resolvedInputs);
1354
+ const resolvedInputs = (0, import_warps14.extractResolvedInputValues)(executable.resolvedInputs);
1328
1355
  return {
1329
1356
  status: "error",
1330
1357
  warp: executable.warp,
1331
1358
  action: executable.action,
1332
- user: (0, import_warps13.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1359
+ user: (0, import_warps14.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1333
1360
  txHash: null,
1334
1361
  tx: null,
1335
1362
  next: null,
@@ -1569,7 +1596,7 @@ var WarpEvmExplorer = class {
1569
1596
  };
1570
1597
 
1571
1598
  // src/WarpEvmWallet.ts
1572
- var import_warps14 = require("@vleap/warps");
1599
+ var import_warps15 = require("@vleap/warps");
1573
1600
  var import_client = require("@x402/evm/exact/client");
1574
1601
  var import_ethers7 = require("ethers");
1575
1602
  var import_accounts = require("viem/accounts");
@@ -1579,31 +1606,15 @@ var WarpEvmWallet = class {
1579
1606
  this.chain = chain;
1580
1607
  this.cachedAddress = null;
1581
1608
  this.cachedPublicKey = null;
1582
- const providerConfig = (0, import_warps14.getProviderConfig)(config, chain.name, config.env, chain.defaultApiUrl);
1609
+ const providerConfig = (0, import_warps15.getProviderConfig)(config, chain.name, config.env, chain.defaultApiUrl);
1583
1610
  this.provider = new import_ethers7.ethers.JsonRpcProvider(providerConfig.url);
1584
1611
  this.walletProvider = this.createProvider();
1585
1612
  this.initializeCache();
1586
1613
  }
1587
- createProvider() {
1588
- const wallet = this.config.user?.wallets?.[this.chain.name];
1589
- if (!wallet) return null;
1590
- if (typeof wallet === "string") throw new Error(`Wallet can not be used for signing: ${wallet}`);
1591
- const customWalletProviders = this.config.walletProviders?.[this.chain.name];
1592
- const providerFactory = customWalletProviders?.[wallet.provider];
1593
- if (providerFactory) return providerFactory(this.config, this.chain);
1594
- if (wallet.provider === "privateKey") return new PrivateKeyWalletProvider(this.config, this.chain, this.provider);
1595
- if (wallet.provider === "mnemonic") return new MnemonicWalletProvider(this.config, this.chain, this.provider);
1596
- throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${wallet.provider}`);
1597
- }
1598
- initializeCache() {
1599
- (0, import_warps14.initializeWalletCache)(this.walletProvider).then((cache) => {
1600
- this.cachedAddress = cache.address;
1601
- this.cachedPublicKey = cache.publicKey;
1602
- });
1603
- }
1604
1614
  async signTransaction(tx) {
1605
1615
  if (!tx || typeof tx !== "object") throw new Error("Invalid transaction object");
1606
1616
  if (!this.walletProvider) throw new Error("No wallet provider available");
1617
+ if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`);
1607
1618
  return await this.walletProvider.signTransaction(tx);
1608
1619
  }
1609
1620
  async signTransactions(txs) {
@@ -1614,7 +1625,7 @@ var WarpEvmWallet = class {
1614
1625
  const address = wallet.address;
1615
1626
  if (txs.length > 1) {
1616
1627
  const currentNonce = await this.provider.getTransactionCount(address, "pending");
1617
- const signedTxs = [];
1628
+ const signedTxs2 = [];
1618
1629
  for (let i = 0; i < txs.length; i++) {
1619
1630
  const tx = { ...txs[i] };
1620
1631
  tx.nonce = currentNonce + i;
@@ -1631,15 +1642,20 @@ var WarpEvmWallet = class {
1631
1642
  delete tx.maxPriorityFeePerGas;
1632
1643
  }
1633
1644
  }
1634
- signedTxs.push(await this.signTransaction(tx));
1645
+ signedTxs2.push(await this.signTransaction(tx));
1635
1646
  }
1636
- return signedTxs;
1647
+ return signedTxs2;
1637
1648
  }
1638
1649
  }
1639
- return Promise.all(txs.map(async (tx) => this.signTransaction(tx)));
1650
+ const signedTxs = [];
1651
+ for (const tx of txs) {
1652
+ signedTxs.push(await this.signTransaction(tx));
1653
+ }
1654
+ return signedTxs;
1640
1655
  }
1641
1656
  async signMessage(message) {
1642
1657
  if (!this.walletProvider) throw new Error("No wallet provider available");
1658
+ if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`);
1643
1659
  return await this.walletProvider.signMessage(message);
1644
1660
  }
1645
1661
  async sendTransaction(tx) {
@@ -1657,13 +1673,13 @@ var WarpEvmWallet = class {
1657
1673
  async sendTransactions(txs) {
1658
1674
  return Promise.all(txs.map(async (tx) => this.sendTransaction(tx)));
1659
1675
  }
1660
- create(mnemonic) {
1661
- if (!this.walletProvider) throw new Error("No wallet provider available");
1662
- return this.walletProvider.create(mnemonic);
1676
+ create(mnemonic, provider) {
1677
+ const walletProvider = this.createProviderForOperation(provider);
1678
+ return walletProvider.create(mnemonic);
1663
1679
  }
1664
- generate() {
1665
- if (!this.walletProvider) throw new Error("No wallet provider available");
1666
- return this.walletProvider.generate();
1680
+ generate(provider) {
1681
+ const walletProvider = this.createProviderForOperation(provider);
1682
+ return walletProvider.generate();
1667
1683
  }
1668
1684
  getAddress() {
1669
1685
  return this.cachedAddress;
@@ -1687,6 +1703,30 @@ var WarpEvmWallet = class {
1687
1703
  }
1688
1704
  return handlers;
1689
1705
  }
1706
+ createProvider() {
1707
+ const wallet = this.config.user?.wallets?.[this.chain.name];
1708
+ if (!wallet) return null;
1709
+ if (typeof wallet === "string") return new ReadOnlyWalletProvider(this.config, this.chain);
1710
+ return this.createProviderForOperation(wallet.provider);
1711
+ }
1712
+ initializeCache() {
1713
+ (0, import_warps15.initializeWalletCache)(this.walletProvider).then((cache) => {
1714
+ this.cachedAddress = cache.address;
1715
+ this.cachedPublicKey = cache.publicKey;
1716
+ });
1717
+ }
1718
+ createProviderForOperation(provider) {
1719
+ const customWalletProviders = this.config.walletProviders?.[this.chain.name];
1720
+ const providerFactory = customWalletProviders?.[provider];
1721
+ if (providerFactory) {
1722
+ const walletProvider = providerFactory(this.config, this.chain);
1723
+ if (!walletProvider) throw new Error(`Custom wallet provider factory returned null for ${provider}`);
1724
+ return walletProvider;
1725
+ }
1726
+ if (provider === "privateKey") return new PrivateKeyWalletProvider(this.config, this.chain);
1727
+ if (provider === "mnemonic") return new MnemonicWalletProvider(this.config, this.chain);
1728
+ throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${provider}`);
1729
+ }
1690
1730
  };
1691
1731
 
1692
1732
  // src/chains/common.ts
@@ -1711,16 +1751,16 @@ var createEvmAdapter = (chainName, chainInfos) => {
1711
1751
 
1712
1752
  // src/chains/arbitrum.ts
1713
1753
  var NativeTokenArb = {
1714
- chain: import_warps15.WarpChainName.Arbitrum,
1754
+ chain: import_warps16.WarpChainName.Arbitrum,
1715
1755
  identifier: "ARB",
1716
1756
  symbol: "ARB",
1717
1757
  name: "Arbitrum",
1718
1758
  decimals: 18,
1719
1759
  logoUrl: "https://joai.ai/images/tokens/arb.svg"
1720
1760
  };
1721
- var ArbitrumAdapter = createEvmAdapter(import_warps15.WarpChainName.Arbitrum, {
1761
+ var ArbitrumAdapter = createEvmAdapter(import_warps16.WarpChainName.Arbitrum, {
1722
1762
  mainnet: {
1723
- name: import_warps15.WarpChainName.Arbitrum,
1763
+ name: import_warps16.WarpChainName.Arbitrum,
1724
1764
  displayName: "Arbitrum",
1725
1765
  chainId: "42161",
1726
1766
  blockTime: 1e3,
@@ -1730,7 +1770,7 @@ var ArbitrumAdapter = createEvmAdapter(import_warps15.WarpChainName.Arbitrum, {
1730
1770
  nativeToken: NativeTokenArb
1731
1771
  },
1732
1772
  testnet: {
1733
- name: import_warps15.WarpChainName.Arbitrum,
1773
+ name: import_warps16.WarpChainName.Arbitrum,
1734
1774
  displayName: "Arbitrum Sepolia",
1735
1775
  chainId: "421614",
1736
1776
  blockTime: 1e3,
@@ -1740,7 +1780,7 @@ var ArbitrumAdapter = createEvmAdapter(import_warps15.WarpChainName.Arbitrum, {
1740
1780
  nativeToken: NativeTokenArb
1741
1781
  },
1742
1782
  devnet: {
1743
- name: import_warps15.WarpChainName.Arbitrum,
1783
+ name: import_warps16.WarpChainName.Arbitrum,
1744
1784
  displayName: "Arbitrum Sepolia",
1745
1785
  chainId: "421614",
1746
1786
  blockTime: 1e3,
@@ -1752,18 +1792,18 @@ var ArbitrumAdapter = createEvmAdapter(import_warps15.WarpChainName.Arbitrum, {
1752
1792
  });
1753
1793
 
1754
1794
  // src/chains/base.ts
1755
- var import_warps16 = require("@vleap/warps");
1795
+ var import_warps17 = require("@vleap/warps");
1756
1796
  var NativeTokenBase = {
1757
- chain: import_warps16.WarpChainName.Base,
1797
+ chain: import_warps17.WarpChainName.Base,
1758
1798
  identifier: "ETH",
1759
1799
  name: "Ether",
1760
1800
  symbol: "ETH",
1761
1801
  decimals: 18,
1762
1802
  logoUrl: "https://joai.ai/images/tokens/eth.svg"
1763
1803
  };
1764
- var BaseAdapter = createEvmAdapter(import_warps16.WarpChainName.Base, {
1804
+ var BaseAdapter = createEvmAdapter(import_warps17.WarpChainName.Base, {
1765
1805
  mainnet: {
1766
- name: import_warps16.WarpChainName.Base,
1806
+ name: import_warps17.WarpChainName.Base,
1767
1807
  displayName: "Base",
1768
1808
  chainId: "8453",
1769
1809
  blockTime: 2e3,
@@ -1773,7 +1813,7 @@ var BaseAdapter = createEvmAdapter(import_warps16.WarpChainName.Base, {
1773
1813
  nativeToken: NativeTokenBase
1774
1814
  },
1775
1815
  testnet: {
1776
- name: import_warps16.WarpChainName.Base,
1816
+ name: import_warps17.WarpChainName.Base,
1777
1817
  displayName: "Base Sepolia",
1778
1818
  chainId: "84532",
1779
1819
  blockTime: 2e3,
@@ -1783,7 +1823,7 @@ var BaseAdapter = createEvmAdapter(import_warps16.WarpChainName.Base, {
1783
1823
  nativeToken: NativeTokenBase
1784
1824
  },
1785
1825
  devnet: {
1786
- name: import_warps16.WarpChainName.Base,
1826
+ name: import_warps17.WarpChainName.Base,
1787
1827
  displayName: "Base Sepolia",
1788
1828
  chainId: "84532",
1789
1829
  blockTime: 2e3,
@@ -1795,27 +1835,27 @@ var BaseAdapter = createEvmAdapter(import_warps16.WarpChainName.Base, {
1795
1835
  });
1796
1836
 
1797
1837
  // src/chains/combined.ts
1798
- var import_warps17 = require("@vleap/warps");
1838
+ var import_warps18 = require("@vleap/warps");
1799
1839
  var getAllEvmChainNames = () => [
1800
- import_warps17.WarpChainName.Ethereum,
1801
- import_warps17.WarpChainName.Base,
1802
- import_warps17.WarpChainName.Arbitrum,
1803
- import_warps17.WarpChainName.Somnia
1840
+ import_warps18.WarpChainName.Ethereum,
1841
+ import_warps18.WarpChainName.Base,
1842
+ import_warps18.WarpChainName.Arbitrum,
1843
+ import_warps18.WarpChainName.Somnia
1804
1844
  ];
1805
1845
 
1806
1846
  // src/chains/ethereum.ts
1807
- var import_warps18 = require("@vleap/warps");
1847
+ var import_warps19 = require("@vleap/warps");
1808
1848
  var NativeTokenEth = {
1809
- chain: import_warps18.WarpChainName.Ethereum,
1849
+ chain: import_warps19.WarpChainName.Ethereum,
1810
1850
  identifier: "ETH",
1811
1851
  symbol: "ETH",
1812
1852
  name: "Ether",
1813
1853
  decimals: 18,
1814
1854
  logoUrl: "https://joai.ai/images/tokens/eth.svg"
1815
1855
  };
1816
- var EthereumAdapter = createEvmAdapter(import_warps18.WarpChainName.Ethereum, {
1856
+ var EthereumAdapter = createEvmAdapter(import_warps19.WarpChainName.Ethereum, {
1817
1857
  mainnet: {
1818
- name: import_warps18.WarpChainName.Ethereum,
1858
+ name: import_warps19.WarpChainName.Ethereum,
1819
1859
  displayName: "Ethereum Mainnet",
1820
1860
  chainId: "1",
1821
1861
  blockTime: 12e3,
@@ -1825,7 +1865,7 @@ var EthereumAdapter = createEvmAdapter(import_warps18.WarpChainName.Ethereum, {
1825
1865
  nativeToken: NativeTokenEth
1826
1866
  },
1827
1867
  testnet: {
1828
- name: import_warps18.WarpChainName.Ethereum,
1868
+ name: import_warps19.WarpChainName.Ethereum,
1829
1869
  displayName: "Ethereum Sepolia",
1830
1870
  chainId: "11155111",
1831
1871
  blockTime: 12e3,
@@ -1835,7 +1875,7 @@ var EthereumAdapter = createEvmAdapter(import_warps18.WarpChainName.Ethereum, {
1835
1875
  nativeToken: NativeTokenEth
1836
1876
  },
1837
1877
  devnet: {
1838
- name: import_warps18.WarpChainName.Ethereum,
1878
+ name: import_warps19.WarpChainName.Ethereum,
1839
1879
  displayName: "Ethereum Sepolia",
1840
1880
  chainId: "11155111",
1841
1881
  blockTime: 12e3,
@@ -1847,12 +1887,12 @@ var EthereumAdapter = createEvmAdapter(import_warps18.WarpChainName.Ethereum, {
1847
1887
  });
1848
1888
 
1849
1889
  // src/adapters.ts
1850
- var import_warps20 = require("@vleap/warps");
1890
+ var import_warps21 = require("@vleap/warps");
1851
1891
 
1852
1892
  // src/chains/somnia.ts
1853
- var import_warps19 = require("@vleap/warps");
1893
+ var import_warps20 = require("@vleap/warps");
1854
1894
  var NativeTokenSomi = {
1855
- chain: import_warps19.WarpChainName.Somnia,
1895
+ chain: import_warps20.WarpChainName.Somnia,
1856
1896
  identifier: "SOMI",
1857
1897
  symbol: "SOMI",
1858
1898
  name: "Somnia",
@@ -1860,16 +1900,16 @@ var NativeTokenSomi = {
1860
1900
  logoUrl: "https://assets.coingecko.com/coins/images/68061/standard/somniacg.png?1754641117"
1861
1901
  };
1862
1902
  var NativeTokenStt = {
1863
- chain: import_warps19.WarpChainName.Somnia,
1903
+ chain: import_warps20.WarpChainName.Somnia,
1864
1904
  identifier: "STT",
1865
1905
  symbol: "STT",
1866
1906
  name: "Somnia Testnet Token",
1867
1907
  decimals: 18,
1868
1908
  logoUrl: "https://assets.coingecko.com/coins/images/68061/standard/somniacg.png?1754641117"
1869
1909
  };
1870
- var SomniaAdapter = createEvmAdapter(import_warps19.WarpChainName.Somnia, {
1910
+ var SomniaAdapter = createEvmAdapter(import_warps20.WarpChainName.Somnia, {
1871
1911
  mainnet: {
1872
- name: import_warps19.WarpChainName.Somnia,
1912
+ name: import_warps20.WarpChainName.Somnia,
1873
1913
  displayName: "Somnia Mainnet",
1874
1914
  chainId: "5031",
1875
1915
  blockTime: 100,
@@ -1879,7 +1919,7 @@ var SomniaAdapter = createEvmAdapter(import_warps19.WarpChainName.Somnia, {
1879
1919
  nativeToken: NativeTokenSomi
1880
1920
  },
1881
1921
  testnet: {
1882
- name: import_warps19.WarpChainName.Somnia,
1922
+ name: import_warps20.WarpChainName.Somnia,
1883
1923
  displayName: "Somnia Testnet",
1884
1924
  chainId: "50312",
1885
1925
  blockTime: 100,
@@ -1889,7 +1929,7 @@ var SomniaAdapter = createEvmAdapter(import_warps19.WarpChainName.Somnia, {
1889
1929
  nativeToken: NativeTokenStt
1890
1930
  },
1891
1931
  devnet: {
1892
- name: import_warps19.WarpChainName.Somnia,
1932
+ name: import_warps20.WarpChainName.Somnia,
1893
1933
  displayName: "Somnia Testnet",
1894
1934
  chainId: "50312",
1895
1935
  blockTime: 100,
@@ -1902,10 +1942,10 @@ var SomniaAdapter = createEvmAdapter(import_warps19.WarpChainName.Somnia, {
1902
1942
 
1903
1943
  // src/adapters.ts
1904
1944
  var getAllEvmAdapters = (fallbackFactory) => [
1905
- (0, import_warps20.withAdapterFallback)(EthereumAdapter, fallbackFactory),
1906
- (0, import_warps20.withAdapterFallback)(BaseAdapter, fallbackFactory),
1907
- (0, import_warps20.withAdapterFallback)(ArbitrumAdapter, fallbackFactory),
1908
- (0, import_warps20.withAdapterFallback)(SomniaAdapter, fallbackFactory)
1945
+ (0, import_warps21.withAdapterFallback)(EthereumAdapter, fallbackFactory),
1946
+ (0, import_warps21.withAdapterFallback)(BaseAdapter, fallbackFactory),
1947
+ (0, import_warps21.withAdapterFallback)(ArbitrumAdapter, fallbackFactory),
1948
+ (0, import_warps21.withAdapterFallback)(SomniaAdapter, fallbackFactory)
1909
1949
  ];
1910
1950
  // Annotate the CommonJS export names for ESM import in node:
1911
1951
  0 && (module.exports = {