diff --git a/packages/config/src/mrl-configs/fantomTestnet.ts b/packages/config/src/mrl-configs/fantomTestnet.ts index 3059b96c..2d8a7aed 100644 --- a/packages/config/src/mrl-configs/fantomTestnet.ts +++ b/packages/config/src/mrl-configs/fantomTestnet.ts @@ -35,6 +35,7 @@ export const fantomTestnetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, amount: 0.1, @@ -66,6 +67,7 @@ export const fantomTestnetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, amount: 0.1, @@ -97,6 +99,8 @@ export const fantomTestnetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: agng, + balance: BalanceBuilder().substrate().assets().account(), + fee: { asset: dev, amount: 0.1, @@ -128,6 +132,7 @@ export const fantomTestnetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, amount: 0.1, @@ -159,6 +164,7 @@ export const fantomTestnetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, amount: 0.1, @@ -190,6 +196,7 @@ export const fantomTestnetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: dev, + balance: BalanceBuilder().substrate().system().account(), fee: { asset: dev, amount: 0.1, diff --git a/packages/config/src/mrl-configs/moonbaseAlpha.ts b/packages/config/src/mrl-configs/moonbaseAlpha.ts index 9538185e..0a54a001 100644 --- a/packages/config/src/mrl-configs/moonbaseAlpha.ts +++ b/packages/config/src/mrl-configs/moonbaseAlpha.ts @@ -33,9 +33,10 @@ export const moonbaseAlphaRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, - amount: 0.1, // TODO not really, it would be the source fee as source is moonChain + amount: 0.1, balance: BalanceBuilder().substrate().system().account(), }, }, @@ -64,6 +65,7 @@ export const moonbaseAlphaRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().wormhole().tokenTransfer(), moonChain: { asset: dev, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, amount: 0, diff --git a/packages/config/src/mrl-configs/moonbaseBeta.ts b/packages/config/src/mrl-configs/moonbaseBeta.ts index 00d5b2df..d464aad6 100644 --- a/packages/config/src/mrl-configs/moonbaseBeta.ts +++ b/packages/config/src/mrl-configs/moonbaseBeta.ts @@ -33,6 +33,7 @@ export const moonbaseBetaRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().extrinsic().polkadotXcm().send(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().substrate().assets().account(), fee: { asset: dev, amount: 0.1, diff --git a/packages/config/src/mrl-configs/peaqAlphanet.ts b/packages/config/src/mrl-configs/peaqAlphanet.ts index d076e6f8..80e88acc 100644 --- a/packages/config/src/mrl-configs/peaqAlphanet.ts +++ b/packages/config/src/mrl-configs/peaqAlphanet.ts @@ -37,6 +37,7 @@ export const peaqAlphanetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().extrinsic().polkadotXcm().send(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, amount: 0.1, @@ -72,6 +73,7 @@ export const peaqAlphanetRoutes = new MrlChainRoutes({ transfer: MrlBuilder().wormhole().extrinsic().polkadotXcm().send(), moonChain: { asset: agng, + balance: BalanceBuilder().substrate().assets().account(), fee: { asset: dev, amount: 0.1, diff --git a/packages/config/src/mrl-configs/peaqEvmAlphanet.ts b/packages/config/src/mrl-configs/peaqEvmAlphanet.ts index 0d562e43..9b94d83a 100644 --- a/packages/config/src/mrl-configs/peaqEvmAlphanet.ts +++ b/packages/config/src/mrl-configs/peaqEvmAlphanet.ts @@ -41,6 +41,7 @@ export const peaqEvmAlphanetRoutes = new MrlChainRoutes({ .transferAssetsAndMessage(), moonChain: { asset: ftmwh, + balance: BalanceBuilder().evm().erc20(), fee: { asset: dev, amount: 0.1, diff --git a/packages/config/src/types/AssetRoute.ts b/packages/config/src/types/AssetRoute.ts index e8d4069e..34574411 100644 --- a/packages/config/src/types/AssetRoute.ts +++ b/packages/config/src/types/AssetRoute.ts @@ -58,6 +58,7 @@ export interface DestinationFeeConfig export interface MoonChainConfig { asset: Asset; + balance: BalanceConfigBuilder; fee: MoonChainFeeConfig; } diff --git a/packages/mrl/package.json b/packages/mrl/package.json index b0f3fbab..a557220b 100644 --- a/packages/mrl/package.json +++ b/packages/mrl/package.json @@ -6,7 +6,10 @@ "build": "tsup", "dev": "tsup --watch", "link": "pnpm ln --global", - "typecheck": "tsc --noEmit" + "typecheck": "tsc --noEmit", + "test": "vitest --run", + "test:watch": "vitest", + "test:update": "vitest -u" }, "repository": { "directory": "packages/mrl", @@ -42,6 +45,7 @@ "@polkadot/api-augment": "14.3.1", "@polkadot/types": "14.3.1", "@polkadot/util": "13.2.3", + "@polkadot/util-crypto": "13.2.3", "@wormhole-foundation/sdk-connect": "^0.10.7", "@wormhole-foundation/sdk-evm": "^0.10.7", "viem": "^2.21.7" diff --git a/packages/mrl/src/getTransferData/getMoonChainData.test.ts b/packages/mrl/src/getTransferData/getMoonChainData.test.ts new file mode 100644 index 00000000..292f04a1 --- /dev/null +++ b/packages/mrl/src/getTransferData/getMoonChainData.test.ts @@ -0,0 +1,60 @@ +import { describe, expect, it } from 'vitest'; + +import { + fantomTestnet, + moonbaseAlpha, + peaqAlphanet, +} from '@moonbeam-network/xcm-config'; +import { getMoonChainAddress } from './getMoonChainData'; + +describe('mrl - getMoonChainData', () => { + describe('getMoonChainAddress', () => { + it('should return the correct moonchain address for a parachain to evm transaction', () => { + const params = { + source: peaqAlphanet, + destination: fantomTestnet, + sourceAddress: '5GWpSdqkkKGZmdKQ9nkSF7TmHp6JWt28BMGQNuG4MXtSvq3e', + destinationAddress: '0x08480769599E23F626efff39B89F3137e9917a40', + }; + + const result = getMoonChainAddress(params); + expect(result).toBe('0xa18b59fcd9d8a76c3cb16dc6dc42296ebb66a57a'); // computed origin account + }); + + it('should return the correct moonchain address for a evm to parachain transaction', () => { + const params = { + source: fantomTestnet, + destination: peaqAlphanet, + sourceAddress: '0x08480769599E23F626efff39B89F3137e9917a40', + destinationAddress: '5GWpSdqkkKGZmdKQ9nkSF7TmHp6JWt28BMGQNuG4MXtSvq3e', + }; + + const result = getMoonChainAddress(params); + expect(result).toBe('0x08480769599E23F626efff39B89F3137e9917a40'); + }); + + it('should return the source chain address when source is a moonchain', () => { + const params = { + source: moonbaseAlpha, + destination: fantomTestnet, + sourceAddress: '0x08480769599E23F626efff39B89F3137e9917a40', + destinationAddress: '0x08480769599E23F626efff39B89F3137e9917a40', + }; + + const result = getMoonChainAddress(params); + expect(result).toBe('0x08480769599E23F626efff39B89F3137e9917a40'); + }); + + it('should return the destination chain address when destination is a moonchain', () => { + const params = { + source: fantomTestnet, + destination: moonbaseAlpha, + sourceAddress: '0x08480769599E23F626efff39B89F3137e9917a40', + destinationAddress: '0x08480769599E23F626efff39B89F3137e9917a40', + }; + + const result = getMoonChainAddress(params); + expect(result).toBe('0x08480769599E23F626efff39B89F3137e9917a40'); + }); + }); +}); diff --git a/packages/mrl/src/getTransferData/getMoonChainData.ts b/packages/mrl/src/getTransferData/getMoonChainData.ts index 752dd9f6..ed03836d 100644 --- a/packages/mrl/src/getTransferData/getMoonChainData.ts +++ b/packages/mrl/src/getTransferData/getMoonChainData.ts @@ -1,17 +1,24 @@ import { type MrlAssetRoute, getMoonChain } from '@moonbeam-network/xcm-config'; import { getBalance, getDestinationFee } from '@moonbeam-network/xcm-sdk'; -import { Parachain } from '@moonbeam-network/xcm-types'; +import { + type AnyChain, + EvmParachain, + Parachain, +} from '@moonbeam-network/xcm-types'; import { getMultilocationDerivedAddresses } from '@moonbeam-network/xcm-utils'; +import { evmToAddress } from '@polkadot/util-crypto'; import type { MoonChainTransferData } from '../mrl.interfaces'; interface GetMoonChainDataParams { route: MrlAssetRoute; sourceAddress: string; + destinationAddress: string; } export async function getMoonChainData({ route, sourceAddress, + destinationAddress, }: GetMoonChainDataParams): Promise { if (!route.mrl) { throw new Error( @@ -20,40 +27,81 @@ export async function getMoonChainData({ } const moonChain = getMoonChain(route.source.chain); + const moonChainAddress = getMoonChainAddress({ + source: route.source.chain, + destination: route.destination.chain, + sourceAddress, + destinationAddress, + }); + console.log('sourceAddress', sourceAddress); const fee = await getDestinationFee({ - address: sourceAddress, // TODO not correct + address: moonChainAddress, asset: route.source.asset, destination: moonChain, fee: route.mrl.moonChain.fee.amount, feeAsset: route.mrl.moonChain.fee.asset, }); - let address = sourceAddress; - - if ( - Parachain.is(route.source.chain) && - !route.source.chain.isEqual(moonChain) - ) { - const { address20 } = getMultilocationDerivedAddresses({ - address: sourceAddress, - paraId: route.source.chain.parachainId, - isParents: true, - }); - - address = address20; - } + const balance = await getBalance({ + address: moonChainAddress, + asset: moonChain.getChainAsset(route.mrl.moonChain.asset), + builder: route.mrl.moonChain.balance, + chain: moonChain, + }); const feeBalance = await getBalance({ - address, + address: moonChainAddress, asset: moonChain.getChainAsset(route.mrl.moonChain.fee.asset), builder: route.mrl.moonChain.fee.balance, chain: moonChain, }); return { + address: moonChainAddress, + balance, feeBalance, chain: moonChain, fee, }; } + +interface GetMoonChainAddressParams { + source: AnyChain; + destination: AnyChain; + sourceAddress: string; + destinationAddress: string; +} + +export function getMoonChainAddress({ + source, + destination, + sourceAddress, + destinationAddress, +}: GetMoonChainAddressParams): string { + const moonChain = getMoonChain(source); + const isDestinationMoonChain = moonChain.isEqual(destination); + const isSourceMoonChain = moonChain.isEqual(source); + + let moonChainAddress = isDestinationMoonChain + ? destinationAddress + : sourceAddress; + + // for Parachain to EVM transactions, we use the computed origin account in the moonchain + if (Parachain.is(source) && !isSourceMoonChain) { + const isSourceEvmSigner = EvmParachain.is(source) && source.isEvmSigner; + + const { address20: computedOriginAccount } = + getMultilocationDerivedAddresses({ + address: isSourceEvmSigner + ? evmToAddress(sourceAddress) + : sourceAddress, + paraId: source.parachainId, + isParents: true, + }); + + moonChainAddress = computedOriginAccount; + } + + return moonChainAddress; +} diff --git a/packages/mrl/src/getTransferData/getTransferData.ts b/packages/mrl/src/getTransferData/getTransferData.ts index d56ffcb6..4e01a831 100644 --- a/packages/mrl/src/getTransferData/getTransferData.ts +++ b/packages/mrl/src/getTransferData/getTransferData.ts @@ -70,6 +70,7 @@ export async function getTransferData({ const moonChainData = await getMoonChainData({ route, sourceAddress, + destinationAddress, }); return { diff --git a/packages/mrl/src/mrl.interfaces.ts b/packages/mrl/src/mrl.interfaces.ts index 64564602..9ace7d03 100644 --- a/packages/mrl/src/mrl.interfaces.ts +++ b/packages/mrl/src/mrl.interfaces.ts @@ -40,10 +40,8 @@ export interface SourceTransferData extends SourceChainTransferData { export interface DestinationTransferData extends ChainTransferData {} -export type MoonChainTransferData = Omit< - ChainTransferData, - 'min' | 'balance' -> & { +export type MoonChainTransferData = Omit & { + address: string; feeBalance: AssetAmount; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3d54f40..9938c80d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -209,6 +209,9 @@ importers: '@polkadot/util': specifier: 13.2.3 version: 13.2.3 + '@polkadot/util-crypto': + specifier: 13.2.3 + version: 13.2.3(@polkadot/util@13.2.3) '@wormhole-foundation/sdk-connect': specifier: ^0.10.7 version: 0.10.8 @@ -1211,6 +1214,10 @@ packages: resolution: {integrity: sha512-PE6DW+8kRhbnGKn7qCF7yM6eEt/kqrY8bh1i0RZcPY9QgwXW4bZZrtMK4WssX6Z70NTEoOW6xHYIjc7gFZuz8g==} engines: {node: '>=18'} + '@polkadot/api-augment@15.0.2': + resolution: {integrity: sha512-7qtfTihLKS7cT2kEsd8Y1+MJ+2n4Sl0y9BHuPhdNfKcDbGwCxIB7JzXNujww4Is4bF7w1lXcM2U0E/XwJi1BbQ==} + engines: {node: '>=18'} + '@polkadot/api-augment@7.15.1': resolution: {integrity: sha512-7csQLS6zuYuGq7W1EkTBz1ZmxyRvx/Qpz7E7zPSwxmY8Whb7Yn2effU9XF0eCcRpyfSW8LodF8wMmLxGYs1OaQ==} engines: {node: '>=14.0.0'} @@ -1227,6 +1234,10 @@ packages: resolution: {integrity: sha512-GZT6rTpT3HYZ/C3rLPjoX3rX3DOxNG/zgts+jKjNrCumAeZkVq5JErKIX8/3f2TVaE2Kbqniy3d1TH/AL4HBPA==} engines: {node: '>=18'} + '@polkadot/api-base@15.0.2': + resolution: {integrity: sha512-5++EjpuCxzmrL2JJj511RrPK+IovuIQa8DJhyOp62VDMXPkqS/O6Df5wjYzQh/ftT1ZysftXqJAUA/LSUsH+2g==} + engines: {node: '>=18'} + '@polkadot/api-base@7.15.1': resolution: {integrity: sha512-UlhLdljJPDwGpm5FxOjvJNFTxXMRFaMuVNx6EklbuetbBEJ/Amihhtj0EJRodxQwtZ4ZtPKYKt+g+Dn7OJJh4g==} engines: {node: '>=14.0.0'} @@ -1243,6 +1254,10 @@ packages: resolution: {integrity: sha512-PhqUEJCY54vXtIaoYqGUtJY06wHd/K0cBmBz9yCLxp8UZkLoGWhfJRTruI25Jnucf9awS5cZKYqbsoDrL09Oqg==} engines: {node: '>=18'} + '@polkadot/api-derive@15.0.2': + resolution: {integrity: sha512-nD8hXZxEv2/wuhjMmVP09lTAYd8inNgrLpLGUR+7hBQeVEQQTdNatkqMKpNIOk2MO46mtUK35NepvDBK9DWZzA==} + engines: {node: '>=18'} + '@polkadot/api-derive@7.15.1': resolution: {integrity: sha512-CsOQppksQBaa34L1fWRzmfQQpoEBwfH0yTTQxgj3h7rFYGVPxEKGeFjo1+IgI2vXXvOO73Z8E4H/MnbxvKrs1Q==} engines: {node: '>=14.0.0'} @@ -1259,6 +1274,10 @@ packages: resolution: {integrity: sha512-ZBKSXEVJa1S1bnmpnA7KT/fX3sJDIJOdVD9Hp3X+G73yvXzuK5k1Mn5z9bD/AcMs/HAGcbuYU+b9+b9IByH9YQ==} engines: {node: '>=18'} + '@polkadot/api@15.0.2': + resolution: {integrity: sha512-CA8Pq2Gsz2MJvpkpIVNzaBs2eJGCr0sEodAb0vTOZW/ZlIDHcBWyWq3KXE+lBMWVzYBEC4Vz6MafNgq6Bsshlw==} + engines: {node: '>=18'} + '@polkadot/api@7.15.1': resolution: {integrity: sha512-z0z6+k8+R9ixRMWzfsYrNDnqSV5zHKmyhTCL0I7+1I081V18MJTCFUKubrh0t1gD0/FCt3U9Ibvr4IbtukYLrQ==} engines: {node: '>=14.0.0'} @@ -1356,6 +1375,10 @@ packages: resolution: {integrity: sha512-Z8Hp8fFHwFCiTX0bBCDqCZ4U26wLIJl1NRSjJTsAr+SS68pYZBDGCwhKztpKGqndk1W1akRUaxrkGqYdIFmspQ==} engines: {node: '>=18'} + '@polkadot/rpc-augment@15.0.2': + resolution: {integrity: sha512-of88GdzsOs15HP+Gowh4G/iKKFkCNIeF0Wes8LiONfn+j2TmWt8blbyGhrIZZeApzbFUDFjnxUPGT40uWJcMpw==} + engines: {node: '>=18'} + '@polkadot/rpc-augment@7.15.1': resolution: {integrity: sha512-sK0+mphN7nGz/eNPsshVi0qd0+N0Pqxuebwc1YkUGP0f9EkDxzSGp6UjGcSwWVaAtk9WZZ1MpK1Jwb/2GrKV7Q==} engines: {node: '>=14.0.0'} @@ -1372,6 +1395,10 @@ packages: resolution: {integrity: sha512-FV2NPhFwFxmX8LqibDcGc6IKTBqmvwr7xwF2OA60Br4cX+AQzMSVpFlfQcETll+0M+LnRhqGKGkP0EQWXaSowA==} engines: {node: '>=18'} + '@polkadot/rpc-core@15.0.2': + resolution: {integrity: sha512-KOUnfXOAFCN0N23sEbS+FzXhX88JCvJst/nKzO9+q67NgYBEqgcaoG4tqt/VVedgkNi0kA7WAA3wyjt5UYMnrg==} + engines: {node: '>=18'} + '@polkadot/rpc-core@7.15.1': resolution: {integrity: sha512-4Sb0e0PWmarCOizzxQAE1NQSr5z0n+hdkrq3+aPohGu9Rh4PodG+OWeIBy7Ov/3GgdhNQyBLG+RiVtliXecM3g==} engines: {node: '>=14.0.0'} @@ -1388,6 +1415,10 @@ packages: resolution: {integrity: sha512-NF/Z/7lzT+jp5LZzC49g+YIjRzXVI0hFag3+B+4zh6E/kKADdF59EHj2Im4LDhRGOnEO9AE4H6/UjNEbZ94JtA==} engines: {node: '>=18'} + '@polkadot/rpc-provider@15.0.2': + resolution: {integrity: sha512-BwLP8gNskzqtQ2kMk+EX6WK4d9TU0XJ/nJg0TKC2dX5sSTpTF2JQIYp1wuOik4rKNXIU/1hKaDSSylMJj7AHeQ==} + engines: {node: '>=18'} + '@polkadot/rpc-provider@7.15.1': resolution: {integrity: sha512-n0RWfSaD/r90JXeJkKry1aGZwJeBUUiMpXUQ9Uvp6DYBbYEDs0fKtWLpdT3PdFrMbe5y3kwQmNLxwe6iF4+mzg==} engines: {node: '>=14.0.0'} @@ -1404,6 +1435,10 @@ packages: resolution: {integrity: sha512-SC4M6TBlgCglNz+gRbvfoVRDz0Vyeev6v0HeAdw0H6ayEW4BXUdo5bFr0092bdS5uTrEPgiSyUry5TJs2KoXig==} engines: {node: '>=18'} + '@polkadot/types-augment@15.0.2': + resolution: {integrity: sha512-UiFJVEYML30+V9GdFAHPbA3s4MVQTL1CevsZMnX0+ApvlgEHJMZnVFfYF7jL2bl9BcUYM/zoxEAhj2MpqFFfxw==} + engines: {node: '>=18'} + '@polkadot/types-augment@7.15.1': resolution: {integrity: sha512-aqm7xT/66TCna0I2utpIekoquKo0K5pnkA/7WDzZ6gyD8he2h0IXfe8xWjVmuyhjxrT/C/7X1aUF2Z0xlOCwzQ==} engines: {node: '>=14.0.0'} @@ -1420,6 +1455,10 @@ packages: resolution: {integrity: sha512-3y3RBGd+8ebscGbNUOjqUjnRE7hgicgid5LtofHK3O1EDcJQJnYBDkJ7fOAi96CDgHsg+f2FWWkBWEPgpOQoMQ==} engines: {node: '>=18'} + '@polkadot/types-codec@15.0.2': + resolution: {integrity: sha512-44Q40p1rl0t7Bl1QUamewqXNVPway9xgqByyifv6ODSGhtt+lFoarb3U4JzqRUuuK0PP57ePB0L8q81Totxeew==} + engines: {node: '>=18'} + '@polkadot/types-codec@7.15.1': resolution: {integrity: sha512-nI11dT7FGaeDd/fKPD8iJRFGhosOJoyjhZ0gLFFDlKCaD3AcGBRTTY8HFJpP/5QXXhZzfZsD93fVKrosnegU0Q==} engines: {node: '>=14.0.0'} @@ -1436,6 +1475,10 @@ packages: resolution: {integrity: sha512-F4EBvF3Zvym0xrkAA5Yz01IAVMepMV3w2Dwd0C9IygEAQ5sYLLPHmf72/aXn+Ag+bSyT2wlJHpDc+nEBXNQ3Gw==} engines: {node: '>=18'} + '@polkadot/types-create@15.0.2': + resolution: {integrity: sha512-YhpcqbH3oI87PkgrV6Fez9jWDqFIep0KcS1YWQcwc9gsBNnuour80t2AAK41/tqAYwOZi6tpJwIevnEhVkxFYA==} + engines: {node: '>=18'} + '@polkadot/types-create@7.15.1': resolution: {integrity: sha512-+HiaHn7XOwP0kv/rVdORlVkNuMoxuvt+jd67A/CeEreJiXqRLu+S61Mdk7wi6719PTaOal1hTDFfyGrtUd8FSQ==} engines: {node: '>=14.0.0'} @@ -1452,6 +1495,10 @@ packages: resolution: {integrity: sha512-58b3Yc7+sxwNjs8axmrA9OCgnxmEKIq7XCH2VxSgLqTeqbohVtxwUSCW/l8NPrq1nxzj4J2sopu0PPg8/++q4g==} engines: {node: '>=18'} + '@polkadot/types-known@15.0.2': + resolution: {integrity: sha512-SyBo4xBoesHYiEfdW/nOgaftKgM7+puBWqQXq1Euz0MM5LDLjxBw22Srgk9ulGM6l9MsekIwCyX8geJ6/6J3Cg==} + engines: {node: '>=18'} + '@polkadot/types-known@4.17.1': resolution: {integrity: sha512-YkOwGrO+k9aVrBR8FgYHnfJKhOfpdgC5ZRYNL/xJ9oa7lBYqPts9ENAxeBmJS/5IGeDF9f32MNyrCP2umeCXWg==} engines: {node: '>=14.0.0'} @@ -1476,6 +1523,10 @@ packages: resolution: {integrity: sha512-MfVe4iIOJIfBr+gj8Lu8gwIvhnO6gDbG5LeaKAjY6vS6Oh0y5Ztr8NdMIl8ccSpoyt3LqIXjfApeGzHiLzr6bw==} engines: {node: '>=18'} + '@polkadot/types-support@15.0.2': + resolution: {integrity: sha512-I7Im/4K2/XDZ1LfeQeeNyvIkfvozIPQs8K1/nsICDOmBbvIsjxSeKWHOcFDMJ8AlPEer6bqNQavOyZA/pg9R/Q==} + engines: {node: '>=18'} + '@polkadot/types-support@7.15.1': resolution: {integrity: sha512-FIK251ffVo+NaUXLlaJeB5OvT7idDd3uxaoBM6IwsS87rzt2CcWMyCbu0uX89AHZUhSviVx7xaBxfkGEqMePWA==} engines: {node: '>=14.0.0'} @@ -1492,6 +1543,10 @@ packages: resolution: {integrity: sha512-O748XgCLDQYxS5nQ6TJSqW88oC4QNIoNVlWZC2Qq4SmEXuSzaNHQwSVtdyPRJCCc4Oi1DCQvGui4O+EukUl7HA==} engines: {node: '>=18'} + '@polkadot/types@15.0.2': + resolution: {integrity: sha512-6gZBnuXU58hQAXWI2daED2OaQwFMxbQdkE8HVGMovMobEf0PxPfIqf+GdnVmWbe09EU9mv2gCWBcdnvHSRBlQg==} + engines: {node: '>=18'} + '@polkadot/types@4.17.1': resolution: {integrity: sha512-rjW4OFdwvFekzN3ATLibC2JPSd8AWt5YepJhmuCPdwH26r3zB8bEC6dM7YQExLVUmygVPvgXk5ffHI6RAdXBMg==} engines: {node: '>=14.0.0'} @@ -2324,7 +2379,6 @@ packages: bun@1.1.33: resolution: {integrity: sha512-pNcxhsh87TURsaXwwLnOggb1HWdSDgOOjupTuXINmQUZeZ4UzLeVK8h8trzIVA0ECijDex94AkAQ5/JG4r5gkg==} - cpu: [arm64, x64] os: [darwin, linux, win32] hasBin: true @@ -4816,6 +4870,20 @@ snapshots: - supports-color - utf-8-validate + '@polkadot/api-augment@15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@polkadot/api-base': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/rpc-augment': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/types': 15.0.2 + '@polkadot/types-augment': 15.0.2 + '@polkadot/types-codec': 15.0.2 + '@polkadot/util': 13.2.3 + tslib: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@polkadot/api-augment@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -4867,6 +4935,18 @@ snapshots: - supports-color - utf-8-validate + '@polkadot/api-base@15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@polkadot/rpc-core': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/types': 15.0.2 + '@polkadot/util': 13.2.3 + rxjs: 7.8.1 + tslib: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@polkadot/api-base@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -4924,6 +5004,23 @@ snapshots: - supports-color - utf-8-validate + '@polkadot/api-derive@15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@polkadot/api': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/api-augment': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/api-base': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/rpc-core': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/types': 15.0.2 + '@polkadot/types-codec': 15.0.2 + '@polkadot/util': 13.2.3 + '@polkadot/util-crypto': 13.2.3(@polkadot/util@13.2.3) + rxjs: 7.8.1 + tslib: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@polkadot/api-derive@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5005,6 +5102,30 @@ snapshots: - supports-color - utf-8-validate + '@polkadot/api@15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@polkadot/api-augment': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/api-base': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/api-derive': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/keyring': 13.2.3(@polkadot/util-crypto@13.2.3(@polkadot/util@13.2.3))(@polkadot/util@13.2.3) + '@polkadot/rpc-augment': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/rpc-core': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/rpc-provider': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/types': 15.0.2 + '@polkadot/types-augment': 15.0.2 + '@polkadot/types-codec': 15.0.2 + '@polkadot/types-create': 15.0.2 + '@polkadot/types-known': 15.0.2 + '@polkadot/util': 13.2.3 + '@polkadot/util-crypto': 13.2.3(@polkadot/util@13.2.3) + eventemitter3: 5.0.1 + rxjs: 7.8.1 + tslib: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@polkadot/api@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5230,6 +5351,18 @@ snapshots: - supports-color - utf-8-validate + '@polkadot/rpc-augment@15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@polkadot/rpc-core': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/types': 15.0.2 + '@polkadot/types-codec': 15.0.2 + '@polkadot/util': 13.2.3 + tslib: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@polkadot/rpc-augment@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5279,6 +5412,19 @@ snapshots: - supports-color - utf-8-validate + '@polkadot/rpc-core@15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@polkadot/rpc-augment': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/rpc-provider': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/types': 15.0.2 + '@polkadot/util': 13.2.3 + rxjs: 7.8.1 + tslib: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@polkadot/rpc-core@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5346,6 +5492,27 @@ snapshots: - supports-color - utf-8-validate + '@polkadot/rpc-provider@15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@polkadot/keyring': 13.2.3(@polkadot/util-crypto@13.2.3(@polkadot/util@13.2.3))(@polkadot/util@13.2.3) + '@polkadot/types': 15.0.2 + '@polkadot/types-support': 15.0.2 + '@polkadot/util': 13.2.3 + '@polkadot/util-crypto': 13.2.3(@polkadot/util@13.2.3) + '@polkadot/x-fetch': 13.2.3 + '@polkadot/x-global': 13.2.3 + '@polkadot/x-ws': 13.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + eventemitter3: 5.0.1 + mock-socket: 9.3.1 + nock: 13.5.5 + tslib: 2.8.1 + optionalDependencies: + '@substrate/connect': 0.8.11(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@polkadot/rpc-provider@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5400,6 +5567,13 @@ snapshots: '@polkadot/util': 13.2.3 tslib: 2.8.1 + '@polkadot/types-augment@15.0.2': + dependencies: + '@polkadot/types': 15.0.2 + '@polkadot/types-codec': 15.0.2 + '@polkadot/util': 13.2.3 + tslib: 2.8.1 + '@polkadot/types-augment@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5426,6 +5600,12 @@ snapshots: '@polkadot/x-bigint': 13.2.3 tslib: 2.8.1 + '@polkadot/types-codec@15.0.2': + dependencies: + '@polkadot/util': 13.2.3 + '@polkadot/x-bigint': 13.2.3 + tslib: 2.8.1 + '@polkadot/types-codec@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5449,6 +5629,12 @@ snapshots: '@polkadot/util': 13.2.3 tslib: 2.8.1 + '@polkadot/types-create@15.0.2': + dependencies: + '@polkadot/types-codec': 15.0.2 + '@polkadot/util': 13.2.3 + tslib: 2.8.1 + '@polkadot/types-create@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5479,6 +5665,15 @@ snapshots: '@polkadot/util': 13.2.3 tslib: 2.8.1 + '@polkadot/types-known@15.0.2': + dependencies: + '@polkadot/networks': 13.2.3 + '@polkadot/types': 15.0.2 + '@polkadot/types-codec': 15.0.2 + '@polkadot/types-create': 15.0.2 + '@polkadot/util': 13.2.3 + tslib: 2.8.1 + '@polkadot/types-known@4.17.1': dependencies: '@babel/runtime': 7.25.6 @@ -5521,6 +5716,11 @@ snapshots: '@polkadot/util': 13.2.3 tslib: 2.8.1 + '@polkadot/types-support@15.0.2': + dependencies: + '@polkadot/util': 13.2.3 + tslib: 2.8.1 + '@polkadot/types-support@7.15.1': dependencies: '@babel/runtime': 7.25.6 @@ -5553,6 +5753,17 @@ snapshots: rxjs: 7.8.1 tslib: 2.8.1 + '@polkadot/types@15.0.2': + dependencies: + '@polkadot/keyring': 13.2.3(@polkadot/util-crypto@13.2.3(@polkadot/util@13.2.3))(@polkadot/util@13.2.3) + '@polkadot/types-augment': 15.0.2 + '@polkadot/types-codec': 15.0.2 + '@polkadot/types-create': 15.0.2 + '@polkadot/util': 13.2.3 + '@polkadot/util-crypto': 13.2.3(@polkadot/util@13.2.3) + rxjs: 7.8.1 + tslib: 2.8.1 + '@polkadot/types@4.17.1': dependencies: '@babel/runtime': 7.25.6 @@ -6234,7 +6445,7 @@ snapshots: '@subsocial/definitions@0.8.14(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@polkadot/api': 14.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@polkadot/api': 15.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) lodash.camelcase: 4.3.0 transitivePeerDependencies: - bufferutil