@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.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +172 -132
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +95 -55
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
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
|
|
103
|
-
constructor(config, chain
|
|
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
|
-
|
|
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:
|
|
153
|
+
provider: _PrivateKeyWalletProvider.PROVIDER_NAME,
|
|
161
154
|
address: wallet.address,
|
|
162
155
|
privateKey: wallet.privateKey,
|
|
163
|
-
mnemonic:
|
|
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
|
|
179
|
-
constructor(config, chain
|
|
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:
|
|
221
|
+
provider: _MnemonicWalletProvider.PROVIDER_NAME,
|
|
228
222
|
address: wallet.address,
|
|
229
|
-
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:
|
|
230
|
+
provider: _MnemonicWalletProvider.PROVIDER_NAME,
|
|
237
231
|
address: wallet.address,
|
|
238
|
-
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
|
|
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:
|
|
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:
|
|
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:
|
|
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 =
|
|
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 =
|
|
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:
|
|
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:
|
|
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
|
|
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
|
-
|
|
1620
|
+
signedTxs2.push(await this.signTransaction(tx));
|
|
1610
1621
|
}
|
|
1611
|
-
return
|
|
1622
|
+
return signedTxs2;
|
|
1612
1623
|
}
|
|
1613
1624
|
}
|
|
1614
|
-
|
|
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
|
-
|
|
1637
|
-
return
|
|
1651
|
+
create(mnemonic, provider) {
|
|
1652
|
+
const walletProvider = this.createProviderForOperation(provider);
|
|
1653
|
+
return walletProvider.create(mnemonic);
|
|
1638
1654
|
}
|
|
1639
|
-
generate() {
|
|
1640
|
-
|
|
1641
|
-
return
|
|
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
|