JSPM

@moonbeam-network/xcm-sdk

0.0.1-dev.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 889
  • Score
    100M100P100Q121397F
  • License MIT

Easy way to transfer assets from Moonbeam, Moonriver, Moonbase to other parachains and back

Package Exports

  • @moonbeam-network/xcm-sdk

Readme

XCM-SDK

⚠️ This package is not production ready and is in heavy development!

Installation

npm i @moonbeam-network/xcm-config @moonbeam-network/xcm-sdk

Usage

Init

import { init } from '@moonbeam-network/xcm-sdk';

const { moonbeam } = init();

// Optionally you can provide signers or do it on get()
const { moonbeam } = init({
  ethersSigner,
  polkadotSigner,
});

Accounts

const moonbeamAddress = '0xeF46c7649270C912704fB09B75097f6E32208b85';
const substrateAddress = '5DG5Fn3ww3KPza1RLoap6QJNzQfEvRebxypDGp35YuMX5y2K';

Deposit

// moonbeam.symbols is a list of asset symbols that you can deposit/withdraw
// chains is a list of chains from which you can deposit asset
const { chains, from } = moonbeam.deposit(moonbeam.symbols[0]);

const { min, send } = await from(chains[0]).get(
  moonbeamAddress,
  substrateAddress,
  // if you haven't provided on init
  { polkadotSigner },
);

await send(min, (event) => console.log(event));

Withdraw

const { chains, to } = moonbeam.withdraw(moonbeam.symbols[0]);

const { min, send } = await to(chains[0]).get(
  substrateAddress,
  // if you haven't provided on init
  { ethersSigner },
);

await send(min, (event) => console.log(event));

Get balances

const unsubscribe = await moonbeam.subscribeToAssetsBalanceInfo(
  moonbeamAddress,
  (balances) => {
    balances.forEach(({ asset, balance, origin }) => {
      // xcDOT: 0.073742 (Polkadot DOT)
      // ...
      console.log(
        `${balance.symbol}: ${toDecimal(balance.balance, balance.decimals)} (${
          origin.name
        } ${asset.originSymbol})`,
      );
    });
  },
);

unsubscribe();

Examples

git clone git@github.com:PureStake/xcm-sdk.git
cd packages/sdk/examples/simple/
npm i

// edit index.ts by adding your accounts

npm start