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";8import { alicesPublicKey, bobsPublicKey } from "./accounts";9import privateKey from "./substrate/privateKey";1011async function getBalance(api: ApiPromise, accounts: string[]): Promise<bigint[]> {12 const balance = promisifySubstrate(api, (accounts: string[]) => api.query.system.account.multi(accounts));13 const responce = await balance(accounts) as unknown as AccountInfo[];14 return responce.map(r => r.data.free.toBigInt().valueOf());15}1617describe('Transfer', () => {18 it('Balance transfers', async () => {19 await usingApi(async api => {20 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);2122 const alicePrivateKey = privateKey('//Alice');23 24 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);25 26 await promisifySubstrate(api, () => transfer.signAndSend(alicePrivateKey))();2728 await waitNewBlocks(api);29 30 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);3132 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;33 expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;34 });35 });36});