@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.mjs CHANGED
@@ -99,11 +99,10 @@ var UniswapService = _UniswapService;
99
99
  // src/providers/PrivateKeyWalletProvider.ts
100
100
  import { ethers } from "ethers";
101
101
  import { getWarpWalletPrivateKeyFromConfig } from "@vleap/warps";
102
- var PrivateKeyWalletProvider = class {
103
- constructor(config, chain, rpcProvider) {
102
+ var _PrivateKeyWalletProvider = class _PrivateKeyWalletProvider {
103
+ constructor(config, chain) {
104
104
  this.config = config;
105
105
  this.chain = chain;
106
- this.rpcProvider = rpcProvider;
107
106
  this.wallet = null;
108
107
  }
109
108
  async getAddress() {
@@ -146,21 +145,15 @@ var PrivateKeyWalletProvider = class {
146
145
  return this.getWallet();
147
146
  }
148
147
  create(mnemonic) {
149
- const wallet = ethers.Wallet.fromPhrase(mnemonic);
150
- return {
151
- provider: "privateKey",
152
- address: wallet.address,
153
- privateKey: wallet.privateKey,
154
- mnemonic
155
- };
148
+ throw new Error("PrivateKeyWalletProvider does not support creating wallets from mnemonics. Use MnemonicWalletProvider instead.");
156
149
  }
157
150
  generate() {
158
151
  const wallet = ethers.Wallet.createRandom();
159
152
  return {
160
- provider: "privateKey",
153
+ provider: _PrivateKeyWalletProvider.PROVIDER_NAME,
161
154
  address: wallet.address,
162
155
  privateKey: wallet.privateKey,
163
- mnemonic: wallet.mnemonic?.phrase || null
156
+ mnemonic: null
164
157
  };
165
158
  }
166
159
  getWallet() {
@@ -171,15 +164,16 @@ var PrivateKeyWalletProvider = class {
171
164
  return this.wallet;
172
165
  }
173
166
  };
167
+ _PrivateKeyWalletProvider.PROVIDER_NAME = "privateKey";
168
+ var PrivateKeyWalletProvider = _PrivateKeyWalletProvider;
174
169
 
175
170
  // src/providers/MnemonicWalletProvider.ts
176
171
  import { ethers as ethers2 } from "ethers";
177
172
  import { getWarpWalletMnemonicFromConfig } from "@vleap/warps";
178
- var MnemonicWalletProvider = class {
179
- constructor(config, chain, rpcProvider) {
173
+ var _MnemonicWalletProvider = class _MnemonicWalletProvider {
174
+ constructor(config, chain) {
180
175
  this.config = config;
181
176
  this.chain = chain;
182
- this.rpcProvider = rpcProvider;
183
177
  this.wallet = null;
184
178
  }
185
179
  async getAddress() {
@@ -224,18 +218,18 @@ var MnemonicWalletProvider = class {
224
218
  create(mnemonic) {
225
219
  const wallet = ethers2.Wallet.fromPhrase(mnemonic);
226
220
  return {
227
- provider: "mnemonic",
221
+ provider: _MnemonicWalletProvider.PROVIDER_NAME,
228
222
  address: wallet.address,
229
- privateKey: wallet.privateKey,
223
+ privateKey: null,
230
224
  mnemonic
231
225
  };
232
226
  }
233
227
  generate() {
234
228
  const wallet = ethers2.Wallet.createRandom();
235
229
  return {
236
- provider: "mnemonic",
230
+ provider: _MnemonicWalletProvider.PROVIDER_NAME,
237
231
  address: wallet.address,
238
- privateKey: wallet.privateKey,
232
+ privateKey: null,
239
233
  mnemonic: wallet.mnemonic?.phrase || null
240
234
  };
241
235
  }
@@ -247,6 +241,39 @@ var MnemonicWalletProvider = class {
247
241
  return this.wallet;
248
242
  }
249
243
  };
244
+ _MnemonicWalletProvider.PROVIDER_NAME = "mnemonic";
245
+ var MnemonicWalletProvider = _MnemonicWalletProvider;
246
+
247
+ // src/providers/ReadOnlyWalletProvider.ts
248
+ import { getWarpWalletAddressFromConfig } from "@vleap/warps";
249
+ var ReadOnlyWalletProvider = class {
250
+ constructor(config, chain) {
251
+ this.config = config;
252
+ this.chain = chain;
253
+ }
254
+ async getAddress() {
255
+ return getWarpWalletAddressFromConfig(this.config, this.chain.name);
256
+ }
257
+ async getPublicKey() {
258
+ return null;
259
+ }
260
+ async signTransaction(tx) {
261
+ const address = await this.getAddress();
262
+ throw new Error(`Wallet can not be used for signing: ${address}`);
263
+ }
264
+ async signMessage(message) {
265
+ const address = await this.getAddress();
266
+ throw new Error(`Wallet can not be used for signing: ${address}`);
267
+ }
268
+ create(mnemonic) {
269
+ const address = getWarpWalletAddressFromConfig(this.config, this.chain.name);
270
+ throw new Error(`Wallet can not be used for signing: ${address}`);
271
+ }
272
+ generate() {
273
+ const address = getWarpWalletAddressFromConfig(this.config, this.chain.name);
274
+ throw new Error(`Wallet can not be used for signing: ${address}`);
275
+ }
276
+ };
250
277
 
251
278
  // src/tokens/arbitrum.ts
252
279
  import { WarpChainName } from "@vleap/warps";
@@ -696,7 +723,7 @@ import {
696
723
  getNextInfo,
697
724
  getProviderConfig as getProviderConfig3,
698
725
  getWarpActionByIndex,
699
- getWarpWalletAddressFromConfig as getWarpWalletAddressFromConfig2
726
+ getWarpWalletAddressFromConfig as getWarpWalletAddressFromConfig3
700
727
  } from "@vleap/warps";
701
728
  import { ethers as ethers6 } from "ethers";
702
729
 
@@ -829,7 +856,7 @@ import {
829
856
  evaluateOutputCommon,
830
857
  extractResolvedInputValues,
831
858
  getProviderConfig as getProviderConfig2,
832
- getWarpWalletAddressFromConfig,
859
+ getWarpWalletAddressFromConfig as getWarpWalletAddressFromConfig2,
833
860
  parseOutputOutIndex,
834
861
  WarpConstants as WarpConstants2,
835
862
  WarpCache as WarpCache3,
@@ -1020,7 +1047,7 @@ var WarpEvmOutput = class {
1020
1047
  status: "error",
1021
1048
  warp,
1022
1049
  action: actionIndex,
1023
- user: getWarpWalletAddressFromConfig(this.config, this.chain.name),
1050
+ user: getWarpWalletAddressFromConfig2(this.config, this.chain.name),
1024
1051
  txHash: "",
1025
1052
  tx: null,
1026
1053
  next: null,
@@ -1043,7 +1070,7 @@ var WarpEvmOutput = class {
1043
1070
  status: success ? "success" : "error",
1044
1071
  warp,
1045
1072
  action: actionIndex,
1046
- user: getWarpWalletAddressFromConfig(this.config, this.chain.name),
1073
+ user: getWarpWalletAddressFromConfig2(this.config, this.chain.name),
1047
1074
  txHash: transactionHash,
1048
1075
  tx,
1049
1076
  next: null,
@@ -1074,7 +1101,7 @@ var WarpEvmOutput = class {
1074
1101
  status: success ? "success" : "error",
1075
1102
  warp,
1076
1103
  action: actionIndex,
1077
- user: getWarpWalletAddressFromConfig(this.config, this.chain.name),
1104
+ user: getWarpWalletAddressFromConfig2(this.config, this.chain.name),
1078
1105
  txHash: transactionHash,
1079
1106
  tx,
1080
1107
  next: null,
@@ -1167,7 +1194,7 @@ var WarpEvmExecutor = class {
1167
1194
  return tx;
1168
1195
  }
1169
1196
  async createTransferTransaction(executable) {
1170
- const userWallet = getWarpWalletAddressFromConfig2(this.config, executable.chain.name);
1197
+ const userWallet = getWarpWalletAddressFromConfig3(this.config, executable.chain.name);
1171
1198
  if (!userWallet) throw new Error("WarpEvmExecutor: createTransfer - user address not set");
1172
1199
  if (!ethers6.isAddress(executable.destination)) {
1173
1200
  throw new Error(`WarpEvmExecutor: Invalid destination address: ${executable.destination}`);
@@ -1183,7 +1210,7 @@ var WarpEvmExecutor = class {
1183
1210
  return this.estimateGasAndSetDefaults(tx, userWallet);
1184
1211
  }
1185
1212
  async createContractCallTransaction(executable) {
1186
- const userWallet = getWarpWalletAddressFromConfig2(this.config, executable.chain.name);
1213
+ const userWallet = getWarpWalletAddressFromConfig3(this.config, executable.chain.name);
1187
1214
  if (!userWallet) throw new Error("WarpEvmExecutor: createContractCall - user address not set");
1188
1215
  const action = getWarpActionByIndex(executable.warp, executable.action);
1189
1216
  if (!action || !("func" in action) || !action.func) throw new Error("WarpEvmExecutor: Contract action must have a function name");
@@ -1283,7 +1310,7 @@ var WarpEvmExecutor = class {
1283
1310
  status: isSuccess ? "success" : "error",
1284
1311
  warp: executable.warp,
1285
1312
  action: executable.action,
1286
- user: getWarpWalletAddressFromConfig2(this.config, executable.chain.name),
1313
+ user: getWarpWalletAddressFromConfig3(this.config, executable.chain.name),
1287
1314
  txHash: null,
1288
1315
  tx: null,
1289
1316
  next,
@@ -1301,7 +1328,7 @@ var WarpEvmExecutor = class {
1301
1328
  status: "error",
1302
1329
  warp: executable.warp,
1303
1330
  action: executable.action,
1304
- user: getWarpWalletAddressFromConfig2(this.config, executable.chain.name),
1331
+ user: getWarpWalletAddressFromConfig3(this.config, executable.chain.name),
1305
1332
  txHash: null,
1306
1333
  tx: null,
1307
1334
  next: null,
@@ -1559,26 +1586,10 @@ var WarpEvmWallet = class {
1559
1586
  this.walletProvider = this.createProvider();
1560
1587
  this.initializeCache();
1561
1588
  }
1562
- createProvider() {
1563
- const wallet = this.config.user?.wallets?.[this.chain.name];
1564
- if (!wallet) return null;
1565
- if (typeof wallet === "string") throw new Error(`Wallet can not be used for signing: ${wallet}`);
1566
- const customWalletProviders = this.config.walletProviders?.[this.chain.name];
1567
- const providerFactory = customWalletProviders?.[wallet.provider];
1568
- if (providerFactory) return providerFactory(this.config, this.chain);
1569
- if (wallet.provider === "privateKey") return new PrivateKeyWalletProvider(this.config, this.chain, this.provider);
1570
- if (wallet.provider === "mnemonic") return new MnemonicWalletProvider(this.config, this.chain, this.provider);
1571
- throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${wallet.provider}`);
1572
- }
1573
- initializeCache() {
1574
- initializeWalletCache(this.walletProvider).then((cache) => {
1575
- this.cachedAddress = cache.address;
1576
- this.cachedPublicKey = cache.publicKey;
1577
- });
1578
- }
1579
1589
  async signTransaction(tx) {
1580
1590
  if (!tx || typeof tx !== "object") throw new Error("Invalid transaction object");
1581
1591
  if (!this.walletProvider) throw new Error("No wallet provider available");
1592
+ if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`);
1582
1593
  return await this.walletProvider.signTransaction(tx);
1583
1594
  }
1584
1595
  async signTransactions(txs) {
@@ -1589,7 +1600,7 @@ var WarpEvmWallet = class {
1589
1600
  const address = wallet.address;
1590
1601
  if (txs.length > 1) {
1591
1602
  const currentNonce = await this.provider.getTransactionCount(address, "pending");
1592
- const signedTxs = [];
1603
+ const signedTxs2 = [];
1593
1604
  for (let i = 0; i < txs.length; i++) {
1594
1605
  const tx = { ...txs[i] };
1595
1606
  tx.nonce = currentNonce + i;
@@ -1606,15 +1617,20 @@ var WarpEvmWallet = class {
1606
1617
  delete tx.maxPriorityFeePerGas;
1607
1618
  }
1608
1619
  }
1609
- signedTxs.push(await this.signTransaction(tx));
1620
+ signedTxs2.push(await this.signTransaction(tx));
1610
1621
  }
1611
- return signedTxs;
1622
+ return signedTxs2;
1612
1623
  }
1613
1624
  }
1614
- return Promise.all(txs.map(async (tx) => this.signTransaction(tx)));
1625
+ const signedTxs = [];
1626
+ for (const tx of txs) {
1627
+ signedTxs.push(await this.signTransaction(tx));
1628
+ }
1629
+ return signedTxs;
1615
1630
  }
1616
1631
  async signMessage(message) {
1617
1632
  if (!this.walletProvider) throw new Error("No wallet provider available");
1633
+ if (this.walletProvider instanceof ReadOnlyWalletProvider) throw new Error(`Wallet (${this.chain.name}) is read-only`);
1618
1634
  return await this.walletProvider.signMessage(message);
1619
1635
  }
1620
1636
  async sendTransaction(tx) {
@@ -1632,13 +1648,13 @@ var WarpEvmWallet = class {
1632
1648
  async sendTransactions(txs) {
1633
1649
  return Promise.all(txs.map(async (tx) => this.sendTransaction(tx)));
1634
1650
  }
1635
- create(mnemonic) {
1636
- if (!this.walletProvider) throw new Error("No wallet provider available");
1637
- return this.walletProvider.create(mnemonic);
1651
+ create(mnemonic, provider) {
1652
+ const walletProvider = this.createProviderForOperation(provider);
1653
+ return walletProvider.create(mnemonic);
1638
1654
  }
1639
- generate() {
1640
- if (!this.walletProvider) throw new Error("No wallet provider available");
1641
- return this.walletProvider.generate();
1655
+ generate(provider) {
1656
+ const walletProvider = this.createProviderForOperation(provider);
1657
+ return walletProvider.generate();
1642
1658
  }
1643
1659
  getAddress() {
1644
1660
  return this.cachedAddress;
@@ -1662,6 +1678,30 @@ var WarpEvmWallet = class {
1662
1678
  }
1663
1679
  return handlers;
1664
1680
  }
1681
+ createProvider() {
1682
+ const wallet = this.config.user?.wallets?.[this.chain.name];
1683
+ if (!wallet) return null;
1684
+ if (typeof wallet === "string") return new ReadOnlyWalletProvider(this.config, this.chain);
1685
+ return this.createProviderForOperation(wallet.provider);
1686
+ }
1687
+ initializeCache() {
1688
+ initializeWalletCache(this.walletProvider).then((cache) => {
1689
+ this.cachedAddress = cache.address;
1690
+ this.cachedPublicKey = cache.publicKey;
1691
+ });
1692
+ }
1693
+ createProviderForOperation(provider) {
1694
+ const customWalletProviders = this.config.walletProviders?.[this.chain.name];
1695
+ const providerFactory = customWalletProviders?.[provider];
1696
+ if (providerFactory) {
1697
+ const walletProvider = providerFactory(this.config, this.chain);
1698
+ if (!walletProvider) throw new Error(`Custom wallet provider factory returned null for ${provider}`);
1699
+ return walletProvider;
1700
+ }
1701
+ if (provider === "privateKey") return new PrivateKeyWalletProvider(this.config, this.chain);
1702
+ if (provider === "mnemonic") return new MnemonicWalletProvider(this.config, this.chain);
1703
+ throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${provider}`);
1704
+ }
1665
1705
  };
1666
1706
 
1667
1707
  // src/chains/common.ts