1import createSubstrateApi from "./substrate/substrate-api";2import { Keyring, ApiPromise } from "@polkadot/api";3import {AccountInfo} from "@polkadot/types/interfaces/system";4import { expect } from "chai";5import usingApi from "./substrate/substrate-api";6import promisifySubstrate from "./substrate/promisify-substrate";7import waitNewBlocks from "./substrate/wait-new-blocks";89async function getBalance(api: ApiPromise, accounts: string[]): Promise<bigint[]> {10 const balance = promisifySubstrate(api, (accounts: string[]) => api.query.system.account.multi(accounts));11 const responce = await balance(accounts) as unknown as AccountInfo[];12 return responce.map(r => r.data.free.toBigInt().valueOf());13}1415describe('Transfer', () => {16 it('Balance transfers', async () => {17 const bobsPublicKey = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';18 const alicesPublicKey = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';19 await usingApi(async api => {20 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);2122 const keyring = new Keyring({ type: 'sr25519' });23 24 const alicePrivateKey = keyring.addFromUri('//Alice');25 26 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);27 28 const hash = await transfer.signAndSend(alicePrivateKey);2930 await waitNewBlocks(api);31 32 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);3334 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;35 expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;36 });37 });38});