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

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
@@ -145,12 +145,28 @@ var PrivateKeyWalletProvider = class {
145
145
  getWalletInstance() {
146
146
  return this.getWallet();
147
147
  }
148
+ 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
+ };
156
+ }
157
+ generate() {
158
+ const wallet = ethers.Wallet.createRandom();
159
+ return {
160
+ provider: "privateKey",
161
+ address: wallet.address,
162
+ privateKey: wallet.privateKey,
163
+ mnemonic: wallet.mnemonic?.phrase || null
164
+ };
165
+ }
148
166
  getWallet() {
149
167
  if (this.wallet) return this.wallet;
150
168
  const privateKey = getWarpWalletPrivateKeyFromConfig(this.config, this.chain.name);
151
- if (!privateKey) {
152
- throw new Error("No private key provided");
153
- }
169
+ if (!privateKey) throw new Error("No private key provided");
154
170
  this.wallet = new ethers.Wallet(privateKey);
155
171
  return this.wallet;
156
172
  }
@@ -205,12 +221,28 @@ var MnemonicWalletProvider = class {
205
221
  getWalletInstance() {
206
222
  return this.getWallet();
207
223
  }
224
+ create(mnemonic) {
225
+ const wallet = ethers2.Wallet.fromPhrase(mnemonic);
226
+ return {
227
+ provider: "mnemonic",
228
+ address: wallet.address,
229
+ privateKey: wallet.privateKey,
230
+ mnemonic
231
+ };
232
+ }
233
+ generate() {
234
+ const wallet = ethers2.Wallet.createRandom();
235
+ return {
236
+ provider: "mnemonic",
237
+ address: wallet.address,
238
+ privateKey: wallet.privateKey,
239
+ mnemonic: wallet.mnemonic?.phrase || null
240
+ };
241
+ }
208
242
  getWallet() {
209
243
  if (this.wallet) return this.wallet;
210
244
  const mnemonic = getWarpWalletMnemonicFromConfig(this.config, this.chain.name);
211
- if (!mnemonic) {
212
- throw new Error("No mnemonic provided");
213
- }
245
+ if (!mnemonic) throw new Error("No mnemonic provided");
214
246
  this.wallet = ethers2.Wallet.fromPhrase(mnemonic);
215
247
  return this.wallet;
216
248
  }
@@ -742,6 +774,55 @@ var ExplorerUrls = {
742
774
  ["blockscout_base" /* BlockscoutBase */]: "https://base.blockscout.com",
743
775
  ["blockscout_base_sepolia" /* BlockscoutBaseSepolia */]: "https://sepolia.blockscout.com"
744
776
  };
777
+ var EvmChainIds = {
778
+ Ethereum: {
779
+ Mainnet: 1,
780
+ Goerli: 5,
781
+ Sepolia: 11155111
782
+ },
783
+ Polygon: {
784
+ Mainnet: 137,
785
+ Mumbai: 80001
786
+ },
787
+ Arbitrum: {
788
+ Mainnet: 42161,
789
+ Sepolia: 421614
790
+ },
791
+ Base: {
792
+ Mainnet: 8453,
793
+ Sepolia: 84532
794
+ },
795
+ Optimism: {
796
+ Mainnet: 10,
797
+ Sepolia: 11155420
798
+ }
799
+ };
800
+ var EvmChainIdMap = {
801
+ "ethereum:mainnet": EvmChainIds.Ethereum.Mainnet,
802
+ "ethereum:goerli": EvmChainIds.Ethereum.Goerli,
803
+ "ethereum:sepolia": EvmChainIds.Ethereum.Sepolia,
804
+ "polygon:mainnet": EvmChainIds.Polygon.Mainnet,
805
+ "polygon:mumbai": EvmChainIds.Polygon.Mumbai,
806
+ "arbitrum:mainnet": EvmChainIds.Arbitrum.Mainnet,
807
+ "arbitrum:sepolia": EvmChainIds.Arbitrum.Sepolia,
808
+ "base:mainnet": EvmChainIds.Base.Mainnet,
809
+ "base:sepolia": EvmChainIds.Base.Sepolia,
810
+ "optimism:mainnet": EvmChainIds.Optimism.Mainnet,
811
+ "optimism:sepolia": EvmChainIds.Optimism.Sepolia
812
+ };
813
+ var SupportedEvmChainIds = [
814
+ EvmChainIds.Ethereum.Mainnet,
815
+ EvmChainIds.Ethereum.Goerli,
816
+ EvmChainIds.Ethereum.Sepolia,
817
+ EvmChainIds.Polygon.Mainnet,
818
+ EvmChainIds.Polygon.Mumbai,
819
+ EvmChainIds.Arbitrum.Mainnet,
820
+ EvmChainIds.Arbitrum.Sepolia,
821
+ EvmChainIds.Base.Mainnet,
822
+ EvmChainIds.Base.Sepolia,
823
+ EvmChainIds.Optimism.Mainnet,
824
+ EvmChainIds.Optimism.Sepolia
825
+ ];
745
826
 
746
827
  // src/WarpEvmOutput.ts
747
828
  import {
@@ -1462,32 +1543,32 @@ var WarpEvmExplorer = class {
1462
1543
  // src/WarpEvmWallet.ts
1463
1544
  import {
1464
1545
  getProviderConfig as getProviderConfig4,
1465
- getWarpWalletMnemonicFromConfig as getWarpWalletMnemonicFromConfig2,
1466
- getWarpWalletPrivateKeyFromConfig as getWarpWalletPrivateKeyFromConfig2,
1467
1546
  initializeWalletCache
1468
1547
  } from "@vleap/warps";
1548
+ import { registerExactEvmScheme } from "@x402/evm/exact/client";
1469
1549
  import { ethers as ethers7 } from "ethers";
1550
+ import { privateKeyToAccount } from "viem/accounts";
1470
1551
  var WarpEvmWallet = class {
1471
- constructor(config, chain, walletProvider) {
1552
+ constructor(config, chain) {
1472
1553
  this.config = config;
1473
1554
  this.chain = chain;
1474
1555
  this.cachedAddress = null;
1475
1556
  this.cachedPublicKey = null;
1476
1557
  const providerConfig = getProviderConfig4(config, chain.name, config.env, chain.defaultApiUrl);
1477
1558
  this.provider = new ethers7.JsonRpcProvider(providerConfig.url);
1478
- this.walletProvider = walletProvider || this.createDefaultProvider();
1559
+ this.walletProvider = this.createProvider();
1479
1560
  this.initializeCache();
1480
1561
  }
1481
- createDefaultProvider() {
1482
- const privateKey = getWarpWalletPrivateKeyFromConfig2(this.config, this.chain.name);
1483
- if (privateKey) {
1484
- return new PrivateKeyWalletProvider(this.config, this.chain, this.provider);
1485
- }
1486
- const mnemonic = getWarpWalletMnemonicFromConfig2(this.config, this.chain.name);
1487
- if (mnemonic) {
1488
- return new MnemonicWalletProvider(this.config, this.chain, this.provider);
1489
- }
1490
- return null;
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}`);
1491
1572
  }
1492
1573
  initializeCache() {
1493
1574
  initializeWalletCache(this.walletProvider).then((cache) => {
@@ -1552,12 +1633,12 @@ var WarpEvmWallet = class {
1552
1633
  return Promise.all(txs.map(async (tx) => this.sendTransaction(tx)));
1553
1634
  }
1554
1635
  create(mnemonic) {
1555
- const wallet = ethers7.Wallet.fromPhrase(mnemonic);
1556
- return { address: wallet.address, privateKey: wallet.privateKey, mnemonic };
1636
+ if (!this.walletProvider) throw new Error("No wallet provider available");
1637
+ return this.walletProvider.create(mnemonic);
1557
1638
  }
1558
1639
  generate() {
1559
- const wallet = ethers7.Wallet.createRandom();
1560
- return { address: wallet.address, privateKey: wallet.privateKey, mnemonic: wallet.mnemonic?.phrase || "" };
1640
+ if (!this.walletProvider) throw new Error("No wallet provider available");
1641
+ return this.walletProvider.generate();
1561
1642
  }
1562
1643
  getAddress() {
1563
1644
  return this.cachedAddress;
@@ -1565,6 +1646,22 @@ var WarpEvmWallet = class {
1565
1646
  getPublicKey() {
1566
1647
  return this.cachedPublicKey;
1567
1648
  }
1649
+ async registerX402Handlers(client) {
1650
+ if (!this.walletProvider) throw new Error("No wallet provider available");
1651
+ const provider = this.walletProvider;
1652
+ const getInstance = provider.getWalletInstance;
1653
+ if (typeof getInstance !== "function") throw new Error("Wallet provider does not have getWalletInstance method");
1654
+ const wallet = getInstance();
1655
+ if (!wallet || !wallet.privateKey) throw new Error("Wallet instance does not have private key");
1656
+ const signer = privateKeyToAccount(wallet.privateKey);
1657
+ const handlers = {};
1658
+ for (const chainId of SupportedEvmChainIds) {
1659
+ handlers[`eip155:${chainId}`] = () => {
1660
+ registerExactEvmScheme(client, { signer });
1661
+ };
1662
+ }
1663
+ return handlers;
1664
+ }
1568
1665
  };
1569
1666
 
1570
1667
  // src/chains/common.ts
@@ -1596,7 +1693,7 @@ var NativeTokenArb = {
1596
1693
  decimals: 18,
1597
1694
  logoUrl: "https://joai.ai/images/tokens/arb.svg"
1598
1695
  };
1599
- var getArbitrumAdapter = createEvmAdapter(WarpChainName7.Arbitrum, {
1696
+ var ArbitrumAdapter = createEvmAdapter(WarpChainName7.Arbitrum, {
1600
1697
  mainnet: {
1601
1698
  name: WarpChainName7.Arbitrum,
1602
1699
  displayName: "Arbitrum",
@@ -1639,7 +1736,7 @@ var NativeTokenBase = {
1639
1736
  decimals: 18,
1640
1737
  logoUrl: "https://joai.ai/images/tokens/eth.svg"
1641
1738
  };
1642
- var getBaseAdapter = createEvmAdapter(WarpChainName8.Base, {
1739
+ var BaseAdapter = createEvmAdapter(WarpChainName8.Base, {
1643
1740
  mainnet: {
1644
1741
  name: WarpChainName8.Base,
1645
1742
  displayName: "Base",
@@ -1673,21 +1770,27 @@ var getBaseAdapter = createEvmAdapter(WarpChainName8.Base, {
1673
1770
  });
1674
1771
 
1675
1772
  // src/chains/combined.ts
1676
- import { WarpChainName as WarpChainName11 } from "@vleap/warps";
1773
+ import { WarpChainName as WarpChainName9 } from "@vleap/warps";
1774
+ var getAllEvmChainNames = () => [
1775
+ WarpChainName9.Ethereum,
1776
+ WarpChainName9.Base,
1777
+ WarpChainName9.Arbitrum,
1778
+ WarpChainName9.Somnia
1779
+ ];
1677
1780
 
1678
1781
  // src/chains/ethereum.ts
1679
- import { WarpChainName as WarpChainName9 } from "@vleap/warps";
1782
+ import { WarpChainName as WarpChainName10 } from "@vleap/warps";
1680
1783
  var NativeTokenEth = {
1681
- chain: WarpChainName9.Ethereum,
1784
+ chain: WarpChainName10.Ethereum,
1682
1785
  identifier: "ETH",
1683
1786
  symbol: "ETH",
1684
1787
  name: "Ether",
1685
1788
  decimals: 18,
1686
1789
  logoUrl: "https://joai.ai/images/tokens/eth.svg"
1687
1790
  };
1688
- var getEthereumAdapter = createEvmAdapter(WarpChainName9.Ethereum, {
1791
+ var EthereumAdapter = createEvmAdapter(WarpChainName10.Ethereum, {
1689
1792
  mainnet: {
1690
- name: WarpChainName9.Ethereum,
1793
+ name: WarpChainName10.Ethereum,
1691
1794
  displayName: "Ethereum Mainnet",
1692
1795
  chainId: "1",
1693
1796
  blockTime: 12e3,
@@ -1697,7 +1800,7 @@ var getEthereumAdapter = createEvmAdapter(WarpChainName9.Ethereum, {
1697
1800
  nativeToken: NativeTokenEth
1698
1801
  },
1699
1802
  testnet: {
1700
- name: WarpChainName9.Ethereum,
1803
+ name: WarpChainName10.Ethereum,
1701
1804
  displayName: "Ethereum Sepolia",
1702
1805
  chainId: "11155111",
1703
1806
  blockTime: 12e3,
@@ -1707,7 +1810,7 @@ var getEthereumAdapter = createEvmAdapter(WarpChainName9.Ethereum, {
1707
1810
  nativeToken: NativeTokenEth
1708
1811
  },
1709
1812
  devnet: {
1710
- name: WarpChainName9.Ethereum,
1813
+ name: WarpChainName10.Ethereum,
1711
1814
  displayName: "Ethereum Sepolia",
1712
1815
  chainId: "11155111",
1713
1816
  blockTime: 12e3,
@@ -1718,10 +1821,13 @@ var getEthereumAdapter = createEvmAdapter(WarpChainName9.Ethereum, {
1718
1821
  }
1719
1822
  });
1720
1823
 
1824
+ // src/adapters.ts
1825
+ import { withAdapterFallback } from "@vleap/warps";
1826
+
1721
1827
  // src/chains/somnia.ts
1722
- import { WarpChainName as WarpChainName10 } from "@vleap/warps";
1828
+ import { WarpChainName as WarpChainName11 } from "@vleap/warps";
1723
1829
  var NativeTokenSomi = {
1724
- chain: WarpChainName10.Somnia,
1830
+ chain: WarpChainName11.Somnia,
1725
1831
  identifier: "SOMI",
1726
1832
  symbol: "SOMI",
1727
1833
  name: "Somnia",
@@ -1729,16 +1835,16 @@ var NativeTokenSomi = {
1729
1835
  logoUrl: "https://assets.coingecko.com/coins/images/68061/standard/somniacg.png?1754641117"
1730
1836
  };
1731
1837
  var NativeTokenStt = {
1732
- chain: WarpChainName10.Somnia,
1838
+ chain: WarpChainName11.Somnia,
1733
1839
  identifier: "STT",
1734
1840
  symbol: "STT",
1735
1841
  name: "Somnia Testnet Token",
1736
1842
  decimals: 18,
1737
1843
  logoUrl: "https://assets.coingecko.com/coins/images/68061/standard/somniacg.png?1754641117"
1738
1844
  };
1739
- var getSomniaAdapter = createEvmAdapter(WarpChainName10.Somnia, {
1845
+ var SomniaAdapter = createEvmAdapter(WarpChainName11.Somnia, {
1740
1846
  mainnet: {
1741
- name: WarpChainName10.Somnia,
1847
+ name: WarpChainName11.Somnia,
1742
1848
  displayName: "Somnia Mainnet",
1743
1849
  chainId: "5031",
1744
1850
  blockTime: 100,
@@ -1748,7 +1854,7 @@ var getSomniaAdapter = createEvmAdapter(WarpChainName10.Somnia, {
1748
1854
  nativeToken: NativeTokenSomi
1749
1855
  },
1750
1856
  testnet: {
1751
- name: WarpChainName10.Somnia,
1857
+ name: WarpChainName11.Somnia,
1752
1858
  displayName: "Somnia Testnet",
1753
1859
  chainId: "50312",
1754
1860
  blockTime: 100,
@@ -1758,7 +1864,7 @@ var getSomniaAdapter = createEvmAdapter(WarpChainName10.Somnia, {
1758
1864
  nativeToken: NativeTokenStt
1759
1865
  },
1760
1866
  devnet: {
1761
- name: WarpChainName10.Somnia,
1867
+ name: WarpChainName11.Somnia,
1762
1868
  displayName: "Somnia Testnet",
1763
1869
  chainId: "50312",
1764
1870
  blockTime: 100,
@@ -1769,32 +1875,29 @@ var getSomniaAdapter = createEvmAdapter(WarpChainName10.Somnia, {
1769
1875
  }
1770
1876
  });
1771
1877
 
1772
- // src/chains/combined.ts
1773
- var getAllEvmAdapters = (config, fallback) => [
1774
- getEthereumAdapter(config, fallback),
1775
- getBaseAdapter(config, fallback),
1776
- getArbitrumAdapter(config, fallback),
1777
- getSomniaAdapter(config, fallback)
1778
- ];
1779
- var getAllEvmChainNames = () => [
1780
- WarpChainName11.Ethereum,
1781
- WarpChainName11.Base,
1782
- WarpChainName11.Arbitrum,
1783
- WarpChainName11.Somnia
1878
+ // src/adapters.ts
1879
+ var getAllEvmAdapters = (fallbackFactory) => [
1880
+ withAdapterFallback(EthereumAdapter, fallbackFactory),
1881
+ withAdapterFallback(BaseAdapter, fallbackFactory),
1882
+ withAdapterFallback(ArbitrumAdapter, fallbackFactory),
1883
+ withAdapterFallback(SomniaAdapter, fallbackFactory)
1784
1884
  ];
1785
1885
  export {
1886
+ ArbitrumAdapter,
1786
1887
  ArbitrumExplorers,
1888
+ BaseAdapter,
1787
1889
  BaseExplorers,
1890
+ EthereumAdapter,
1788
1891
  EthereumExplorers,
1892
+ EvmChainIdMap,
1893
+ EvmChainIds,
1789
1894
  EvmExplorers,
1790
1895
  ExplorerUrls,
1791
1896
  KnownTokens,
1792
- MnemonicWalletProvider,
1793
1897
  NativeTokenArb,
1794
1898
  NativeTokenBase,
1795
1899
  NativeTokenEth,
1796
- PrivateKeyWalletProvider,
1797
- UniswapService,
1900
+ SupportedEvmChainIds,
1798
1901
  WarpEvmConstants,
1799
1902
  WarpEvmDataLoader,
1800
1903
  WarpEvmExecutor,
@@ -1806,9 +1909,6 @@ export {
1806
1909
  findKnownTokenById,
1807
1910
  getAllEvmAdapters,
1808
1911
  getAllEvmChainNames,
1809
- getArbitrumAdapter,
1810
- getBaseAdapter,
1811
- getEthereumAdapter,
1812
1912
  getKnownTokensForChain
1813
1913
  };
1814
1914
  //# sourceMappingURL=index.mjs.map