1234import {mnemonicGenerate} from '@polkadot/util-crypto';5import {UniqueHelper} from './unique';6import {IKeyringPair} from '@polkadot/types/types';7import {ApiPromise, WsProvider} from '@polkadot/api';8import * as defs from '../../interfaces/definitions';91011export class DevUniqueHelper extends UniqueHelper {12 131415 arrange: UniqueArrange;1617 constructor(logger: { log: (msg: any, level: any) => void, level: any }) {18 super(logger);19 this.arrange = new UniqueArrange(this);20 }2122 async connect(wsEndpoint: string, listeners?: any): Promise<void> {23 const wsProvider = new WsProvider(wsEndpoint);24 this.api = new ApiPromise({25 provider: wsProvider,26 signedExtensions: {27 ContractHelpers: {28 extrinsic: {},29 payload: {},30 },31 FakeTransactionFinalizer: {32 extrinsic: {},33 payload: {},34 },35 },36 rpc: {37 unique: defs.unique.rpc,38 rmrk: defs.rmrk.rpc,39 eth: {40 feeHistory: {41 description: 'Dummy',42 params: [],43 type: 'u8',44 },45 maxPriorityFeePerGas: {46 description: 'Dummy',47 params: [],48 type: 'u8',49 },50 },51 },52 });53 await this.api.isReadyOrError;54 this.network = await UniqueHelper.detectNetwork(this.api);55 }56}5758class UniqueArrange {59 helper: UniqueHelper;6061 constructor(helper: UniqueHelper) {62 this.helper = helper;63 }6465 66676869707172 creteAccounts = async (balances: bigint[], donor: IKeyringPair): Promise<IKeyringPair[]> => {73 let nonce = await this.helper.chain.getNonce(donor.address);74 const tokenNominal = this.helper.balance.getOneTokenNominal();75 const transactions = [];76 const accounts = [];77 for (const balance of balances) {78 const recepient = this.helper.util.fromSeed(mnemonicGenerate());79 accounts.push(recepient);80 if (balance !== 0n) {81 const tx = this.helper.constructApiCall('api.tx.balances.transfer', [{Id: recepient.address}, balance * tokenNominal]);82 transactions.push(this.helper.signTransaction(donor, tx, 'account generation', {nonce}));83 nonce++;84 }85 }8687 await Promise.all(transactions);88 return accounts;89 };90}