git.delta.rocks / unique-network / refs/commits / 369492c78777

difftreelog

test upgrade for split pallets

Yaroslav Bolyukin2021-11-04parent: #7ac9c8c.patch.diff
in: master

77 files changed

modifiedtests/.eslintrc.jsondiffbeforeafterboth
--- a/tests/.eslintrc.json
+++ b/tests/.eslintrc.json
@@ -63,6 +63,41 @@
             {
                 "destructuring": "all"
             }
+        ],
+        "object-curly-spacing": "warn",
+        "arrow-spacing": "warn",
+        "array-bracket-spacing": "warn",
+        "template-curly-spacing": "warn",
+        "space-in-parens": "warn",
+        "@typescript-eslint/naming-convention": [
+            "warn",
+            {
+                "selector": "default",
+                "format": [
+                    "camelCase"
+                ],
+                "leadingUnderscore": "allow",
+                "trailingUnderscore": "allow"
+            },
+            {
+                "selector": "variable",
+                "format": [
+                    "camelCase",
+                    "UPPER_CASE"
+                ],
+                "leadingUnderscore": "allow",
+                "trailingUnderscore": "allow"
+            },
+            {
+                "selector": "typeLike",
+                "format": [
+                    "PascalCase"
+                ]
+            },
+            {
+                "selector": "memberLike",
+                "format": null
+            }
         ]
     }
-}
\ No newline at end of file
+}
modifiedtests/src/addCollectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/addCollectionAdmin.test.ts
+++ b/tests/src/addCollectionAdmin.test.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
+import {ApiPromise} from '@polkadot/api';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
-import {createCollectionExpectSuccess, destroyCollectionExpectSuccess, normalizeAccountId} from './util/helpers';
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
+import {addCollectionAdminExpectSuccess, createCollectionExpectSuccess, destroyCollectionExpectSuccess, getAdminList, normalizeAccountId} from './util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -20,38 +20,38 @@
       const alice = privateKey('//Alice');
       const bob = privateKey('//Bob');
 
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.equal(alice.address);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.equal(alice.address);
 
       const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
       await submitTransactionAsync(alice, changeAdminTx);
 
-      const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
-      expect(adminListAfterAddAdmin).to.be.contains(normalizeAccountId(bob.address));
+      const adminListAfterAddAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
     });
   });
 
   it('Add admin using added collection admin.', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//CHARLIE');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+      const charlie = privateKey('//CHARLIE');
 
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.equal(Alice.address);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.equal(alice.address);
 
-      const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await submitTransactionAsync(Alice, changeAdminTx);
+      const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await submitTransactionAsync(alice, changeAdminTx);
 
-      const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
-      expect(adminListAfterAddAdmin).to.be.contains(normalizeAccountId(Bob.address));
+      const adminListAfterAddAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
 
-      const changeAdminTxCharlie = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Charlie.address));
-      await submitTransactionAsync(Bob, changeAdminTxCharlie);
-      const adminListAfterAddNewAdmin: any = (await api.query.nft.adminList(collectionId));
-      expect(adminListAfterAddNewAdmin).to.be.contains(normalizeAccountId(Bob.address));
-      expect(adminListAfterAddNewAdmin).to.be.contains(normalizeAccountId(Charlie.address));
+      const changeAdminTxCharlie = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
+      await submitTransactionAsync(bob, changeAdminTxCharlie);
+      const adminListAfterAddNewAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterAddNewAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
+      expect(adminListAfterAddNewAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));
     });
   });
 });
@@ -66,8 +66,8 @@
       const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(alice.address));
       await expect(submitTransactionExpectFailAsync(nonOwner, changeAdminTx)).to.be.rejected;
 
-      const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
-      expect(adminListAfterAddAdmin).not.to.be.contains(normalizeAccountId(alice.address));
+      const adminListAfterAddAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterAddAdmin).not.to.be.deep.contains(normalizeAccountId(alice.address));
 
       // Verifying that nothing bad happened (network is live, new collections can be created, etc.)
       await createCollectionExpectSuccess();
@@ -91,11 +91,11 @@
   it("Can't add an admin to a destroyed collection.", async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
       await destroyCollectionExpectSuccess(collectionId);
-      const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await expect(submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected;
+      const changeOwnerTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;
 
       // Verifying that nothing bad happened (network is live, new collections can be created, etc.)
       await createCollectionExpectSuccess();
@@ -104,30 +104,29 @@
 
   it('Add an admin to a collection that has reached the maximum number of admins limit', async () => {
     await usingApi(async (api: ApiPromise) => {
-      const Alice = privateKey('//Alice');
+      const alice = privateKey('//Alice');
       const accounts = [
-        'GsvVmjr1CBHwQHw84pPHMDxgNY3iBLz6Qn7qS3CH8qPhrHz',
-        'FoQJpPyadYccjavVdTWxpxU7rUEaYhfLCPwXgkfD6Zat9QP',
-        'JKspFU6ohf1Grg3Phdzj2pSgWvsYWzSfKghhfzMbdhNBWs5',
-        'Fr4NzY1udSFFLzb2R3qxVQkwz9cZraWkyfH4h3mVVk7BK7P',
-        'DfnTB4z7eUvYRqcGtTpFsLC69o6tvBSC1pEv8vWPZFtCkaK',
-        'HnMAUz7r2G8G3hB27SYNyit5aJmh2a5P4eMdDtACtMFDbam',
-        'DE14BzQ1bDXWPKeLoAqdLAm1GpyAWaWF1knF74cEZeomTBM',
+        privateKey('//AdminTest/1').address,
+        privateKey('//AdminTest/2').address,
+        privateKey('//AdminTest/3').address,
+        privateKey('//AdminTest/4').address,
+        privateKey('//AdminTest/5').address,
+        privateKey('//AdminTest/6').address,
+        privateKey('//AdminTest/7').address,
       ];
       const collectionId = await createCollectionExpectSuccess();
 
-      const chainAdminLimit = (api.consts.nft.collectionAdminsLimit as any).toNumber();
+      const chainAdminLimit = api.consts.common.collectionAdminsLimit.toNumber();
       expect(chainAdminLimit).to.be.equal(5);
 
       for (let i = 0; i < chainAdminLimit; i++) {
-        const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(accounts[i]));
-        await submitTransactionAsync(Alice, changeAdminTx);
-        const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId));
-        expect(adminListAfterAddAdmin).to.be.contains(normalizeAccountId(accounts[i]));
+        await addCollectionAdminExpectSuccess(alice, collectionId, accounts[i]);
+        const adminListAfterAddAdmin = await getAdminList(api, collectionId);
+        expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(accounts[i]));
       }
 
       const tx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(accounts[chainAdminLimit]));
-      await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
     });
   });
 });
modifiedtests/src/addToContractWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/addToContractWhiteList.test.ts
+++ b/tests/src/addToContractWhiteList.test.ts
@@ -5,7 +5,7 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
+import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
 import privateKey from './substrate/privateKey';
 import {
   deployFlipper,
modifiedtests/src/addToWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/addToWhiteList.test.ts
+++ b/tests/src/addToWhiteList.test.ts
@@ -3,11 +3,11 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import usingApi, { submitTransactionExpectFailAsync } from './substrate/substrate-api';
+import usingApi, {submitTransactionExpectFailAsync} from './substrate/substrate-api';
 import {
   addToWhiteListExpectSuccess,
   createCollectionExpectSuccess,
@@ -23,30 +23,30 @@
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
-let Alice: IKeyringPair;
-let Bob: IKeyringPair;
-let Charlie: IKeyringPair;
+let alice: IKeyringPair;
+let bob: IKeyringPair;
+let charlie: IKeyringPair;
 
 describe('Integration Test ext. addToWhiteList()', () => {
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
     });
   });
 
   it('Execute the extrinsic with parameters: Collection ID and address to add to the white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
   });
 
   it('Whitelisted minting: list restrictions', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await enablePublicMintingExpectSuccess(Alice, collectionId);
-    await createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await enablePublicMintingExpectSuccess(alice, collectionId);
+    await createItemExpectSuccess(bob, collectionId, 'NFT', bob.address);
   });
 });
 
@@ -55,35 +55,35 @@
   it('White list an address in the collection that does not exist', async () => {
     await usingApi(async (api) => {
       // tslint:disable-next-line: no-bitwise
-      const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
-      const Bob = privateKey('//Bob');
+      const collectionId = ((await api.query.common.createdCollectionCount()).toNumber()) + 1;
+      const bob = privateKey('//Bob');
 
-      const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(Bob.address));
-      await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
+      const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(bob.address));
+      await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
     });
   });
 
   it('White list an address in the collection that was destroyed', async () => {
     await usingApi(async (api) => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
       // tslint:disable-next-line: no-bitwise
       const collectionId = await createCollectionExpectSuccess();
       await destroyCollectionExpectSuccess(collectionId);
-      const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(Bob.address));
-      await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
+      const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(bob.address));
+      await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
     });
   });
 
   it('White list an address in the collection that does not have white list access enabled', async () => {
     await usingApi(async (api) => {
-      const Alice = privateKey('//Alice');
-      const Ferdie = privateKey('//Ferdie');
+      const alice = privateKey('//Alice');
+      const ferdie = privateKey('//Ferdie');
       const collectionId = await createCollectionExpectSuccess();
-      await enableWhiteListExpectSuccess(Alice, collectionId);
-      await enablePublicMintingExpectSuccess(Alice, collectionId);
-      const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(Ferdie.address), 'NFT');
-      await expect(submitTransactionExpectFailAsync(Ferdie, tx)).to.be.rejected;
+      await enableWhiteListExpectSuccess(alice, collectionId);
+      await enablePublicMintingExpectSuccess(alice, collectionId);
+      const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(ferdie.address), 'NFT');
+      await expect(submitTransactionExpectFailAsync(ferdie, tx)).to.be.rejected;
     });
   });
 
@@ -93,32 +93,32 @@
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Negative. Add to the white list by regular user', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectFail(Bob, collectionId, Charlie.address);
+    await addToWhiteListExpectFail(bob, collectionId, charlie.address);
   });
 
   it('Execute the extrinsic with parameters: Collection ID and address to add to the white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-    await addToWhiteListExpectSuccess(Bob, collectionId, Charlie.address);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+    await addToWhiteListExpectSuccess(bob, collectionId, charlie.address);
   });
 
   it('Whitelisted minting: list restrictions', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-    await addToWhiteListExpectSuccess(Bob, collectionId, Charlie.address);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+    await addToWhiteListExpectSuccess(bob, collectionId, charlie.address);
 
     // allowed only for collection owner
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await enablePublicMintingExpectSuccess(Alice, collectionId);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await enablePublicMintingExpectSuccess(alice, collectionId);
 
-    await createItemExpectSuccess(Charlie, collectionId, 'NFT', Charlie.address);
+    await createItemExpectSuccess(charlie, collectionId, 'NFT', charlie.address);
   });
-});
\ No newline at end of file
+});
modifiedtests/src/approve.test.tsdiffbeforeafterboth
--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -2,12 +2,12 @@
 // This file is subject to the terms and conditions defined in
 // file 'LICENSE', which is part of this source code package.
 //
-import { IKeyringPair } from '@polkadot/types/types';
-import { ApiPromise } from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import { default as usingApi } from './substrate/substrate-api';
+import {default as usingApi} from './substrate/substrate-api';
 import {
   approveExpectFail,
   approveExpectSuccess,
@@ -17,90 +17,91 @@
   setCollectionLimitsExpectSuccess,
   transferExpectSuccess,
   addCollectionAdminExpectSuccess,
+  adminApproveFromExpectSuccess,
 } from './util/helpers';
 
 chai.use(chaiAsPromised);
 
 describe('Integration Test approve(spender, collection_id, item_id, amount):', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Execute the extrinsic and check approvedList', async () => {
     const nftCollectionId = await createCollectionExpectSuccess();
     // nft
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-    await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+    await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-    await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
+    const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+    await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);
     // reFungible
     const reFungibleCollectionId =
       await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-    await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
+    const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+    await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address);
   });
 
   it('Remove approval by using 0 amount', async () => {
     const nftCollectionId = await createCollectionExpectSuccess();
     // nft
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-    await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);
-    await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 0);
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+    await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address, 1);
+    await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address, 0);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-    await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);
-    await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 0);
+    const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+    await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address, 1);
+    await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address, 0);
     // reFungible
     const reFungibleCollectionId =
       await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-    await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 1);
-    await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 0);
+    const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+    await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 1);
+    await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 0);
   });
 
   it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
 
-    await approveExpectSuccess(collectionId, itemId, Alice, Charlie);
+    await adminApproveFromExpectSuccess(collectionId, itemId, alice, bob.address, charlie.address);
   });
 });
 
 describe('Negative Integration Test approve(spender, collection_id, item_id, amount):', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Approve for a collection that does not exist', async () => {
     await usingApi(async (api: ApiPromise) => {
       // nft
-      const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);
+      const nftCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await approveExpectFail(nftCollectionCount + 1, 1, alice, bob);
       // fungible
-      const fungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await approveExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob);
+      const fungibleCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await approveExpectFail(fungibleCollectionCount + 1, 0, alice, bob);
       // reFungible
-      const reFungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await approveExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob);
+      const reFungibleCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await approveExpectFail(reFungibleCollectionCount + 1, 1, alice, bob);
     });
   });
 
@@ -108,95 +109,87 @@
     // nft
     const nftCollectionId = await createCollectionExpectSuccess();
     await destroyCollectionExpectSuccess(nftCollectionId);
-    await approveExpectFail(nftCollectionId, 1, Alice, Bob);
+    await approveExpectFail(nftCollectionId, 1, alice, bob);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
     await destroyCollectionExpectSuccess(fungibleCollectionId);
-    await approveExpectFail(fungibleCollectionId, 1, Alice, Bob);
+    await approveExpectFail(fungibleCollectionId, 0, alice, bob);
     // reFungible
     const reFungibleCollectionId =
       await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     await destroyCollectionExpectSuccess(reFungibleCollectionId);
-    await approveExpectFail(reFungibleCollectionId, 1, Alice, Bob);
+    await approveExpectFail(reFungibleCollectionId, 1, alice, bob);
   });
 
   it('Approve transfer of a token that does not exist', async () => {
     // nft
     const nftCollectionId = await createCollectionExpectSuccess();
-    await approveExpectFail(nftCollectionId, 2, Alice, Bob);
+    await approveExpectFail(nftCollectionId, 2, alice, bob);
     // reFungible
     const reFungibleCollectionId =
       await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-    await approveExpectFail(reFungibleCollectionId, 2, Alice, Bob);
+    await approveExpectFail(reFungibleCollectionId, 2, alice, bob);
   });
 
   it('Approve using the address that does not own the approved token', async () => {
     const nftCollectionId = await createCollectionExpectSuccess();
     // nft
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-    await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+    await approveExpectFail(nftCollectionId, newNftTokenId, bob, alice);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-    await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice);
+    const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+    await approveExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice);
     // reFungible
     const reFungibleCollectionId =
       await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-    await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice);
-  });
-
-  it('should fail if approved more NFTs than owned', async () => {
-    const nftCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-    await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');
-    await approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice);
-    await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice);
+    const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+    await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, bob, alice);
   });
 
   it('should fail if approved more ReFungibles than owned', async () => {
-    const nftCollectionId = await createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'ReFungible');
-    await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 100, 'ReFungible');
-    await approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 100);
-    await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);
+    const nftCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'ReFungible');
+    await transferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 100, 'ReFungible');
+    await approveExpectSuccess(nftCollectionId, newNftTokenId, bob, alice.address, 100);
+    await approveExpectFail(nftCollectionId, newNftTokenId, bob, alice, 101);
   });
 
   it('should fail if approved more Fungibles than owned', async () => {
-    const nftCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'Fungible');
-    await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 10, 'Fungible');
-    await approveExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 10);
-    await approveExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, 1);
+    const nftCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'Fungible');
+    await transferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 10, 'Fungible');
+    await approveExpectSuccess(nftCollectionId, newNftTokenId, bob, alice.address, 10);
+    await approveExpectFail(nftCollectionId, newNftTokenId, bob, alice, 11);
   });
 
   it('fails when called by collection owner on non-owned item when OwnerCanTransfer == false', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { ownerCanTransfer: false });
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: false});
 
-    await approveExpectFail(collectionId, itemId, Alice, Charlie);
+    await approveExpectFail(collectionId, itemId, alice, charlie);
   });
 });
 
 describe('Integration Test approve(spender, collection_id, item_id, amount) with collection admin permissions:', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('can be called by collection admin on non-owned item', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
 
-    await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-    await approveExpectSuccess(collectionId, itemId, Bob, Charlie);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+    await adminApproveFromExpectSuccess(collectionId, itemId, bob, alice.address, charlie.address);
   });
 });
modifiedtests/src/block-production.test.tsdiffbeforeafterboth
--- a/tests/src/block-production.test.ts
+++ b/tests/src/block-production.test.ts
@@ -4,17 +4,17 @@
 //
 
 import usingApi from './substrate/substrate-api';
-import { expect } from 'chai';
-import { ApiPromise } from '@polkadot/api';
+import {expect} from 'chai';
+import {ApiPromise} from '@polkadot/api';
 
-const BlockTimeMs = 12000;
-const ToleranceMs = 1000;
+const BLOCK_TIME_MS = 3000;
+const TOLERANCE_MS = 1000;
 
 /* eslint no-async-promise-executor: "off" */
 function getBlocks(api: ApiPromise): Promise<number[]> {
   return new Promise<number[]>(async (resolve, reject) => {
     const blockNumbers: number[] = [];
-    setTimeout(() => reject('Block production test failed due to timeout.'), BlockTimeMs + ToleranceMs);
+    setTimeout(() => reject('Block production test failed due to timeout.'), BLOCK_TIME_MS + TOLERANCE_MS);
     const unsubscribe = await api.rpc.chain.subscribeNewHeads((head: any) => {
       blockNumbers.push(head.number.toNumber());
       if(blockNumbers.length >= 2) {
modifiedtests/src/burnItem.test.tsdiffbeforeafterboth
--- a/tests/src/burnItem.test.ts
+++ b/tests/src/burnItem.test.ts
@@ -3,9 +3,9 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import {
   createCollectionExpectSuccess,
   createItemExpectSuccess,
@@ -13,6 +13,8 @@
   destroyCollectionExpectSuccess,
   normalizeAccountId,
   addCollectionAdminExpectSuccess,
+  getBalance,
+  isTokenExists,
 } from './util/helpers';
 
 import chai from 'chai';
@@ -26,7 +28,7 @@
 describe('integration test: ext. burnItem():', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
@@ -41,19 +43,16 @@
       const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
       const events = await submitTransactionAsync(alice, tx);
       const result = getGenericResult(events);
-      // Get the item
-      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();
-      // What to expect
-      // tslint:disable-next-line:no-unused-expression
+
       expect(result.success).to.be.true;
-      // tslint:disable-next-line:no-unused-expression
-      expect(item).to.be.null;
+      // Get the item
+      expect(await isTokenExists(api, collectionId, tokenId)).to.be.false;
     });
   });
 
   it('Burn item in Fungible collection', async () => {
     const createMode = 'Fungible';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
     await createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens
     const tokenId = 0; // ignored
 
@@ -64,18 +63,17 @@
       const result = getGenericResult(events);
 
       // Get alice balance
-      const balance: any = (await api.query.nft.fungibleItemList(collectionId, alice.address)).toJSON();
+      const balance = await getBalance(api, collectionId, alice.address, 0);
 
       // What to expect
       expect(result.success).to.be.true;
-      expect(balance).to.be.not.null;
-      expect(balance.value).to.be.equal(9);
+      expect(balance).to.be.equal(9n);
     });
   });
 
   it('Burn item in ReFungible collection', async () => {
     const createMode = 'ReFungible';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
 
     await usingApi(async (api) => {
@@ -84,11 +82,11 @@
       const result = getGenericResult(events);
 
       // Get alice balance
-      const balance: any = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();
+      const balance = await getBalance(api, collectionId, alice.address, tokenId);
 
       // What to expect
       expect(result.success).to.be.true;
-      expect(balance).to.be.null;
+      expect(balance).to.be.equal(0n);
     });
   });
 
@@ -104,7 +102,8 @@
       const result1 = getGenericResult(events1);
 
       // Get balances
-      const balanceBefore: any = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();
+      const bobBalanceBefore = await getBalance(api, collectionId, bob.address, tokenId);
+      const aliceBalanceBefore = await getBalance(api, collectionId, alice.address, tokenId);
 
       // Bob burns his portion
       const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
@@ -112,24 +111,19 @@
       const result2 = getGenericResult(events2);
 
       // Get balances
-      const balance: any = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();
+      const bobBalanceAfter = await getBalance(api, collectionId, bob.address, tokenId);
+      const aliceBalanceAfter = await getBalance(api, collectionId, alice.address, tokenId);
       // console.log(balance);
 
       // What to expect before burning
       expect(result1.success).to.be.true;
-      expect(balanceBefore).to.be.not.null;
-      expect(balanceBefore.owner.length).to.be.equal(2);
-      expect(balanceBefore.owner[0].owner).to.be.deep.equal(normalizeAccountId(alice.address));
-      expect(balanceBefore.owner[0].fraction).to.be.equal(99);
-      expect(balanceBefore.owner[1].owner).to.be.deep.equal(normalizeAccountId(bob.address));
-      expect(balanceBefore.owner[1].fraction).to.be.equal(1);
+      expect(aliceBalanceBefore).to.be.equal(99n);
+      expect(bobBalanceBefore).to.be.equal(1n);
 
       // What to expect after burning
       expect(result2.success).to.be.true;
-      expect(balance).to.be.not.null;
-      expect(balance.owner.length).to.be.equal(1);
-      expect(balance.owner[0].fraction).to.be.equal(99);
-      expect(balance.owner[0].owner).to.be.deep.equal(normalizeAccountId(alice.address));
+      expect(aliceBalanceAfter).to.be.equal(99n);
+      expect(bobBalanceAfter).to.be.equal(0n);
     });
 
   });
@@ -139,7 +133,7 @@
 describe('integration test: ext. burnItem() with admin permissions:', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
@@ -149,28 +143,25 @@
     const createMode = 'NFT';
     const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
 
     await usingApi(async (api) => {
       const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
       const events = await submitTransactionAsync(bob, tx);
       const result = getGenericResult(events);
+
+      expect(result.success).to.be.true;
       // Get the item
-      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();
-      // What to expect
-      // tslint:disable-next-line:no-unused-expression
-      expect(result.success).to.be.true;
-      // tslint:disable-next-line:no-unused-expression
-      expect(item).to.be.null;
+      expect(await isTokenExists(api, collectionId, tokenId)).to.be.false;
     });
   });
 
-
+  // TODO: burnFrom
   it('Burn item in Fungible collection', async () => {
     const createMode = 'Fungible';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); // Helper creates 10 fungible tokens
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
 
     await usingApi(async (api) => {
       // Destroy 1 of 10
@@ -179,31 +170,29 @@
       const result = getGenericResult(events);
 
       // Get alice balance
-      const balance: any = (await api.query.nft.fungibleItemList(collectionId, alice.address)).toJSON();
+      const balance = await getBalance(api, collectionId, alice.address, 0);
 
       // What to expect
       expect(result.success).to.be.true;
-      expect(balance).to.be.not.null;
-      expect(balance.value).to.be.equal(9);
+      expect(balance).to.be.equal(9n);
     });
   });
 
+  // TODO: burnFrom
   it('Burn item in ReFungible collection', async () => {
     const createMode = 'ReFungible';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
 
     await usingApi(async (api) => {
       const tx = api.tx.nft.burnFrom(collectionId, normalizeAccountId(alice.address), tokenId, 100);
       const events = await submitTransactionAsync(bob, tx);
       const result = getGenericResult(events);
       // Get alice balance
-      const balance: any = (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON();
-
-      // What to expect
       expect(result.success).to.be.true;
-      expect(balance).to.be.null;
+      // Get the item
+      expect(await isTokenExists(api, collectionId, tokenId)).to.be.false;
     });
   });
 });
@@ -211,7 +200,7 @@
 describe('Negative integration test: ext. burnItem():', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
@@ -219,7 +208,7 @@
 
   it('Burn a token in a destroyed collection', async () => {
     const createMode = 'NFT';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
     await destroyCollectionExpectSuccess(collectionId);
 
@@ -235,7 +224,7 @@
 
   it('Burn a token that was never created', async () => {
     const createMode = 'NFT';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = 10;
 
     await usingApi(async (api) => {
@@ -250,11 +239,11 @@
 
   it('Burn a token using the address that does not own it', async () => {
     const createMode = 'NFT';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
 
     await usingApi(async (api) => {
-      const tx = api.tx.nft.burnItem(collectionId, tokenId, 0);
+      const tx = api.tx.nft.burnItem(collectionId, tokenId, 1);
       const badTransaction = async function () {
         await submitTransactionExpectFailAsync(bob, tx);
       };
@@ -265,7 +254,7 @@
 
   it('Transfer a burned a token', async () => {
     const createMode = 'NFT';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}});
     const tokenId = await createItemExpectSuccess(alice, collectionId, createMode);
 
     await usingApi(async (api) => {
@@ -275,7 +264,7 @@
       const result1 = getGenericResult(events1);
       expect(result1.success).to.be.true;
 
-      const tx = api.tx.nft.transfer(normalizeAccountId(bob.address), collectionId, tokenId, 0);
+      const tx = api.tx.nft.transfer(normalizeAccountId(bob.address), collectionId, tokenId, 1);
       const badTransaction = async function () {
         await submitTransactionExpectFailAsync(alice, tx);
       };
@@ -286,7 +275,7 @@
 
   it('Burn more than owned in Fungible collection', async () => {
     const createMode = 'Fungible';
-    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
     // Helper creates 10 fungible tokens
     await createItemExpectSuccess(alice, collectionId, createMode);
     const tokenId = 0; // ignored
@@ -300,11 +289,10 @@
       await expect(badTransaction()).to.be.rejected;
 
       // Get alice balance
-      const balance: any = (await api.query.nft.fungibleItemList(collectionId, alice.address)).toJSON();
+      const balance = await getBalance(api, collectionId, alice.address, 0);
 
       // What to expect
-      expect(balance).to.be.not.null;
-      expect(balance.value).to.be.equal(10);
+      expect(balance).to.be.equal(10n);
     });
 
   });
modifiedtests/src/change-collection-owner.test.tsdiffbeforeafterboth
--- a/tests/src/change-collection-owner.test.ts
+++ b/tests/src/change-collection-owner.test.ts
@@ -6,8 +6,8 @@
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
-import { createCollectionExpectSuccess,
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
+import {createCollectionExpectSuccess,
   addCollectionAdminExpectSuccess,
   setCollectionSponsorExpectSuccess,
   confirmSponsorshipExpectSuccess,
@@ -34,14 +34,14 @@
       const alice = privateKey('//Alice');
       const bob = privateKey('//Bob');
 
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.deep.eq(alice.address);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.deep.eq(alice.address);
 
       const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
       await submitTransactionAsync(alice, changeOwnerTx);
 
-      const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange.owner).to.be.deep.eq(bob.address);
+      const collectionAfterOwnerChange = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(bob.address);
     });
   });
 });
@@ -53,8 +53,8 @@
       const alice = privateKey('//Alice');
       const bob = privateKey('//Bob');
 
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.deep.eq(alice.address);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.deep.eq(alice.address);
 
       const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
       await submitTransactionAsync(alice, changeOwnerTx);
@@ -62,8 +62,8 @@
       const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);
       await expect(submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;
 
-      const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange.owner).to.be.deep.eq(bob.address);
+      const collectionAfterOwnerChange = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(bob.address);
     });
   });
 
@@ -74,14 +74,14 @@
       const bob = privateKey('//Bob');
       const charlie = privateKey('//Charlie');
 
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.deep.eq(alice.address);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.deep.eq(alice.address);
 
       const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
       await submitTransactionAsync(alice, changeOwnerTx);
 
-      const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange.owner).to.be.deep.eq(bob.address);
+      const collectionAfterOwnerChange = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(bob.address);
 
       // After changing the owner of the collection, all privileged methods are available to the new owner
       // The new owner of the collection has access to sponsorship management operations in the collection
@@ -94,7 +94,7 @@
         accountTokenOwnershipLimit: 1,
         sponsoredMintSize: 1,
         tokenLimit: 1,
-        sponsorTimeout: 1,
+        sponsorTransferTimeout: 1,
         ownerCanTransfer: true,
         ownerCanDestroy: true,
       };
@@ -118,21 +118,21 @@
       const bob = privateKey('//Bob');
       const charlie = privateKey('//Charlie');
 
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.deep.eq(alice.address);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.deep.eq(alice.address);
 
       const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
       await submitTransactionAsync(alice, changeOwnerTx);
 
-      const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange.owner).to.be.deep.eq(bob.address);
+      const collectionAfterOwnerChange = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(bob.address);
 
       const changeOwnerTx2 = api.tx.nft.changeCollectionOwner(collectionId, charlie.address);
       await submitTransactionAsync(bob, changeOwnerTx2);
 
       // ownership lost
-      const collectionAfterOwnerChange2: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange2.owner).to.be.deep.eq(charlie.address);
+      const collectionAfterOwnerChange2 = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange2.owner.toString()).to.be.deep.eq(charlie.address);
     });
   });
 });
@@ -147,8 +147,8 @@
       const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
       await expect(submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;
 
-      const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange.owner).to.be.deep.eq(alice.address);
+      const collectionAfterOwnerChange = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(alice.address);
 
       // Verifying that nothing bad happened (network is live, new collections can be created, etc.)
       await createCollectionExpectSuccess();
@@ -161,13 +161,13 @@
       const alice = privateKey('//Alice');
       const bob = privateKey('//Bob');
 
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
 
       const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
       await expect(submitTransactionExpectFailAsync(bob, changeOwnerTx)).to.be.rejected;
 
-      const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange.owner).to.be.deep.eq(alice.address);
+      const collectionAfterOwnerChange = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(alice.address);
 
       // Verifying that nothing bad happened (network is live, new collections can be created, etc.)
       await createCollectionExpectSuccess();
@@ -195,8 +195,8 @@
       const bob = privateKey('//Bob');
       const charlie = privateKey('//Charlie');
 
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.deep.eq(alice.address);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.deep.eq(alice.address);
 
       const changeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, bob.address);
       await submitTransactionAsync(alice, changeOwnerTx);
@@ -204,8 +204,8 @@
       const badChangeOwnerTx = api.tx.nft.changeCollectionOwner(collectionId, alice.address);
       await expect(submitTransactionExpectFailAsync(alice, badChangeOwnerTx)).to.be.rejected;
 
-      const collectionAfterOwnerChange: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collectionAfterOwnerChange.owner).to.be.deep.eq(bob.address);
+      const collectionAfterOwnerChange = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collectionAfterOwnerChange.owner.toString()).to.be.deep.eq(bob.address);
 
       await setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Alice');
       await confirmSponsorshipExpectFailure(collectionId, '//Alice');
@@ -215,7 +215,7 @@
         accountTokenOwnershipLimit: 1,
         sponsoredMintSize: 1,
         tokenLimit: 1,
-        sponsorTimeout: 1,
+        sponsorTransferTimeout: 1,
         ownerCanTransfer: true,
         ownerCanDestroy: true,
       };
modifiedtests/src/check-event/burnItemEvent.test.tsdiffbeforeafterboth
--- a/tests/src/check-event/burnItemEvent.test.ts
+++ b/tests/src/check-event/burnItemEvent.test.ts
@@ -4,33 +4,33 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from '../substrate/privateKey';
 import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import { createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage } from '../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage} from '../util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
 describe('Burn Item event ', () => {
-  let Alice: IKeyringPair;
+  let alice: IKeyringPair;
   const checkSection = 'ItemDestroyed';
   const checkTreasury = 'Deposit';
   const checkSystem = 'ExtrinsicSuccess';
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
+      alice = privateKey('//Alice');
     });
   });
   it('Check event from burnItem(): ', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionID = await createCollectionExpectSuccess();
-      const itemID = await createItemExpectSuccess(Alice, collectionID, 'NFT');
+      const itemID = await createItemExpectSuccess(alice, collectionID, 'NFT');
       const burnItem = api.tx.nft.burnItem(collectionID, itemID, 1);
-      const events = await submitTransactionAsync(Alice, burnItem);
+      const events = await submitTransactionAsync(alice, burnItem);
       const msg = JSON.stringify(nftEventMessage(events));
       expect(msg).to.be.contain(checkSection);
       expect(msg).to.be.contain(checkTreasury);
@@ -38,4 +38,3 @@
     });
   });
 });
-
modifiedtests/src/check-event/createCollectionEvent.test.tsdiffbeforeafterboth
--- a/tests/src/check-event/createCollectionEvent.test.ts
+++ b/tests/src/check-event/createCollectionEvent.test.ts
@@ -4,31 +4,31 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from '../substrate/privateKey';
 import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import { nftEventMessage } from '../util/helpers';
+import {nftEventMessage} from '../util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
 describe('Create collection event ', () => {
-  let Alice: IKeyringPair;
+  let alice: IKeyringPair;
   const checkSection = 'CollectionCreated';
   const checkTreasury = 'Deposit';
   const checkSystem = 'ExtrinsicSuccess';
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
+      alice = privateKey('//Alice');
     });
   });
   it('Check event from createCollection(): ', async () => {
     await usingApi(async (api: ApiPromise) => {
-      const tx = api.tx.nft.createCollection('0x31', '0x32', '0x33', 'NFT');
-      const events = await submitTransactionAsync(Alice, tx);
+      const tx = api.tx.nft.createCollection([0x31], [0x32], '0x33', 'NFT');
+      const events = await submitTransactionAsync(alice, tx);
       const msg = JSON.stringify(nftEventMessage(events));
       expect(msg).to.be.contain(checkSection);
       expect(msg).to.be.contain(checkTreasury);
@@ -36,4 +36,3 @@
     });
   });
 });
- 
\ No newline at end of file
modifiedtests/src/check-event/createItemEvent.test.tsdiffbeforeafterboth
--- a/tests/src/check-event/createItemEvent.test.ts
+++ b/tests/src/check-event/createItemEvent.test.ts
@@ -4,32 +4,32 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from '../substrate/privateKey';
 import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import { createCollectionExpectSuccess, nftEventMessage, normalizeAccountId } from '../util/helpers';
+import {createCollectionExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
 describe('Create Item event ', () => {
-  let Alice: IKeyringPair;
+  let alice: IKeyringPair;
   const checkSection = 'ItemCreated';
   const checkTreasury = 'Deposit';
   const checkSystem = 'ExtrinsicSuccess';
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
+      alice = privateKey('//Alice');
     });
   });
   it('Check event from createItem(): ', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionID = await createCollectionExpectSuccess();
-      const createItem = api.tx.nft.createItem(collectionID, normalizeAccountId(Alice.address), 'NFT');
-      const events = await submitTransactionAsync(Alice, createItem);
+      const createItem = api.tx.nft.createItem(collectionID, normalizeAccountId(alice.address), 'NFT');
+      const events = await submitTransactionAsync(alice, createItem);
       const msg = JSON.stringify(nftEventMessage(events));
       expect(msg).to.be.contain(checkSection);
       expect(msg).to.be.contain(checkTreasury);
@@ -37,4 +37,3 @@
     });
   });
 });
-
modifiedtests/src/check-event/createMultipleItemsEvent.test.tsdiffbeforeafterboth
--- a/tests/src/check-event/createMultipleItemsEvent.test.ts
+++ b/tests/src/check-event/createMultipleItemsEvent.test.ts
@@ -4,33 +4,33 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from '../substrate/privateKey';
 import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import { createCollectionExpectSuccess, nftEventMessage, normalizeAccountId } from '../util/helpers';
+import {createCollectionExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
 describe('Create Multiple Items Event event ', () => {
-  let Alice: IKeyringPair;
+  let alice: IKeyringPair;
   const checkSection = 'ItemCreated';
   const checkTreasury = 'Deposit';
   const checkSystem = 'ExtrinsicSuccess';
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
+      alice = privateKey('//Alice');
     });
   });
   it('Check event from createMultipleItems(): ', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionID = await createCollectionExpectSuccess();
-      const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
-      const createMultipleItems = api.tx.nft.createMultipleItems(collectionID, normalizeAccountId(Alice.address), args);
-      const events = await submitTransactionAsync(Alice, createMultipleItems);
+      const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
+      const createMultipleItems = api.tx.nft.createMultipleItems(collectionID, normalizeAccountId(alice.address), args);
+      const events = await submitTransactionAsync(alice, createMultipleItems);
       const msg = JSON.stringify(nftEventMessage(events));
       expect(msg).to.be.contain(checkSection);
       expect(msg).to.be.contain(checkTreasury);
@@ -38,4 +38,3 @@
     });
   });
 });
-
modifiedtests/src/check-event/destroyCollectionEvent.test.tsdiffbeforeafterboth
--- a/tests/src/check-event/destroyCollectionEvent.test.ts
+++ b/tests/src/check-event/destroyCollectionEvent.test.ts
@@ -4,35 +4,34 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from '../substrate/privateKey';
 import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import { createCollectionExpectSuccess, nftEventMessage } from '../util/helpers';
+import {createCollectionExpectSuccess, nftEventMessage} from '../util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
 describe('Destroy collection event ', () => {
-  let Alice: IKeyringPair;
+  let alice: IKeyringPair;
   const checkTreasury = 'Deposit';
   const checkSystem = 'ExtrinsicSuccess';
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
+      alice = privateKey('//Alice');
     });
   });
   it('Check event from destroyCollection(): ', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionID = await createCollectionExpectSuccess();
       const destroyCollection = api.tx.nft.destroyCollection(collectionID);
-      const events = await submitTransactionAsync(Alice, destroyCollection);
+      const events = await submitTransactionAsync(alice, destroyCollection);
       const msg = JSON.stringify(nftEventMessage(events));
       expect(msg).to.be.contain(checkTreasury);
       expect(msg).to.be.contain(checkSystem);
     });
   });
 });
-
modifiedtests/src/check-event/transferEvent.test.tsdiffbeforeafterboth
--- a/tests/src/check-event/transferEvent.test.ts
+++ b/tests/src/check-event/transferEvent.test.ts
@@ -4,35 +4,35 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from '../substrate/privateKey';
 import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import { createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage, normalizeAccountId } from '../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
 describe('Transfer event ', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
   const checkSection = 'Transfer';
   const checkTreasury = 'Deposit';
   const checkSystem = 'ExtrinsicSuccess';
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
     });
   });
   it('Check event from transfer(): ', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionID = await createCollectionExpectSuccess();
-      const itemID = await createItemExpectSuccess(Alice, collectionID, 'NFT');
-      const transfer = api.tx.nft.transfer(normalizeAccountId(Bob.address), collectionID, itemID, 1);
-      const events = await submitTransactionAsync(Alice, transfer);
+      const itemID = await createItemExpectSuccess(alice, collectionID, 'NFT');
+      const transfer = api.tx.nft.transfer(normalizeAccountId(bob.address), collectionID, itemID, 1);
+      const events = await submitTransactionAsync(alice, transfer);
       const msg = JSON.stringify(nftEventMessage(events));
       expect(msg).to.be.contain(checkSection);
       expect(msg).to.be.contain(checkTreasury);
@@ -40,5 +40,3 @@
     });
   });
 });
-
-
modifiedtests/src/check-event/transferFromEvent.test.tsdiffbeforeafterboth
--- a/tests/src/check-event/transferFromEvent.test.ts
+++ b/tests/src/check-event/transferFromEvent.test.ts
@@ -4,35 +4,35 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from '../substrate/privateKey';
 import usingApi, {submitTransactionAsync} from '../substrate/substrate-api';
-import { createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage, normalizeAccountId } from '../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess, nftEventMessage, normalizeAccountId} from '../util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
 describe('Transfer from event ', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
   const checkSection = 'Transfer';
   const checkTreasury = 'Deposit';
   const checkSystem = 'ExtrinsicSuccess';
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
     });
   });
   it('Check event from transferFrom(): ', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionID = await createCollectionExpectSuccess();
-      const itemID = await createItemExpectSuccess(Alice, collectionID, 'NFT');
-      const transferFrom = api.tx.nft.transferFrom(normalizeAccountId(Alice.address), normalizeAccountId(Bob.address), collectionID, itemID, 1);
-      const events = await submitTransactionAsync(Alice, transferFrom);
+      const itemID = await createItemExpectSuccess(alice, collectionID, 'NFT');
+      const transferFrom = api.tx.nft.transferFrom(normalizeAccountId(alice.address), normalizeAccountId(bob.address), collectionID, itemID, 1);
+      const events = await submitTransactionAsync(alice, transferFrom);
       const msg = JSON.stringify(nftEventMessage(events));
       expect(msg).to.be.contain(checkSection);
       expect(msg).to.be.contain(checkTreasury);
@@ -40,4 +40,3 @@
     });
   });
 });
-
modifiedtests/src/confirmSponsorship.test.tsdiffbeforeafterboth
--- a/tests/src/confirmSponsorship.test.ts
+++ b/tests/src/confirmSponsorship.test.ts
@@ -5,11 +5,11 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
-import { 
-  createCollectionExpectSuccess, 
-  setCollectionSponsorExpectSuccess, 
-  destroyCollectionExpectSuccess, 
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
+import {
+  createCollectionExpectSuccess,
+  setCollectionSponsorExpectSuccess,
+  destroyCollectionExpectSuccess,
   confirmSponsorshipExpectSuccess,
   confirmSponsorshipExpectFailure,
   createItemExpectSuccess,
@@ -21,9 +21,8 @@
   normalizeAccountId,
   addCollectionAdminExpectSuccess,
 } from './util/helpers';
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
-import { BigNumber } from 'bignumber.js';
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -36,7 +35,7 @@
 
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
       charlie = keyring.addFromUri('//Charlie');
@@ -67,7 +66,7 @@
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
     await usingApi(async (api) => {
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Find unused address
       const zeroBalance = await findUnusedAddress(api);
@@ -79,22 +78,22 @@
       const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 0);
       const events = await submitTransactionAsync(zeroBalance, zeroToAlice);
       const result = getGenericResult(events);
+      expect(result.success).to.be.true;
 
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
-      expect(result.success).to.be.true;
-      expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;
     });
 
   });
 
   it('Fungible: Transfer fees are paid by the sponsor after confirmation', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
     await usingApi(async (api) => {
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Find unused address
       const zeroBalance = await findUnusedAddress(api);
@@ -106,11 +105,11 @@
       const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
       const events1 = await submitTransactionAsync(zeroBalance, zeroToAlice);
       const result1 = getGenericResult(events1);
+      expect(result1.success).to.be.true;
 
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
-      expect(result1.success).to.be.true;
-      expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;
     });
   });
 
@@ -120,7 +119,7 @@
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
     await usingApi(async (api) => {
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Find unused address
       const zeroBalance = await findUnusedAddress(api);
@@ -133,10 +132,10 @@
       const events1 = await submitTransactionAsync(zeroBalance, zeroToAlice);
       const result1 = getGenericResult(events1);
 
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       expect(result1.success).to.be.true;
-      expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;
     });
   });
 
@@ -145,15 +144,15 @@
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
-    // Enable collection white list 
+    // Enable collection white list
     await enableWhiteListExpectSuccess(alice, collectionId);
 
     // Enable public minting
     await enablePublicMintingExpectSuccess(alice, collectionId);
 
-    // Create Item 
+    // Create Item
     await usingApi(async (api) => {
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Find unused address
       const zeroBalance = await findUnusedAddress(api);
@@ -164,9 +163,9 @@
       // Mint token using unused address as signer
       await createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);
 
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
-      expect(BsponsorBalance.lt(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;
     });
   });
 
@@ -189,13 +188,13 @@
       const result1 = getGenericResult(events1);
 
       // Second transfer should fail
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
       const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(alice.address), collectionId, itemId, 0);
-      const badTransaction = async function () { 
+      const badTransaction = async function () {
         await submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);
       };
       await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Try again after Zero gets some balance - now it should succeed
       const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);
@@ -205,12 +204,12 @@
 
       expect(result1.success).to.be.true;
       expect(result2.success).to.be.true;
-      expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter).to.be.equal(sponsorBalanceBefore);
     });
   });
 
   it('Fungible: Sponsoring is rate limited', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0 }});
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
@@ -225,20 +224,20 @@
       const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
       const events1 = await submitTransactionAsync(zeroBalance, zeroToAlice);
       const result1 = getGenericResult(events1);
+      expect(result1.success).to.be.true;
 
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
       await expect(submitTransactionExpectFailAsync(zeroBalance, zeroToAlice)).to.be.rejected;
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Try again after Zero gets some balance - now it should succeed
       const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);
       await submitTransactionAsync(alice, balancetx);
       const events2 = await submitTransactionAsync(zeroBalance, zeroToAlice);
       const result2 = getGenericResult(events2);
-
-      expect(result1.success).to.be.true;
       expect(result2.success).to.be.true;
-      expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;
+
+      expect(sponsorBalanceAfter).to.be.equal(sponsorBalanceBefore);
     });
   });
 
@@ -259,25 +258,25 @@
       const aliceToZero = api.tx.nft.transfer(normalizeAccountId(zeroBalance.address), collectionId, itemId, 1);
       const events1 = await submitTransactionAsync(alice, aliceToZero);
       const result1 = getGenericResult(events1);
+      expect(result1.success).to.be.true;
 
       // Second transfer should fail
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
       const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(alice.address), collectionId, itemId, 1);
-      const badTransaction = async function () { 
+      const badTransaction = async function () {
         await submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);
       };
       await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Try again after Zero gets some balance - now it should succeed
       const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);
       await submitTransactionAsync(alice, balancetx);
       const events2 = await submitTransactionAsync(zeroBalance, zeroToAlice);
       const result2 = getGenericResult(events2);
+      expect(result2.success).to.be.true;
 
-      expect(result1.success).to.be.true;
-      expect(result2.success).to.be.true;
-      expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter).to.be.equal(sponsorBalanceBefore);
     });
   });
 
@@ -286,7 +285,7 @@
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
 
-    // Enable collection white list 
+    // Enable collection white list
     await enableWhiteListExpectSuccess(alice, collectionId);
 
     // Enable public minting
@@ -303,26 +302,20 @@
       await createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);
 
       // Second mint should fail
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
-      
-      const consoleError = console.error;
-      const consoleLog = console.log;
-      console.error = () => {};
-      console.log = () => {};
-      const badTransaction = async function () { 
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
+
+      const badTransaction = async function () {
         await createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);
       };
       await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');
-      console.error = consoleError;
-      console.log = consoleLog;
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
       // Try again after Zero gets some balance - now it should succeed
       const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);
       await submitTransactionAsync(alice, balancetx);
       await createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);
 
-      expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter).to.be.equal(sponsorBalanceBefore);
     });
   });
 
@@ -331,7 +324,7 @@
 describe('(!negative test!) integration test: ext. confirmSponsorship():', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
       charlie = keyring.addFromUri('//Charlie');
@@ -342,7 +335,7 @@
     // Find the collection that never existed
     let collectionId = 0;
     await usingApi(async (api) => {
-      collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
+      collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
     });
 
     await confirmSponsorshipExpectFailure(collectionId, '//Bob');
@@ -369,7 +362,7 @@
   it('(!negative test!) Confirm sponsorship by collection admin', async () => {
     const collectionId = await createCollectionExpectSuccess();
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
-    await addCollectionAdminExpectSuccess(alice, collectionId, charlie);
+    await addCollectionAdminExpectSuccess(alice, collectionId, charlie.address);
     await confirmSponsorshipExpectFailure(collectionId, '//Charlie');
   });
 
@@ -377,7 +370,7 @@
     const collectionId = await createCollectionExpectSuccess();
     await confirmSponsorshipExpectFailure(collectionId, '//Bob');
   });
-    
+
   it('(!negative test!) Confirm sponsorship in a collection that was destroyed', async () => {
     const collectionId = await createCollectionExpectSuccess();
     await destroyCollectionExpectSuccess(collectionId);
modifiedtests/src/connection.test.tsdiffbeforeafterboth
--- a/tests/src/connection.test.ts
+++ b/tests/src/connection.test.ts
@@ -4,7 +4,7 @@
 //
 
 import usingApi from './substrate/substrate-api';
-import { WsProvider } from '@polkadot/api';
+import {WsProvider} from '@polkadot/api';
 import * as chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 
@@ -21,19 +21,11 @@
   });
 
   it('Cannot connect to 255.255.255.255', async () => {
-    const log = console.log;
-    const error = console.error;
-    console.log = function () {};
-    console.error = function () {};
-
     const neverConnectProvider = new WsProvider('ws://255.255.255.255:9944');
     await expect((async () => {
       await usingApi(async api => {
         await api.rpc.system.health();
-      }, { provider: neverConnectProvider });
+      }, {provider: neverConnectProvider});
     })()).to.be.eventually.rejected;
-
-    console.log = log;
-    console.error = error;
   });
-});
\ No newline at end of file
+});
modifiedtests/src/contracts.test.tsdiffbeforeafterboth
--- a/tests/src/contracts.test.ts
+++ b/tests/src/contracts.test.ts
@@ -5,9 +5,9 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import usingApi, { submitTransactionAsync } from './substrate/substrate-api';
+import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
 import fs from 'fs';
-import { Abi, ContractPromise as Contract } from '@polkadot/api-contract';
+import {Abi, ContractPromise as Contract} from '@polkadot/api-contract';
 import privateKey from './substrate/privateKey';
 import {
   deployFlipper,
@@ -26,6 +26,7 @@
   normalizeAccountId,
   isWhitelisted,
   transferFromExpectSuccess,
+  getTokenOwner,
 } from './util/helpers';
 
 
@@ -75,18 +76,15 @@
       const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, contract.address);
       await submitTransactionAsync(alice, changeAdminTx);
 
-      const tokenBefore: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).toJSON();
+      expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal(normalizeAccountId(alice.address));
 
       // Transfer
       const transferTx = contract.tx.transfer(value, gasLimit, bob.address, collectionId, tokenId, 1);
       const events = await submitTransactionAsync(alice, transferTx);
       const result = getGenericResult(events);
-      const tokenAfter: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).toJSON();
-
-      // tslint:disable-next-line:no-unused-expression
       expect(result.success).to.be.true;
-      expect(tokenBefore.owner).to.be.deep.equal(normalizeAccountId(alice.address));
-      expect(tokenAfter.owner).to.be.deep.equal(normalizeAccountId(bob.address));
+
+      expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal(normalizeAccountId(bob.address));
     });
   });
 
@@ -102,17 +100,17 @@
       await addToWhiteListExpectSuccess(alice, collectionId, contract.address);
       await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
 
-      const transferTx = contract.tx.createItem(value, gasLimit, bob.address, collectionId, { Nft: {const_data: '0x010203', variable_data: '0x020304' }});
+      const transferTx = contract.tx.createItem(value, gasLimit, bob.address, collectionId, {Nft: {const_data: '0x010203', variable_data: '0x020304'}});
       const events = await submitTransactionAsync(alice, transferTx);
       const result = getGenericResult(events);
       expect(result.success).to.be.true;
 
-      const tokensAfter: any = (await api.query.nft.nftItemList.entries(collectionId) as any).map((kv: any) => kv[1].toJSON());
+      const tokensAfter = (await api.query.nft.nftItemList.entries(collectionId)).map((kv: any) => kv[1].toJSON());
       expect(tokensAfter).to.be.deep.equal([
         {
-          Owner: bob.address,
-          ConstData: '0x010203',
-          VariableData: '0x020304',
+          owner: bob.address,
+          constData: '0x010203',
+          variableData: '0x020304',
         },
       ]);
     });
@@ -131,9 +129,9 @@
       await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
 
       const transferTx = contract.tx.createMultipleItems(value, gasLimit, bob.address, collectionId, [
-        { Nft: { const_data: '0x010203', variable_data: '0x020304' } },
-        { Nft: { const_data: '0x010204', variable_data: '0x020305' } },
-        { Nft: { const_data: '0x010205', variable_data: '0x020306' } },
+        {Nft: {const_data: '0x010203', variable_data: '0x020304'}},
+        {Nft: {const_data: '0x010204', variable_data: '0x020305'}},
+        {Nft: {const_data: '0x010205', variable_data: '0x020306'}},
       ]);
       const events = await submitTransactionAsync(alice, transferTx);
       const result = getGenericResult(events);
modifiedtests/src/createCollection.test.tsdiffbeforeafterboth
--- a/tests/src/createCollection.test.ts
+++ b/tests/src/createCollection.test.ts
@@ -5,11 +5,9 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi } from './substrate/substrate-api';
-import { createCollectionExpectFailure, createCollectionExpectSuccess } from './util/helpers';
+import {createCollectionExpectFailure, createCollectionExpectSuccess} from './util/helpers';
 
 chai.use(chaiAsPromised);
-const expect = chai.expect;
 
 describe('integration test: ext. createCollection():', () => {
   it('Create new NFT collection', async () => {
@@ -34,10 +32,10 @@
 
 describe('(!negative test!) integration test: ext. createCollection():', () => {
   it('(!negative test!) create new NFT collection whith incorrect data (collection_name)', async () => {
-    await createCollectionExpectFailure({ name: 'A'.repeat(65), mode: {type: 'NFT'}});
+    await createCollectionExpectFailure({name: 'A'.repeat(65), mode: {type: 'NFT'}});
   });
   it('(!negative test!) create new NFT collection whith incorrect data (collection_description)', async () => {
-    await createCollectionExpectFailure({ description: 'A'.repeat(257), mode: { type: 'NFT' }});
+    await createCollectionExpectFailure({description: 'A'.repeat(257), mode: {type: 'NFT'}});
   });
   it('(!negative test!) create new NFT collection whith incorrect data (token_prefix)', async () => {
     await createCollectionExpectFailure({tokenPrefix: 'A'.repeat(17), mode: {type: 'NFT'}});
modifiedtests/src/createItem.test.tsdiffbeforeafterboth
--- a/tests/src/createItem.test.ts
+++ b/tests/src/createItem.test.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { default as usingApi } from './substrate/substrate-api';
+import {default as usingApi} from './substrate/substrate-api';
 import chai from 'chai';
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
-import { 
-  createCollectionExpectSuccess, 
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
+import {
+  createCollectionExpectSuccess,
   createItemExpectSuccess,
   addCollectionAdminExpectSuccess,
 } from './util/helpers';
@@ -20,7 +20,7 @@
 describe('integration test: ext. createItem():', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
@@ -44,19 +44,19 @@
   it('Create new item in NFT collection with collection admin permissions', async () => {
     const createMode = 'NFT';
     const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode}});
-    await addCollectionAdminExpectSuccess(alice, newCollectionID, bob);
+    await addCollectionAdminExpectSuccess(alice, newCollectionID, bob.address);
     await createItemExpectSuccess(bob, newCollectionID, createMode);
   });
   it('Create new item in Fungible collection with collection admin permissions', async () => {
     const createMode = 'Fungible';
     const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}});
-    await addCollectionAdminExpectSuccess(alice, newCollectionID, bob);
+    await addCollectionAdminExpectSuccess(alice, newCollectionID, bob.address);
     await createItemExpectSuccess(bob, newCollectionID, createMode);
   });
   it('Create new item in ReFungible collection with collection admin permissions', async () => {
     const createMode = 'ReFungible';
     const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode}});
-    await addCollectionAdminExpectSuccess(alice, newCollectionID, bob);
+    await addCollectionAdminExpectSuccess(alice, newCollectionID, bob.address);
     await createItemExpectSuccess(bob, newCollectionID, createMode);
   });
 });
@@ -64,7 +64,7 @@
 describe('Negative integration test: ext. createItem():', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
modifiedtests/src/createMultipleItems.test.tsdiffbeforeafterboth
--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -2,120 +2,105 @@
 // This file is subject to the terms and conditions defined in
 // file 'LICENSE', which is part of this source code package.
 //
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
-import BN from 'bn.js';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
 import {
   createCollectionExpectSuccess,
   destroyCollectionExpectSuccess,
   getGenericResult,
-  IFungibleTokenDataType,
-  IReFungibleTokenDataType,
   normalizeAccountId,
   setCollectionLimitsExpectSuccess,
   addCollectionAdminExpectSuccess,
+  getBalance,
+  getTokenOwner,
+  getLastTokenId,
+  getVariableMetadata,
+  getConstMetadata,
 } from './util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
-interface ITokenDataType {
-  owner: number[];
-  constData: number[];
-  variableData: number[];
-}
-
 describe('Integration Test createMultipleItems(collection_id, owner, items_data):', () => {
   it('Create  0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
-      const Alice = privateKey('//Alice');
-      const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
+      const alice = privateKey('//Alice');
+      const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await submitTransactionAsync(Alice, createMultipleItemsTx);
-      const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexAfter.toNumber()).to.be.equal(3);
-      const token1Data = (await api.query.nft.nftItemList(collectionId, 1)).toJSON() as unknown as ITokenDataType;
-      const token2Data = (await api.query.nft.nftItemList(collectionId, 2)).toJSON() as unknown as ITokenDataType;
-      const token3Data = (await api.query.nft.nftItemList(collectionId, 3)).toJSON() as unknown as ITokenDataType;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await submitTransactionAsync(alice, createMultipleItemsTx);
+      const itemsListIndexAfter = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexAfter).to.be.equal(3);
 
-      expect(token1Data.owner).to.be.deep.equal(normalizeAccountId(Alice.address));
-      expect(token2Data.owner).to.be.deep.equal(normalizeAccountId(Alice.address));
-      expect(token3Data.owner).to.be.deep.equal(normalizeAccountId(Alice.address));
+      expect(await getTokenOwner(api, collectionId, 1)).to.be.deep.equal(normalizeAccountId(alice.address));
+      expect(await getTokenOwner(api, collectionId, 2)).to.be.deep.equal(normalizeAccountId(alice.address));
+      expect(await getTokenOwner(api, collectionId, 3)).to.be.deep.equal(normalizeAccountId(alice.address));
 
-      expect(token1Data.constData.toString()).to.be.equal('0x31');
-      expect(token2Data.constData.toString()).to.be.equal('0x32');
-      expect(token3Data.constData.toString()).to.be.equal('0x33');
+      expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
 
-      expect(token1Data.variableData.toString()).to.be.equal('0x31');
-      expect(token2Data.variableData.toString()).to.be.equal('0x32');
-      expect(token3Data.variableData.toString()).to.be.equal('0x33');
+      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
   it('Create  0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
-      const Alice = privateKey('//Alice');
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
+      const alice = privateKey('//Alice');
       const args = [
-        {fungible: { value: 1 }},
-        {fungible: { value: 2 }},
-        {fungible: { value: 3 }},
+        {Fungible: {value: 1}},
+        {Fungible: {value: 2}},
+        {Fungible: {value: 3}},
       ];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await submitTransactionAsync(Alice, createMultipleItemsTx);
-      const token1Data = (await api.query.nft.fungibleItemList(collectionId, Alice.address) as any).toJSON() as unknown as IFungibleTokenDataType;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await submitTransactionAsync(alice, createMultipleItemsTx);
+      const token1Data = await getBalance(api, collectionId, alice.address, 0);
 
-      expect(token1Data.value).to.be.equal(6); // 1 + 2 + 3
+      expect(token1Data).to.be.equal(6n); // 1 + 2 + 3
     });
   });
 
   it('Create  0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
-      const Alice = privateKey('//Alice');
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
+      const alice = privateKey('//Alice');
       const args = [
-        {refungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
-        {refungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
-        {refungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
+        {ReFungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
+        {ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
+        {ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
       ];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await submitTransactionAsync(Alice, createMultipleItemsTx);
-      const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexAfter.toNumber()).to.be.equal(3);
-      const token1Data = (await api.query.nft.reFungibleItemList(collectionId, 1) as any).toJSON() as unknown as IReFungibleTokenDataType;
-      const token2Data = (await api.query.nft.reFungibleItemList(collectionId, 2) as any).toJSON() as unknown as IReFungibleTokenDataType;
-      const token3Data = (await api.query.nft.reFungibleItemList(collectionId, 3) as any).toJSON() as unknown as IReFungibleTokenDataType;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await submitTransactionAsync(alice, createMultipleItemsTx);
+      const itemsListIndexAfter = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexAfter).to.be.equal(3);
 
-      expect(token1Data.owner[0].owner).to.be.deep.equal(normalizeAccountId(Alice.address));
-      expect(token1Data.owner[0].fraction).to.be.equal(1);
+      expect(await getBalance(api, collectionId, alice.address, 1)).to.be.equal(1n);
+      expect(await getBalance(api, collectionId, alice.address, 2)).to.be.equal(1n);
+      expect(await getBalance(api, collectionId, alice.address, 3)).to.be.equal(1n);
 
-      expect(token2Data.owner[0].owner).to.be.deep.equal(normalizeAccountId(Alice.address));
-      expect(token2Data.owner[0].fraction).to.be.equal(1);
+      expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
 
-      expect(token3Data.owner[0].owner).to.be.deep.equal(normalizeAccountId(Alice.address));
-      expect(token3Data.owner[0].fraction).to.be.equal(1);
-
-      expect(token1Data.constData.toString()).to.be.equal('0x31');
-      expect(token2Data.constData.toString()).to.be.equal('0x32');
-      expect(token3Data.constData.toString()).to.be.equal('0x33');
-
-      expect(token1Data.variableData.toString()).to.be.equal('0x31');
-      expect(token2Data.variableData.toString()).to.be.equal('0x32');
-      expect(token3Data.variableData.toString()).to.be.equal('0x33');
+      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
@@ -128,8 +113,8 @@
         tokenLimit: 2,
       });
       const args = [
-        { nft: ['A', 'A'] },
-        { nft: ['B', 'B'] },
+        {NFT: ['A', 'A']},
+        {NFT: ['B', 'B']},
       ];
       const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       const events = await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -141,183 +126,157 @@
 
 describe('Integration Test createMultipleItems(collection_id, owner, items_data) with collection admin permissions:', () => {
 
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
     });
   });
 
   it('Create  0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
-      await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-      const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+      const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);
-      await submitTransactionAsync(Bob, createMultipleItemsTx);
-      const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexAfter.toNumber()).to.be.equal(3);
-      const token1Data = (await api.query.nft.nftItemList(collectionId, 1)).toJSON() as unknown as ITokenDataType;
-      const token2Data = (await api.query.nft.nftItemList(collectionId, 2)).toJSON() as unknown as ITokenDataType;
-      const token3Data = (await api.query.nft.nftItemList(collectionId, 3)).toJSON() as unknown as ITokenDataType;
+        .createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
+      await submitTransactionAsync(bob, createMultipleItemsTx);
+      const itemsListIndexAfter = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexAfter).to.be.equal(3);
 
-      expect(token1Data.owner).to.be.deep.equal(normalizeAccountId(Bob.address));
-      expect(token2Data.owner).to.be.deep.equal(normalizeAccountId(Bob.address));
-      expect(token3Data.owner).to.be.deep.equal(normalizeAccountId(Bob.address));
+      expect(await getTokenOwner(api, collectionId, 1)).to.be.deep.equal(normalizeAccountId(bob.address));
+      expect(await getTokenOwner(api, collectionId, 2)).to.be.deep.equal(normalizeAccountId(bob.address));
+      expect(await getTokenOwner(api, collectionId, 3)).to.be.deep.equal(normalizeAccountId(bob.address));
 
-      expect(token1Data.constData.toString()).to.be.equal('0x31');
-      expect(token2Data.constData.toString()).to.be.equal('0x32');
-      expect(token3Data.constData.toString()).to.be.equal('0x33');
+      expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
 
-      expect(token1Data.variableData.toString()).to.be.equal('0x31');
-      expect(token2Data.variableData.toString()).to.be.equal('0x32');
-      expect(token3Data.variableData.toString()).to.be.equal('0x33');
+      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
   it('Create  0x01, 0x02, 0x03 items in active Fungible collection and verify tokens data in chain', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
-      await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       const args = [
-        {fungible: { value: 1 }},
-        {fungible: { value: 2 }},
-        {fungible: { value: 3 }},
+        {Fungible: {value: 1}},
+        {Fungible: {value: 2}},
+        {Fungible: {value: 3}},
       ];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);
-      await submitTransactionAsync(Bob, createMultipleItemsTx);
-      const token1Data = (await api.query.nft.fungibleItemList(collectionId, Bob.address) as any).toJSON() as unknown as IFungibleTokenDataType;
+        .createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
+      await submitTransactionAsync(bob, createMultipleItemsTx);
+      const token1Data = await getBalance(api, collectionId, bob.address, 0);
 
-      expect(token1Data.value).to.be.equal(6); // 1 + 2 + 3
+      expect(token1Data).to.be.equal(6n); // 1 + 2 + 3
     });
   });
 
   it('Create  0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
-      await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       const args = [
-        {refungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
-        {refungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
-        {refungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
+        {ReFungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
+        {ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
+        {ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
       ];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);
-      await submitTransactionAsync(Bob, createMultipleItemsTx);
-      const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexAfter.toNumber()).to.be.equal(3);
-      const token1Data = (await api.query.nft.reFungibleItemList(collectionId, 1) as any).toJSON() as unknown as IReFungibleTokenDataType;
-      const token2Data = (await api.query.nft.reFungibleItemList(collectionId, 2) as any).toJSON() as unknown as IReFungibleTokenDataType;
-      const token3Data = (await api.query.nft.reFungibleItemList(collectionId, 3) as any).toJSON() as unknown as IReFungibleTokenDataType;
+        .createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
+      await submitTransactionAsync(bob, createMultipleItemsTx);
+      const itemsListIndexAfter = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexAfter).to.be.equal(3);
 
-      expect(token1Data.owner[0].owner).to.be.deep.equal(normalizeAccountId(Bob.address));
-      expect(token1Data.owner[0].fraction).to.be.equal(1);
+      expect(await getBalance(api, collectionId, bob.address, 1)).to.be.equal(1n);
+      expect(await getBalance(api, collectionId, bob.address, 2)).to.be.equal(1n);
+      expect(await getBalance(api, collectionId, bob.address, 3)).to.be.equal(1n);
 
-      expect(token2Data.owner[0].owner).to.be.deep.equal(normalizeAccountId(Bob.address));
-      expect(token2Data.owner[0].fraction).to.be.equal(1);
-
-      expect(token3Data.owner[0].owner).to.be.deep.equal(normalizeAccountId(Bob.address));
-      expect(token3Data.owner[0].fraction).to.be.equal(1);
+      expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
 
-      expect(token1Data.constData.toString()).to.be.equal('0x31');
-      expect(token2Data.constData.toString()).to.be.equal('0x32');
-      expect(token3Data.constData.toString()).to.be.equal('0x33');
-
-      expect(token1Data.variableData.toString()).to.be.equal('0x31');
-      expect(token2Data.variableData.toString()).to.be.equal('0x32');
-      expect(token3Data.variableData.toString()).to.be.equal('0x33');
+      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
+      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
+      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 });
 
 describe('Negative Integration Test createMultipleItems(collection_id, owner, items_data):', () => {
 
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
     });
   });
 
   it('Regular user cannot create items in active NFT collection', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
-      const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
+      const args = [{NFT: ['0x31', '0x31']}, {NFT: ['0x32', '0x32']}, {NFT: ['0x33', '0x33']}];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await expect(submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await expect(submitTransactionAsync(bob, createMultipleItemsTx)).to.be.rejected;
     });
   });
 
   it('Regular user cannot create items in active Fungible collection', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
       const args = [
-        {fungible: { value: 1 }},
-        {fungible: { value: 2 }},
-        {fungible: { value: 3 }},
+        {Fungible: {value: 1}},
+        {Fungible: {value: 2}},
+        {Fungible: {value: 3}},
       ];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await expect(submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await expect(submitTransactionAsync(bob, createMultipleItemsTx)).to.be.rejected;
     });
   });
 
   it('Regular user cannot create items in active ReFungible collection', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;
-      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);
+      const itemsListIndexBefore = await getLastTokenId(api, collectionId);
+      expect(itemsListIndexBefore).to.be.equal(0);
       const args = [
-        {refungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
-        {refungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
-        {refungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
+        {ReFungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
+        {ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
+        {ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
       ];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await expect(submitTransactionAsync(Bob, createMultipleItemsTx)).to.be.rejected;
-    });
-  });
-
-  it('Create token with not existing type', async () => {
-    await usingApi(async (api: ApiPromise) => {
-      const collectionId = await createCollectionExpectSuccess();
-      try {
-        const args = [{ invalid: null }, { invalid: null }, { invalid: null }];
-        const createMultipleItemsTx = await api.tx.nft
-          .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-        await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;
-      } catch (e) {
-        // tslint:disable-next-line:no-unused-expression
-        expect(e).to.be.exist;
-      }
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await expect(submitTransactionAsync(bob, createMultipleItemsTx)).to.be.rejected;
     });
   });
 
   it('Create token in not existing collection', async () => {
     await usingApi(async (api: ApiPromise) => {
-      const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
+      const collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), ['NFT', 'NFT', 'NFT']);
-      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), ['NFT', 'NFT', 'NFT']);
+      await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
     });
   });
 
@@ -325,27 +284,27 @@
     await usingApi(async (api: ApiPromise) => {
       // NFT
       const collectionId = await createCollectionExpectSuccess();
-      const Alice = privateKey('//Alice');
+      const alice = privateKey('//Alice');
       const args = [
-        { nft: ['A'.repeat(2049), 'A'.repeat(2049)] },
-        { nft: ['B'.repeat(2049), 'B'.repeat(2049)] },
-        { nft: ['C'.repeat(2049), 'C'.repeat(2049)] },
+        {NFT: ['A'.repeat(2049), 'A'.repeat(2049)]},
+        {NFT: ['B'.repeat(2049), 'B'.repeat(2049)]},
+        {NFT: ['C'.repeat(2049), 'C'.repeat(2049)]},
       ];
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
 
       // ReFungible
       const collectionIdReFungible =
         await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const argsReFungible = [
-        { ReFungible: ['1'.repeat(2049), '1'.repeat(2049), 10] },
-        { ReFungible: ['2'.repeat(2049), '2'.repeat(2049), 10] },
-        { ReFungible: ['3'.repeat(2049), '3'.repeat(2049), 10] },
+        {ReFungible: ['1'.repeat(2049), '1'.repeat(2049), 10]},
+        {ReFungible: ['2'.repeat(2049), '2'.repeat(2049), 10]},
+        {ReFungible: ['3'.repeat(2049), '3'.repeat(2049), 10]},
       ];
       const createMultipleItemsTxFungible = api.tx.nft
-        .createMultipleItems(collectionIdReFungible, normalizeAccountId(Alice.address), argsReFungible);
-      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTxFungible)).to.be.rejected;
+        .createMultipleItems(collectionIdReFungible, normalizeAccountId(alice.address), argsReFungible);
+      await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTxFungible)).to.be.rejected;
     });
   });
 
@@ -353,8 +312,8 @@
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
       const createMultipleItemsTx = api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), ['NFT', 'Fungible', 'ReFungible']);
-      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), ['NFT', 'Fungible', 'ReFungible']);
+      await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
       // garbage collection :-D
       await destroyCollectionExpectSuccess(collectionId);
     });
@@ -364,13 +323,13 @@
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
       const args = [
-        { nft: ['A', 'A'] },
-        { nft: ['B', 'B'.repeat(2049)] },
-        { nft: ['C'.repeat(2049), 'C'] },
+        {NFT: ['A', 'A']},
+        {NFT: ['B', 'B'.repeat(2049)]},
+        {NFT: ['C'.repeat(2049), 'C']},
       ];
       const createMultipleItemsTx = await api.tx.nft
-        .createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;
+        .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
     });
   });
 
@@ -378,15 +337,15 @@
     await usingApi(async (api) => {
 
       const collectionId = await createCollectionExpectSuccess();
-      await setCollectionLimitsExpectSuccess(Alice, collectionId, {
+      await setCollectionLimitsExpectSuccess(alice, collectionId, {
         tokenLimit: 1,
       });
       const args = [
-        { nft: ['A', 'A'] },
-        { nft: ['B', 'B'] },
+        {NFT: ['A', 'A']},
+        {NFT: ['B', 'B']},
       ];
-      const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(Alice.address), args);
-      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;
+      const createMultipleItemsTx = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
+      await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
     });
   });
 });
modifiedtests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth
--- a/tests/src/creditFeesToTreasury.test.ts
+++ b/tests/src/creditFeesToTreasury.test.ts
@@ -5,25 +5,24 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
-import { alicesPublicKey, bobsPublicKey } from './accounts';
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
+import {alicesPublicKey, bobsPublicKey} from './accounts';
 import privateKey from './substrate/privateKey';
-import { BigNumber } from 'bignumber.js';
-import { IKeyringPair } from '@polkadot/types/types';
-import { 
-  createCollectionExpectSuccess, 
+import {IKeyringPair} from '@polkadot/types/types';
+import {
+  createCollectionExpectSuccess,
   createItemExpectSuccess,
   getGenericResult,
   transferExpectSuccess,
 } from './util/helpers';
 
-import { default as waitNewBlocks } from './substrate/wait-new-blocks';
-import { ApiPromise } from '@polkadot/api';
+import {default as waitNewBlocks} from './substrate/wait-new-blocks';
+import {ApiPromise} from '@polkadot/api';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
-const Treasury = '5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z';
+const TREASURY = '5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z';
 const saneMinimumFee = 0.05;
 const saneMaximumFee = 0.5;
 const createCollectionDeposit = 100;
@@ -31,14 +30,14 @@
 let alice: IKeyringPair;
 let bob: IKeyringPair;
 
-// Skip the inflation block pauses if the block is close to inflation block 
+// Skip the inflation block pauses if the block is close to inflation block
 // until the inflation happens
 /*eslint no-async-promise-executor: "off"*/
 function skipInflationBlock(api: ApiPromise): Promise<void> {
   const promise = new Promise<void>(async (resolve) => {
-    const blockInterval = parseInt((await api.consts.inflation.inflationBlockInterval).toString());
+    const blockInterval = (await api.consts.inflation.inflationBlockInterval).toNumber();
     const unsubscribe = await api.rpc.chain.subscribeNewHeads(head => {
-      const currentBlock = parseInt(head.number.toString());
+      const currentBlock = head.number.toNumber();
       if (currentBlock % blockInterval < blockInterval - 10) {
         unsubscribe();
         resolve();
@@ -64,18 +63,18 @@
       await skipInflationBlock(api);
       await waitNewBlocks(api, 1);
 
-      const totalBefore = new BigNumber((await api.query.balances.totalIssuance()).toString());
+      const totalBefore = (await api.query.balances.totalIssuance()).toBigInt();
 
       const alicePrivateKey = privateKey('//Alice');
-      const amount = new BigNumber(1);
-      const transfer = api.tx.balances.transfer(bobsPublicKey, amount.toFixed());
+      const amount = 1n;
+      const transfer = api.tx.balances.transfer(bobsPublicKey, amount);
 
       const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));
 
-      const totalAfter = new BigNumber((await api.query.balances.totalIssuance()).toString());
+      const totalAfter = (await api.query.balances.totalIssuance()).toBigInt();
 
       expect(result.success).to.be.true;
-      expect(totalAfter.toFixed()).to.be.equal(totalBefore.toFixed());
+      expect(totalAfter).to.be.equal(totalBefore);
     });
   });
 
@@ -85,20 +84,20 @@
       await waitNewBlocks(api, 1);
 
       const alicePrivateKey = privateKey('//Alice');
-      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
-      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
+      const treasuryBalanceBefore: bigint = (await api.query.system.account(TREASURY)).data.free.toBigInt();
+      const aliceBalanceBefore: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
 
-      const amount = new BigNumber(1);
-      const transfer = api.tx.balances.transfer(bobsPublicKey, amount.toFixed());
+      const amount = 1n;
+      const transfer = api.tx.balances.transfer(bobsPublicKey, amount);
       const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));
 
-      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
-      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
-      const fee = aliceBalanceBefore.minus(aliceBalanceAfter).minus(amount);
-      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);
+      const treasuryBalanceAfter: bigint = (await api.query.system.account(TREASURY)).data.free.toBigInt();
+      const aliceBalanceAfter: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
+      const fee = aliceBalanceBefore - aliceBalanceAfter - amount;
+      const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;
 
       expect(result.success).to.be.true;
-      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());
+      expect(treasuryIncrease).to.be.equal(fee);
     });
   });
 
@@ -108,18 +107,18 @@
       await waitNewBlocks(api, 1);
 
       const bobPrivateKey = privateKey('//Bob');
-      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
-      const bobBalanceBefore = new BigNumber((await api.query.system.account(bobsPublicKey)).data.free.toString());
+      const treasuryBalanceBefore = (await api.query.system.account(TREASURY)).data.free.toBigInt();
+      const bobBalanceBefore = (await api.query.system.account(bobsPublicKey)).data.free.toBigInt();
 
       const badTx = api.tx.balances.setBalance(alicesPublicKey, 0, 0);
       await expect(submitTransactionExpectFailAsync(bobPrivateKey, badTx)).to.be.rejected;
 
-      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
-      const bobBalanceAfter = new BigNumber((await api.query.system.account(bobsPublicKey)).data.free.toString());
-      const fee = bobBalanceBefore.minus(bobBalanceAfter);
-      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);
+      const treasuryBalanceAfter = (await api.query.system.account(TREASURY)).data.free.toBigInt();
+      const bobBalanceAfter = (await api.query.system.account(bobsPublicKey)).data.free.toBigInt();
+      const fee = bobBalanceBefore - bobBalanceAfter;
+      const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;
 
-      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());
+      expect(treasuryIncrease).to.be.equal(fee);
     });
   });
 
@@ -128,17 +127,17 @@
       await skipInflationBlock(api);
       await waitNewBlocks(api, 1);
 
-      const treasuryBalanceBefore = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
-      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
+      const treasuryBalanceBefore = (await api.query.system.account(TREASURY)).data.free.toBigInt();
+      const aliceBalanceBefore = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
 
       await createCollectionExpectSuccess();
 
-      const treasuryBalanceAfter = new BigNumber((await api.query.system.account(Treasury)).data.free.toString());
-      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
-      const fee = aliceBalanceBefore.minus(aliceBalanceAfter);
-      const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);
+      const treasuryBalanceAfter = (await api.query.system.account(TREASURY)).data.free.toBigInt();
+      const aliceBalanceAfter = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
+      const fee = aliceBalanceBefore - aliceBalanceAfter;
+      const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;
 
-      expect(treasuryIncrease.toFixed()).to.be.equal(fee.toFixed());
+      expect(treasuryIncrease).to.be.equal(fee);
     });
   });
 
@@ -147,15 +146,15 @@
       await skipInflationBlock(api);
       await waitNewBlocks(api, 1);
 
-      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
+      const aliceBalanceBefore: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
 
       await createCollectionExpectSuccess();
 
-      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
-      const fee = aliceBalanceBefore.minus(aliceBalanceAfter);
+      const aliceBalanceAfter: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
+      const fee = aliceBalanceBefore - aliceBalanceAfter;
 
-      expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(saneMaximumFee + createCollectionDeposit);
-      expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(saneMinimumFee  + createCollectionDeposit);
+      expect(fee / 10n ** 15n < BigInt(Math.ceil(saneMaximumFee + createCollectionDeposit))).to.be.true;
+      expect(fee / 10n ** 15n < BigInt(Math.ceil(saneMinimumFee  + createCollectionDeposit))).to.be.true;
     });
   });
 
@@ -167,17 +166,16 @@
       const collectionId = await createCollectionExpectSuccess();
       const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
 
-      const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
+      const aliceBalanceBefore: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
       await transferExpectSuccess(collectionId, tokenId, alice, bob, 1, 'NFT');
-      const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
-      const fee = aliceBalanceBefore.minus(aliceBalanceAfter);
+      const aliceBalanceAfter: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();
+      const fee = aliceBalanceBefore - aliceBalanceAfter;
 
       // console.log(fee.toString());
       const expectedTransferFee = 0.1;
       const tolerance = 0.001;
-      expect(fee.dividedBy(1e15).minus(expectedTransferFee).abs().toNumber()).to.be.lessThan(tolerance);
+      expect(Number(fee) / 1e15 - expectedTransferFee).to.be.lessThan(tolerance);
     });
   });
 
 });
-
modifiedtests/src/destroyCollection.test.tsdiffbeforeafterboth
--- a/tests/src/destroyCollection.test.ts
+++ b/tests/src/destroyCollection.test.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import { default as usingApi } from './substrate/substrate-api';
-import { createCollectionExpectSuccess,
+import {default as usingApi} from './substrate/substrate-api';
+import {createCollectionExpectSuccess,
   destroyCollectionExpectSuccess,
   destroyCollectionExpectFailure,
   setCollectionLimitsExpectSuccess,
@@ -46,7 +46,7 @@
   it('(!negative test!) Destroy a collection that never existed', async () => {
     await usingApi(async (api) => {
       // Find the collection that never existed
-      const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
+      const collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
       await destroyCollectionExpectFailure(collectionId);
     });
   });
@@ -62,12 +62,12 @@
   });
   it('(!negative test!) Destroy a collection using collection admin account', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
     await destroyCollectionExpectFailure(collectionId, '//Bob');
   });
   it('fails when OwnerCanDestroy == false', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await setCollectionLimitsExpectSuccess(alice, collectionId, { ownerCanDestroy: false });
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanDestroy: false});
 
     await destroyCollectionExpectFailure(collectionId, '//Alice');
   });
modifiedtests/src/enableContractSponsoring.test.tsdiffbeforeafterboth
--- a/tests/src/enableContractSponsoring.test.ts
+++ b/tests/src/enableContractSponsoring.test.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
-import { deployFlipper, getFlipValue, toggleFlipValueExpectSuccess } from './util/contracthelpers';
+import {deployFlipper, getFlipValue, toggleFlipValueExpectSuccess} from './util/contracthelpers';
 import {
   enableContractSponsoringExpectFailure,
   enableContractSponsoringExpectSuccess,
modifiedtests/src/enableDisableTransfer.test.tsdiffbeforeafterboth
--- a/tests/src/enableDisableTransfer.test.ts
+++ b/tests/src/enableDisableTransfer.test.ts
@@ -21,31 +21,31 @@
 describe('Enable/Disable Transfers', () => {
   it('User can transfer token with enabled transfer flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
 
       // explicitely set transfer flag
-      await setTransferFlagExpectSuccess(Alice, nftCollectionId, true);
+      await setTransferFlagExpectSuccess(alice, nftCollectionId, true);
 
-      await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1);
+      await transferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 1);
     });
   });
 
   it('User can\'n transfer token with disabled transfer flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
 
       // explicitely set transfer flag
-      await setTransferFlagExpectSuccess(Alice, nftCollectionId, false);
+      await setTransferFlagExpectSuccess(alice, nftCollectionId, false);
 
-      await transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);
+      await transferExpectFailure(nftCollectionId, newNftTokenId, alice, bob, 1);
     });
   });
 });
@@ -53,12 +53,12 @@
 describe('Negative Enable/Disable Transfers', () => {
   it('Non-owner cannot change transfer flag', async () => {
     await usingApi(async () => {
-      const Bob = privateKey('//Bob');
+      const bob = privateKey('//Bob');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
 
       // Change transfer flag
-      await setTransferFlagExpectFailure(Bob, nftCollectionId, false);
+      await setTransferFlagExpectFailure(bob, nftCollectionId, false);
     });
   });
 });
modifiedtests/src/eth/allowlist.test.tsdiffbeforeafterboth
--- a/tests/src/eth/allowlist.test.ts
+++ b/tests/src/eth/allowlist.test.ts
@@ -1,61 +1,48 @@
-import { expect } from 'chai';
-import waitNewBlocks from '../substrate/wait-new-blocks';
-import { contractHelpers, createEthAccount, createEthAccountWithBalance, deployFlipper, itWeb3, usingWeb3Http } from './util/helpers';
+import {expect} from 'chai';
+import {contractHelpers, createEthAccount, createEthAccountWithBalance, deployFlipper, itWeb3} from './util/helpers';
 
 describe('EVM allowlist', () => {
-  itWeb3('Contract allowlist can be toggled', async ({ api }) => {
-    await usingWeb3Http(async web3Http => {
-      const owner = await createEthAccountWithBalance(api, web3Http);
-      const flipper = await deployFlipper(web3Http, owner);
-      await waitNewBlocks(api, 1);
-      const randomUser = createEthAccount(web3Http);
+  itWeb3('Contract allowlist can be toggled', async ({api, web3}) => {
+    const owner = await createEthAccountWithBalance(api, web3);
+    const flipper = await deployFlipper(web3, owner);
+    const randomUser = createEthAccount(web3);
 
-      const helpers = contractHelpers(web3Http, owner);
+    const helpers = contractHelpers(web3, owner);
 
-      // Any user is allowed by default
-      expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;
-      expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.true;
-      await waitNewBlocks(api, 1);
+    // Any user is allowed by default
+    expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;
+    expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.true;
 
-      // Enable
-      await helpers.methods.toggleAllowlist(flipper.options.address, true).send({ from: owner });
-      await waitNewBlocks(api, 1);
-      expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.true;
-      expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.false;
+    // Enable
+    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});
+    expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.true;
+    expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.false;
 
-      // Disable
-      await helpers.methods.toggleAllowlist(flipper.options.address, false).send({ from: owner });
-      await waitNewBlocks(api, 1);
-      expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;
-      expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.true;
-    });
+    // Disable
+    await helpers.methods.toggleAllowlist(flipper.options.address, false).send({from: owner});
+    expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;
+    expect(await helpers.methods.allowed(flipper.options.address, randomUser).call()).to.be.true;
   });
 
-  itWeb3('Non-whitelisted user can\'t call contract with allowlist enabled', async ({ api }) => {
-    await usingWeb3Http(async web3Http => {
-      const owner = await createEthAccountWithBalance(api, web3Http);
-      const flipper = await deployFlipper(web3Http, owner);
-      await waitNewBlocks(api, 1);
-      const caller = await createEthAccountWithBalance(api, web3Http);
+  itWeb3('Non-whitelisted user can\'t call contract with allowlist enabled', async ({api, web3}) => {
+    const owner = await createEthAccountWithBalance(api, web3);
+    const flipper = await deployFlipper(web3, owner);
+    const caller = await createEthAccountWithBalance(api, web3);
 
-      const helpers = contractHelpers(web3Http, owner);
+    const helpers = contractHelpers(web3, owner);
 
-      // User can flip with allowlist disabled
-      await flipper.methods.flip().send({ from: caller });
-      await waitNewBlocks(api, 1);
-      expect(await flipper.methods.getValue().call()).to.be.true;
+    // User can flip with allowlist disabled
+    await flipper.methods.flip().send({from: caller});
+    expect(await flipper.methods.getValue().call()).to.be.true;
 
-      // Tx will be reverted if user is not in whitelist
-      await helpers.methods.toggleAllowlist(flipper.options.address, true).send({ from: owner });
-      await expect(flipper.methods.flip().send({ from: caller })).to.rejected;
-      await waitNewBlocks(api, 1);
-      expect(await flipper.methods.getValue().call()).to.be.true;
+    // Tx will be reverted if user is not in whitelist
+    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});
+    await expect(flipper.methods.flip().send({from: caller})).to.rejected;
+    expect(await flipper.methods.getValue().call()).to.be.true;
 
-      // Adding caller to allowlist will make contract callable again
-      await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});
-      await flipper.methods.flip().send({ from: caller });
-      await waitNewBlocks(api, 1);
-      expect(await flipper.methods.getValue().call()).to.be.false;
-    });
+    // Adding caller to allowlist will make contract callable again
+    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});
+    await flipper.methods.flip().send({from: caller});
+    expect(await flipper.methods.getValue().call()).to.be.false;
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/base.test.tsdiffbeforeafterboth
--- a/tests/src/eth/base.test.ts
+++ b/tests/src/eth/base.test.ts
@@ -1,22 +1,22 @@
 
-import { createEthAccount, createEthAccountWithBalance, deployFlipper, ethBalanceViaSub, GAS_ARGS, itWeb3, recordEthFee } from './util/helpers';
-import { expect } from 'chai';
-import { UNIQUE } from '../util/helpers';
+import {createEthAccount, createEthAccountWithBalance, deployFlipper, ethBalanceViaSub, GAS_ARGS, itWeb3, recordEthFee} from './util/helpers';
+import {expect} from 'chai';
+import {UNIQUE} from '../util/helpers';
 
 describe('Contract calls', () => {
-  itWeb3('Call of simple contract fee is less than 0.2 UNQ', async ({ web3, api }) => {
+  itWeb3('Call of simple contract fee is less than 0.2 UNQ', async ({web3, api}) => {
     const deployer = await createEthAccountWithBalance(api, web3);
-    const flipper = await deployFlipper(web3 as any, deployer);
+    const flipper = await deployFlipper(web3, deployer);
 
     const cost = await recordEthFee(api, deployer, () => flipper.methods.flip().send({from: deployer}));
     expect(cost < BigInt(0.2 * Number(UNIQUE))).to.be.true;
   });
 
-  itWeb3('Balance transfer fee is less than 0.2 UNQ', async ({ web3, api }) => {
+  itWeb3('Balance transfer fee is less than 0.2 UNQ', async ({web3, api}) => {
     const userA = await createEthAccountWithBalance(api, web3);
     const userB = createEthAccount(web3);
 
-    const cost = await recordEthFee(api, userA, () => web3.eth.sendTransaction({ from: userA, to: userB, value: '1000000', ...GAS_ARGS }));
+    const cost = await recordEthFee(api, userA, () => web3.eth.sendTransaction({from: userA, to: userB, value: '1000000', ...GAS_ARGS}));
     expect(cost - await ethBalanceViaSub(api, userB) < BigInt(0.2 * Number(UNIQUE))).to.be.true;
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth
--- a/tests/src/eth/contractSponsoring.test.ts
+++ b/tests/src/eth/contractSponsoring.test.ts
@@ -4,26 +4,21 @@
 //
 
 import privateKey from '../substrate/privateKey';
-import { expect } from 'chai';
-import {  
+import {expect} from 'chai';
+import {
   contractHelpers,
   createEthAccountWithBalance,
   transferBalanceToEth,
   deployFlipper,
-  itWeb3 } from './util/helpers';
-import waitNewBlocks from '../substrate/wait-new-blocks';
+  itWeb3} from './util/helpers';
 
 describe('Sponsoring EVM contracts', () => {
   itWeb3('Sponsoring can be set by the address that has deployed the contract', async ({api, web3}) => {
     const owner = await createEthAccountWithBalance(api, web3);
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
     const helpers = contractHelpers(web3, owner);
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
-    await waitNewBlocks(api, 1);
     await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
   });
 
@@ -31,13 +26,9 @@
     const owner = await createEthAccountWithBalance(api, web3);
     const notOwner = await createEthAccountWithBalance(api, web3);
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
     const helpers = contractHelpers(web3, owner);
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
-    await waitNewBlocks(api, 1);
     await expect(helpers.methods.toggleSponsoring(notOwner, true).send({from: notOwner})).to.rejected;
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
   });
 
@@ -48,29 +39,22 @@
     const caller = await createEthAccountWithBalance(api, web3);
 
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
-      
+
     const helpers = contractHelpers(web3, owner);
-    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({ from: owner });
-    await waitNewBlocks(api, 1);
-    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({ from: owner });
-    await waitNewBlocks(api, 1);
+    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});
+    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});
 
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
     await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
-    await waitNewBlocks(api, 1);
     await helpers.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: owner});
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
 
     await transferBalanceToEth(api, alice, flipper.options.address);
-    await waitNewBlocks(api, 2);
 
     const originalFlipperBalance = await web3.eth.getBalance(flipper.options.address);
     expect(originalFlipperBalance).to.be.not.equal('0');
 
-    await flipper.methods.flip().send({ from: caller });
-    await waitNewBlocks(api, 1);
+    await flipper.methods.flip().send({from: caller});
     expect(await flipper.methods.getValue().call()).to.be.true;
 
     // Balance should be taken from flipper instead of caller
@@ -85,25 +69,20 @@
     const caller = await createEthAccountWithBalance(api, web3);
 
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
-    
+
     const helpers = contractHelpers(web3, owner);
 
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
     await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
-    await waitNewBlocks(api, 1);
     await helpers.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: owner});
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
 
     await transferBalanceToEth(api, alice, flipper.options.address);
-    await waitNewBlocks(api, 2);
 
     const originalFlipperBalance = await web3.eth.getBalance(flipper.options.address);
     expect(originalFlipperBalance).to.be.not.equal('0');
 
-    await flipper.methods.flip().send({ from: caller });
-    await waitNewBlocks(api, 1);
+    await flipper.methods.flip().send({from: caller});
     expect(await flipper.methods.getValue().call()).to.be.true;
 
     // Balance should be taken from flipper instead of caller
@@ -119,29 +98,22 @@
     const originalCallerBalance = await web3.eth.getBalance(caller);
 
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
-      
+
     const helpers = contractHelpers(web3, owner);
-    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({ from: owner });
-    await waitNewBlocks(api, 1);
-    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({ from: owner });
-    await waitNewBlocks(api, 1);
+    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});
+    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});
 
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
     await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
-    await waitNewBlocks(api, 1);
     await helpers.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: owner});
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
 
     await transferBalanceToEth(api, alice, flipper.options.address);
-    await waitNewBlocks(api, 2);
 
     const originalFlipperBalance = await web3.eth.getBalance(flipper.options.address);
     expect(originalFlipperBalance).to.be.not.equal('0');
 
-    await flipper.methods.flip().send({ from: caller });
-    await waitNewBlocks(api, 1);
+    await flipper.methods.flip().send({from: caller});
     expect(await flipper.methods.getValue().call()).to.be.true;
 
     expect(await web3.eth.getBalance(caller)).to.be.equals(originalCallerBalance);
@@ -155,44 +127,34 @@
     const originalCallerBalance = await web3.eth.getBalance(caller);
 
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
-      
+
     const helpers = contractHelpers(web3, owner);
-    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({ from: owner });
-    await waitNewBlocks(api, 1);
-    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({ from: owner });
-    await waitNewBlocks(api, 1);
+    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});
+    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});
 
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
     await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
-    await waitNewBlocks(api, 1);
     await helpers.methods.setSponsoringRateLimit(flipper.options.address, 10).send({from: owner});
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
 
     await transferBalanceToEth(api, alice, flipper.options.address);
-    await waitNewBlocks(api, 2);
 
     const originalFlipperBalance = await web3.eth.getBalance(flipper.options.address);
     expect(originalFlipperBalance).to.be.not.equal('0');
 
-    await flipper.methods.flip().send({ from: caller });
-    await waitNewBlocks(api, 1);
+    await flipper.methods.flip().send({from: caller});
     expect(await flipper.methods.getValue().call()).to.be.true;
     expect(await web3.eth.getBalance(caller)).to.be.equals(originalCallerBalance);
 
-    await flipper.methods.flip().send({ from: caller });
-    await waitNewBlocks(api, 1);
+    await flipper.methods.flip().send({from: caller});
     expect(await web3.eth.getBalance(caller)).to.be.not.equals(originalCallerBalance);
   });
 
-  // TODO: Find a way to calculate default rate limit 
+  // TODO: Find a way to calculate default rate limit
   itWeb3('Default rate limit equals 7200', async ({api, web3}) => {
     const owner = await createEthAccountWithBalance(api, web3);
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
     const helpers = contractHelpers(web3, owner);
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');
   });
 
@@ -203,25 +165,20 @@
     const caller = await createEthAccountWithBalance(api, web3);
 
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
-    
+
     const helpers = contractHelpers(web3, owner);
 
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
     await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
-    await waitNewBlocks(api, 1);
     await helpers.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: owner});
-    await waitNewBlocks(api, 1);
     expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
 
     await transferBalanceToEth(api, alice, flipper.options.address);
-    await waitNewBlocks(api, 2);
 
     const originalFlipperBalance = await web3.eth.getBalance(flipper.options.address);
     expect(originalFlipperBalance).to.be.not.equal('0');
 
-    await flipper.methods.flip().send({ from: caller });
-    await waitNewBlocks(api, 1);
+    await flipper.methods.flip().send({from: caller});
     expect(await flipper.methods.getValue().call()).to.be.true;
 
     // Balance should be taken from flipper instead of caller
modifiedtests/src/eth/crossTransfer.test.tsdiffbeforeafterboth
--- a/tests/src/eth/crossTransfer.test.ts
+++ b/tests/src/eth/crossTransfer.test.ts
@@ -4,15 +4,15 @@
 //
 
 import privateKey from '../substrate/privateKey';
-import { createCollectionExpectSuccess, 
-  createFungibleItemExpectSuccess, 
-  transferExpectSuccess, 
-  transferFromExpectSuccess, 
-  createItemExpectSuccess } from '../util/helpers';
-import { collectionIdToAddress, 
-  createEthAccountWithBalance, 
+import {createCollectionExpectSuccess,
+  createFungibleItemExpectSuccess,
+  transferExpectSuccess,
+  transferFromExpectSuccess,
+  createItemExpectSuccess} from '../util/helpers';
+import {collectionIdToAddress,
+  createEthAccountWithBalance,
   subToEth,
-  GAS_ARGS, itWeb3 } from './util/helpers';
+  GAS_ARGS, itWeb3} from './util/helpers';
 import fungibleAbi from './fungibleAbi.json';
 import nonFungibleAbi from './nonFungibleAbi.json';
 
@@ -20,34 +20,34 @@
   itWeb3('The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate', async () => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const bob = privateKey('//Bob');
     const charlie = privateKey('//Charlie');
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { substrate: alice.address });
-    await transferExpectSuccess(collection, 0, alice, {ethereum: subToEth(charlie.address)} , 200, 'Fungible');
-    await transferFromExpectSuccess(collection, 0, alice, {ethereum: subToEth(charlie.address)}, charlie, 50, 'Fungible');
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});
+    await transferExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)} , 200, 'Fungible');
+    await transferFromExpectSuccess(collection, 0, alice, {Ethereum: subToEth(charlie.address)}, charlie, 50, 'Fungible');
     await transferExpectSuccess(collection, 0, charlie, bob, 50, 'Fungible');
   });
 
-  itWeb3('The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM', async ({ api, web3 }) => {
+  itWeb3('The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const bob = privateKey('//Bob');
     const bobProxy = await createEthAccountWithBalance(api, web3);
     const aliceProxy = await createEthAccountWithBalance(api, web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, alice.address);
-    await transferExpectSuccess(collection, 0, alice, { ethereum: aliceProxy } , 200, 'Fungible');
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, alice.address);
+    await transferExpectSuccess(collection, 0, alice, {Ethereum: aliceProxy} , 200, 'Fungible');
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(fungibleAbi as any, address, {from: aliceProxy, ...GAS_ARGS});
 
-    await contract.methods.transfer(bobProxy, 50).send({ from: aliceProxy });
-    await transferFromExpectSuccess(collection, 0, alice, {ethereum: bobProxy}, bob, 50, 'Fungible');
+    await contract.methods.transfer(bobProxy, 50).send({from: aliceProxy});
+    await transferFromExpectSuccess(collection, 0, alice, {Ethereum: bobProxy}, bob, 50, 'Fungible');
     await transferExpectSuccess(collection, 0, bob, alice, 50, 'Fungible');
   });
 });
@@ -56,33 +56,33 @@
   itWeb3('The private key X create a substrate address. Alice sends a token to the corresponding EVM address, and X can send it to Bob in the substrate', async () => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const bob = privateKey('//Bob');
     const charlie = privateKey('//Charlie');
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { substrate: alice.address });
-    await transferExpectSuccess(collection, tokenId, alice, { ethereum: subToEth(charlie.address) }, 1, 'NFT');
-    await transferFromExpectSuccess(collection, tokenId, alice, {ethereum: subToEth(charlie.address)}, charlie, 1, 'NFT');
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
+    await transferExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, 1, 'NFT');
+    await transferFromExpectSuccess(collection, tokenId, alice, {Ethereum: subToEth(charlie.address)}, charlie, 1, 'NFT');
     await transferExpectSuccess(collection, tokenId, charlie, bob, 1, 'NFT');
   });
 
-  itWeb3('The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM', async ({ api, web3 }) => {
+  itWeb3('The private key X create a EVM address. Alice sends a token to the substrate address corresponding to this EVM address, and X can send it to Bob in the EVM', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const bob = privateKey('//Bob');
     const charlie = privateKey('//Charlie');
     const bobProxy = await createEthAccountWithBalance(api, web3);
     const aliceProxy = await createEthAccountWithBalance(api, web3);
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { substrate: alice.address });
-    await transferExpectSuccess(collection, tokenId, alice, { ethereum: aliceProxy } , 1, 'NFT');
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
+    await transferExpectSuccess(collection, tokenId, alice, {Ethereum: aliceProxy} , 1, 'NFT');
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: aliceProxy, ...GAS_ARGS});
-    await contract.methods.transfer(bobProxy, 1).send({ from: aliceProxy });
-    await transferFromExpectSuccess(collection, tokenId, alice, {ethereum: bobProxy}, bob, 1, 'NFT');
+    await contract.methods.transfer(bobProxy, 1).send({from: aliceProxy});
+    await transferFromExpectSuccess(collection, tokenId, alice, {Ethereum: bobProxy}, bob, 1, 'NFT');
     await transferExpectSuccess(collection, tokenId, bob, charlie, 1, 'NFT');
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/fungible.test.tsdiffbeforeafterboth
--- a/tests/src/eth/fungible.test.ts
+++ b/tests/src/eth/fungible.test.ts
@@ -4,41 +4,40 @@
 //
 
 import privateKey from '../substrate/privateKey';
-import { approveExpectSuccess, createCollectionExpectSuccess, createFungibleItemExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, UNIQUE } from '../util/helpers';
-import { collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, transferBalanceToEth } from './util/helpers';
+import {approveExpectSuccess, createCollectionExpectSuccess, createFungibleItemExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, UNIQUE} from '../util/helpers';
+import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, transferBalanceToEth} from './util/helpers';
 import fungibleAbi from './fungibleAbi.json';
-import { expect } from 'chai';
+import {expect} from 'chai';
 
 describe('Fungible: Information getting', () => {
-  itWeb3('totalSupply', async ({ api, web3 }) => {
+  itWeb3('totalSupply', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
-  
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { substrate: alice.address });
 
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});
+
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS});
     const totalSupply = await contract.methods.totalSupply().call();
 
-    // FIXME: always equals to 0, because this method is not implemented
-    expect(totalSupply).to.equal('0');
+    expect(totalSupply).to.equal('200');
   });
 
-  itWeb3('balanceOf', async ({ api, web3 }) => {
+  itWeb3('balanceOf', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: caller });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller});
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS});
@@ -49,16 +48,16 @@
 });
 
 describe('Fungible: Plain calls', () => {
-  itWeb3('Can perform approve()', async ({ web3, api }) => {
+  itWeb3('Can perform approve()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const owner = await createEthAccountWithBalance(api, web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: owner });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});
 
     const spender = createEthAccount(web3);
 
@@ -88,17 +87,17 @@
     }
   });
 
-  itWeb3('Can perform transferFrom()', async ({ web3, api }) => {
+  itWeb3('Can perform transferFrom()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const owner = createEthAccount(web3);
     await transferBalanceToEth(api, alice, owner, 999999999999999);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: owner });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});
 
     const spender = createEthAccount(web3);
     await transferBalanceToEth(api, alice, spender, 999999999999999);
@@ -146,17 +145,17 @@
     }
   });
 
-  itWeb3('Can perform transfer()', async ({ web3, api }) => {
+  itWeb3('Can perform transfer()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const owner = createEthAccount(web3);
     await transferBalanceToEth(api, alice, owner, 999999999999999);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: owner });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});
 
     const receiver = createEthAccount(web3);
     await transferBalanceToEth(api, alice, receiver, 999999999999999);
@@ -165,7 +164,7 @@
     const contract = new web3.eth.Contract(fungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
     {
-      const result = await contract.methods.transfer(receiver, 50).send({ from: owner});
+      const result = await contract.methods.transfer(receiver, 50).send({from: owner});
       const events = normalizeEvents(result.events);
       expect(events).to.be.deep.equal([
         {
@@ -193,79 +192,79 @@
 });
 
 describe('Fungible: Fees', () => {
-  itWeb3('approve() call fee is less than 0.2UNQ', async ({ web3, api }) => {
+  itWeb3('approve() call fee is less than 0.2UNQ', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const owner = await createEthAccountWithBalance(api, web3);
     const spender = createEthAccount(web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: owner });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(fungibleAbi as any, address, { from: owner, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(fungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
-    const cost = await recordEthFee(api, owner, () => contract.methods.approve(spender, 100).send({ from: owner }));
+    const cost = await recordEthFee(api, owner, () => contract.methods.approve(spender, 100).send({from: owner}));
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
   });
 
-  itWeb3('transferFrom() call fee is less than 0.2UNQ', async ({ web3, api }) => {
+  itWeb3('transferFrom() call fee is less than 0.2UNQ', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
-  
+
     const owner = await createEthAccountWithBalance(api, web3);
     const spender = await createEthAccountWithBalance(api, web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: owner });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(fungibleAbi as any, address, { from: owner, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(fungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
-    await contract.methods.approve(spender, 100).send({ from: owner });
+    await contract.methods.approve(spender, 100).send({from: owner});
 
-    const cost = await recordEthFee(api, spender, () => contract.methods.transferFrom(owner, spender, 100).send({ from: spender }));
+    const cost = await recordEthFee(api, spender, () => contract.methods.transferFrom(owner, spender, 100).send({from: spender}));
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
   });
 
-  itWeb3('transfer() call fee is less than 0.2UNQ', async ({ web3, api }) => {
+  itWeb3('transfer() call fee is less than 0.2UNQ', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const owner = await createEthAccountWithBalance(api, web3);
     const receiver = createEthAccount(web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: owner });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(fungibleAbi as any, address, { from: owner, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(fungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
-    const cost = await recordEthFee(api, owner, () => contract.methods.transfer(receiver, 100).send({ from: owner }));
+    const cost = await recordEthFee(api, owner, () => contract.methods.transfer(receiver, 100).send({from: owner}));
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
   });
 });
 
 describe('Fungible: Substrate calls', () => {
-  itWeb3('Events emitted for approve()', async ({ web3 }) => {
+  itWeb3('Events emitted for approve()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const receiver = createEthAccount(web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n});
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(fungibleAbi as any, address);
 
     const events = await recordEvents(contract, async () => {
-      await approveExpectSuccess(collection, 1, alice, { ethereum: receiver }, 100);
+      await approveExpectSuccess(collection, 0, alice, {Ethereum: receiver}, 100);
     });
 
     expect(events).to.be.deep.equal([
@@ -281,23 +280,23 @@
     ]);
   });
 
-  itWeb3('Events emitted for transferFrom()', async ({ web3 }) => {
+  itWeb3('Events emitted for transferFrom()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const bob = privateKey('//Bob');
 
     const receiver = createEthAccount(web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n });
-    await approveExpectSuccess(collection, 1, alice, bob, 100);
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n});
+    await approveExpectSuccess(collection, 0, alice, bob.address, 100);
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(fungibleAbi as any, address);
 
     const events = await recordEvents(contract, async () => {
-      await transferFromExpectSuccess(collection, 1, bob, alice, { ethereum: receiver }, 51, 'Fungible');
+      await transferFromExpectSuccess(collection, 0, bob, alice, {Ethereum: receiver}, 51, 'Fungible');
     });
 
     expect(events).to.be.deep.equal([
@@ -322,21 +321,21 @@
     ]);
   });
 
-  itWeb3('Events emitted for transfer()', async ({ web3 }) => {
+  itWeb3('Events emitted for transfer()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
 
     const receiver = createEthAccount(web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n});
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(fungibleAbi as any, address);
 
     const events = await recordEvents(contract, async () => {
-      await transferExpectSuccess(collection, 1, alice, { ethereum: receiver }, 51, 'Fungible');
+      await transferExpectSuccess(collection, 0, alice, {Ethereum:receiver}, 51, 'Fungible');
     });
 
     expect(events).to.be.deep.equal([
@@ -351,4 +350,4 @@
       },
     ]);
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/helpersSmoke.test.tsdiffbeforeafterboth
--- a/tests/src/eth/helpersSmoke.test.ts
+++ b/tests/src/eth/helpersSmoke.test.ts
@@ -1,25 +1,21 @@
-import { expect } from 'chai';
-import waitNewBlocks from '../substrate/wait-new-blocks';
-import { createEthAccountWithBalance, deployFlipper, itWeb3, contractHelpers } from './util/helpers';
+import {expect} from 'chai';
+import {createEthAccountWithBalance, deployFlipper, itWeb3, contractHelpers} from './util/helpers';
 
 describe('Helpers sanity check', () => {
-  itWeb3('Contract owner is recorded', async ({ api, web3 }) => {
+  itWeb3('Contract owner is recorded', async ({api, web3}) => {
     const owner = await createEthAccountWithBalance(api, web3);
 
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
 
     expect(await contractHelpers(web3, owner).methods.contractOwner(flipper.options.address).call()).to.be.equal(owner);
   });
 
-  itWeb3('Flipper is working', async ({ api, web3 }) => {
+  itWeb3('Flipper is working', async ({api, web3}) => {
     const owner = await createEthAccountWithBalance(api, web3);
     const flipper = await deployFlipper(web3, owner);
-    await waitNewBlocks(api, 1);
 
     expect(await flipper.methods.getValue().call()).to.be.false;
-    await flipper.methods.flip().send({ from: owner });
-    await waitNewBlocks(api, 1);
+    await flipper.methods.flip().send({from: owner});
     expect(await flipper.methods.getValue().call()).to.be.true;
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/marketplace/marketplace.test.tsdiffbeforeafterboth
--- a/tests/src/eth/marketplace/marketplace.test.ts
+++ b/tests/src/eth/marketplace/marketplace.test.ts
@@ -1,109 +1,106 @@
-import { readFile } from 'fs/promises';
-import { getBalanceSingle, transferBalanceExpectSuccess } from '../../substrate/get-balance';
+import {readFile} from 'fs/promises';
+import {getBalanceSingle, transferBalanceExpectSuccess} from '../../substrate/get-balance';
 import privateKey from '../../substrate/privateKey';
-import { createCollectionExpectSuccess, createFungibleItemExpectSuccess, createItemExpectSuccess, queryNftOwner, transferExpectSuccess, transferFromExpectSuccess } from '../../util/helpers';
-import { collectionIdToAddress, createEthAccountWithBalance, executeEthTxOnSub, GAS_ARGS, itWeb3, subToEth, subToEthLowercase } from '../util/helpers';
-import { evmToAddress } from '@polkadot/util-crypto';
+import {createCollectionExpectSuccess, createFungibleItemExpectSuccess, createItemExpectSuccess, getTokenOwner, transferExpectSuccess, transferFromExpectSuccess} from '../../util/helpers';
+import {collectionIdToAddress, createEthAccountWithBalance, executeEthTxOnSub, GAS_ARGS, itWeb3, subToEth, subToEthLowercase} from '../util/helpers';
+import {evmToAddress} from '@polkadot/util-crypto';
 import nonFungibleAbi from '../nonFungibleAbi.json';
 import fungibleAbi from '../fungibleAbi.json';
-import waitNewBlocks from '../../substrate/wait-new-blocks';
-import { expect } from 'chai';
+import {expect} from 'chai';
 
 const PRICE = 2000n;
 
 describe('Matcher contract usage', () => {
   itWeb3('With UNQ', async ({api, web3}) => {
     const matcherOwner = await createEthAccountWithBalance(api, web3);
-    const Matcher = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlaceUNQ.abi`)).toString()), undefined, {
+    const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlaceUNQ.abi`)).toString()), undefined, {
       from: matcherOwner,
       ...GAS_ARGS,
     });
-    const matcher = await Matcher.deploy({ data: (await readFile(`${__dirname}/MarketPlaceUNQ.bin`)).toString() }).send({ from: matcherOwner });
+    const matcher = await matcherContract.deploy({data: (await readFile(`${__dirname}/MarketPlaceUNQ.bin`)).toString()}).send({from: matcherOwner});
 
     const alice = privateKey('//Alice');
     const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), { from: matcherOwner });
+    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), {from: matcherOwner});
 
     const seller = privateKey('//Bob');
-  
+
     const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', seller.address);
 
     // To transfer item to matcher it first needs to be transfered to EVM account of bob
-    await transferExpectSuccess(collectionId, tokenId, seller, {ethereum: subToEth(seller.address)});
+    await transferExpectSuccess(collectionId, tokenId, seller, {Ethereum: subToEth(seller.address)});
     // Fees will be paid from EVM account, so we should have some balance here
     await transferBalanceExpectSuccess(api, seller, evmToAddress(subToEth(seller.address)), 10n ** 18n);
     await transferBalanceExpectSuccess(api, alice, evmToAddress(subToEth(alice.address)), 10n ** 18n);
-    await waitNewBlocks(api, 1);
 
     // Token is owned by seller initially
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: subToEthLowercase(seller.address) });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(seller.address)});
 
     // Ask
     {
       await executeEthTxOnSub(api, seller, evmCollection, m => m.approve(matcher.options.address, tokenId));
       await executeEthTxOnSub(api, seller, matcher, m => m.setAsk(PRICE, '0x0000000000000000000000000000000000000000', evmCollection.options.address, tokenId, 1));
     }
-      
+
     // Token is transferred to matcher
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: matcher.options.address.toLowerCase() });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: matcher.options.address.toLowerCase()});
 
     // Buy
     {
       const sellerBalanceBeforePurchase = await getBalanceSingle(api, seller.address);
       // There is two functions named 'buy', so we should provide full signature
-      await executeEthTxOnSub(api, alice, matcher, m => m['buy(address,uint256)'](evmCollection.options.address, tokenId), { value: PRICE });
+      await executeEthTxOnSub(api, alice, matcher, m => m['buy(address,uint256)'](evmCollection.options.address, tokenId), {value: PRICE});
       expect(await getBalanceSingle(api, seller.address) - sellerBalanceBeforePurchase === PRICE);
     }
 
     // Token is transferred to evm account of alice
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: subToEthLowercase(alice.address) });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(alice.address)});
+
 
-  
     // Transfer token to substrate side of alice
-    await transferFromExpectSuccess(collectionId, tokenId, alice, { ethereum: subToEth(alice.address) }, { substrate: alice.address });
-    
+    await transferFromExpectSuccess(collectionId, tokenId, alice, {Ethereum: subToEth(alice.address)}, {Substrate: alice.address});
+
     // Token is transferred to substrate account of alice, seller received funds
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ substrate: alice.address });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Substrate: alice.address});
   });
 
   itWeb3('With custom ERC20', async ({api, web3}) => {
     const matcherOwner = await createEthAccountWithBalance(api, web3);
-    const Matcher = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlaceUNQ.abi`)).toString()), undefined, {
+    const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlaceUNQ.abi`)).toString()), undefined, {
       from: matcherOwner,
       ...GAS_ARGS,
     });
-    const matcher = await Matcher.deploy({ data: (await readFile(`${__dirname}/MarketPlaceUNQ.bin`)).toString() }).send({ from: matcherOwner });
+    const matcher = await matcherContract.deploy({data: (await readFile(`${__dirname}/MarketPlaceUNQ.bin`)).toString()}).send({from: matcherOwner});
 
     const alice = privateKey('//Alice');
     const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), { from: matcherOwner });
+    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), {from: matcherOwner});
 
-    const fungibleId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });
-    const evmFungible = new web3.eth.Contract(fungibleAbi as any, collectionIdToAddress(fungibleId), { from: matcherOwner, ...GAS_ARGS });
-    await createFungibleItemExpectSuccess(alice, fungibleId, { Value: PRICE }, { ethereum: subToEth(alice.address) });
+    const fungibleId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+    const evmFungible = new web3.eth.Contract(fungibleAbi as any, collectionIdToAddress(fungibleId), {from: matcherOwner, ...GAS_ARGS});
+    await createFungibleItemExpectSuccess(alice, fungibleId, {Value: PRICE}, {Ethereum: subToEth(alice.address)});
 
     const seller = privateKey('//Bob');
-  
+
     const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', seller.address);
 
     // To transfer item to matcher it first needs to be transfered to EVM account of bob
-    await transferExpectSuccess(collectionId, tokenId, seller, {ethereum: subToEth(seller.address)});
+    await transferExpectSuccess(collectionId, tokenId, seller, {Ethereum: subToEth(seller.address)});
     // Fees will be paid from EVM account, so we should have some balance here
     await transferBalanceExpectSuccess(api, seller, evmToAddress(subToEth(seller.address)), 10n ** 18n);
     await transferBalanceExpectSuccess(api, alice, evmToAddress(subToEth(alice.address)), 10n ** 18n);
-    await waitNewBlocks(api, 1);
 
     // Token is owned by seller initially
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: subToEthLowercase(seller.address) });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(seller.address)});
 
     // Ask
     {
       await executeEthTxOnSub(api, seller, evmCollection, m => m.approve(matcher.options.address, tokenId));
       await executeEthTxOnSub(api, seller, matcher, m => m.setAsk(PRICE, evmFungible.options.address, evmCollection.options.address, tokenId, 1));
     }
-      
+
     // Token is transferred to matcher
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: matcher.options.address.toLowerCase() });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: matcher.options.address.toLowerCase()});
 
     // Buy
     {
@@ -121,65 +118,62 @@
     }
 
     // Token is transferred to evm account of alice
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: subToEthLowercase(alice.address) });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(alice.address)});
+
 
-  
     // Transfer token to substrate side of alice
-    await transferFromExpectSuccess(collectionId, tokenId, alice, { ethereum: subToEth(alice.address) }, { substrate: alice.address });
-    
+    await transferFromExpectSuccess(collectionId, tokenId, alice, {Ethereum: subToEth(alice.address)}, {Substrate: alice.address});
+
     // Token is transferred to substrate account of alice
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ substrate: alice.address });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Substrate: alice.address});
   });
 
-  itWeb3('With escrow', async ({ api, web3 }) => {
+  itWeb3('With escrow', async ({api, web3}) => {
     const matcherOwner = await createEthAccountWithBalance(api, web3);
     const escrow = await createEthAccountWithBalance(api, web3);
-    const Matcher = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlaceKSM.abi`)).toString()), undefined, {
+    const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlaceKSM.abi`)).toString()), undefined, {
       from: matcherOwner,
       ...GAS_ARGS,
     });
-    const matcher = await Matcher.deploy({ data: (await readFile(`${__dirname}/MarketPlaceKSM.bin`)).toString(), arguments: [escrow] }).send({ from: matcherOwner });
-    
+    const matcher = await matcherContract.deploy({data: (await readFile(`${__dirname}/MarketPlaceKSM.bin`)).toString(), arguments: [escrow]}).send({from: matcherOwner});
+
     const ksmToken = 11;
 
     const alice = privateKey('//Alice');
     const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), { from: matcherOwner });
+    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, collectionIdToAddress(collectionId), {from: matcherOwner});
 
     const seller = privateKey('//Bob');
-  
+
     const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', seller.address);
 
     // To transfer item to matcher it first needs to be transfered to EVM account of bob
-    await transferExpectSuccess(collectionId, tokenId, seller, {ethereum: subToEth(seller.address)});
+    await transferExpectSuccess(collectionId, tokenId, seller, {Ethereum: subToEth(seller.address)});
     // Fees will be paid from EVM account, so we should have some balance here
     await transferBalanceExpectSuccess(api, seller, evmToAddress(subToEth(seller.address)), 10n ** 18n);
     await transferBalanceExpectSuccess(api, alice, evmToAddress(subToEth(alice.address)), 10n ** 18n);
-    await waitNewBlocks(api, 1);
 
     // Token is owned by seller initially
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: subToEthLowercase(seller.address) });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(seller.address)});
 
     // Ask
     {
       await executeEthTxOnSub(api, seller, evmCollection, m => m.approve(matcher.options.address, tokenId));
       await executeEthTxOnSub(api, seller, matcher, m => m.setAsk(PRICE, ksmToken, evmCollection.options.address, tokenId, 1));
     }
-      
+
     // Token is transferred to matcher
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: matcher.options.address.toLowerCase() });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: matcher.options.address.toLowerCase()});
 
     // Give buyer KSM
-    await matcher.methods.deposit(PRICE, ksmToken, subToEth(alice.address)).send({ from: escrow });
-    await waitNewBlocks(api, 1);
-  
+    await matcher.methods.deposit(PRICE, ksmToken, subToEth(alice.address)).send({from: escrow});
+
     // Buy
     {
       expect(await matcher.methods.escrowBalance(ksmToken, subToEth(seller.address)).call()).to.be.equal('0');
       expect(await matcher.methods.escrowBalance(ksmToken, subToEth(alice.address)).call()).to.be.equal(PRICE.toString());
 
       await executeEthTxOnSub(api, alice, matcher, m => m.buy(evmCollection.options.address, tokenId));
-      await waitNewBlocks(api, 1);
 
       // Price is removed from buyer balance, and added to seller
       expect(await matcher.methods.escrowBalance(ksmToken, subToEth(alice.address)).call()).to.be.equal('0');
@@ -187,12 +181,12 @@
     }
 
     // Token is transferred to evm account of alice
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ ethereum: subToEthLowercase(alice.address) });
-  
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Ethereum: subToEthLowercase(alice.address)});
+
     // Transfer token to substrate side of alice
-    await transferFromExpectSuccess(collectionId, tokenId, alice, { ethereum: subToEth(alice.address) }, { substrate: alice.address });
-    
+    await transferFromExpectSuccess(collectionId, tokenId, alice, {Ethereum: subToEth(alice.address)}, {Substrate: alice.address});
+
     // Token is transferred to substrate account of alice, seller received funds
-    expect(await queryNftOwner(api, collectionId, tokenId)).to.be.deep.equal({ substrate: alice.address });
+    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal({Substrate: alice.address});
   });
 });
modifiedtests/src/eth/metadata.test.tsdiffbeforeafterboth
--- a/tests/src/eth/metadata.test.ts
+++ b/tests/src/eth/metadata.test.ts
@@ -3,35 +3,35 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { expect } from 'chai';
-import { createCollectionExpectSuccess } from '../util/helpers';
-import { collectionIdToAddress, createEthAccountWithBalance, GAS_ARGS, itWeb3 } from './util/helpers';
+import {expect} from 'chai';
+import {createCollectionExpectSuccess} from '../util/helpers';
+import {collectionIdToAddress, createEthAccountWithBalance, GAS_ARGS, itWeb3} from './util/helpers';
 import fungibleMetadataAbi from './fungibleMetadataAbi.json';
 
 describe('Common metadata', () => {
-  itWeb3('Returns collection name', async ({ api, web3 }) => {
+  itWeb3('Returns collection name', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const caller = await createEthAccountWithBalance(api, web3);
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(fungibleMetadataAbi as any, address, { from: caller, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(fungibleMetadataAbi as any, address, {from: caller, ...GAS_ARGS});
     const name = await contract.methods.name().call();
 
     expect(name).to.equal('token name');
   });
 
-  itWeb3('Returns symbol name', async ({ api, web3 }) => {
+  itWeb3('Returns symbol name', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       tokenPrefix: 'TOK',
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const caller = await createEthAccountWithBalance(api, web3);
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(fungibleMetadataAbi as any, address, { from: caller, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(fungibleMetadataAbi as any, address, {from: caller, ...GAS_ARGS});
     const symbol = await contract.methods.symbol().call();
 
     expect(symbol).to.equal('TOK');
@@ -39,14 +39,14 @@
 });
 
 describe('Fungible metadata', () => {
-  itWeb3('Returns fungible decimals', async ({ api, web3 }) => {
+  itWeb3('Returns fungible decimals', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'Fungible', decimalPoints: 6 },
+      mode: {type: 'Fungible', decimalPoints: 6},
     });
     const caller = await createEthAccountWithBalance(api, web3);
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(fungibleMetadataAbi as any, address, { from: caller, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(fungibleMetadataAbi as any, address, {from: caller, ...GAS_ARGS});
     const decimals = await contract.methods.decimals().call();
 
     expect(+decimals).to.equal(6);
modifiedtests/src/eth/migration.test.tsdiffbeforeafterboth
--- a/tests/src/eth/migration.test.ts
+++ b/tests/src/eth/migration.test.ts
@@ -1,10 +1,10 @@
-import { expect } from 'chai';
+import {expect} from 'chai';
 import privateKey from '../substrate/privateKey';
-import { submitTransactionAsync } from '../substrate/substrate-api';
-import { createEthAccountWithBalance, GAS_ARGS, itWeb3 } from './util/helpers';
+import {submitTransactionAsync} from '../substrate/substrate-api';
+import {createEthAccountWithBalance, GAS_ARGS, itWeb3} from './util/helpers';
 
 describe('EVM Migrations', () => {
-  itWeb3('Deploy contract saved state', async ({ web3, api }) => {
+  itWeb3('Deploy contract saved state', async ({web3, api}) => {
     /*
       contract StatefulContract {
         uint counter;
@@ -41,9 +41,9 @@
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
 
-    await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.begin(ADDRESS)));
-    await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.setData(ADDRESS, DATA)));
-    await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.finish(ADDRESS, CODE)));
+    await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.begin(ADDRESS) as any));
+    await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.setData(ADDRESS, DATA as any) as any));
+    await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.finish(ADDRESS, CODE) as any));
 
     const contract = new web3.eth.Contract([
       {
@@ -72,11 +72,11 @@
         stateMutability: 'view',
         type: 'function',
       },
-    ], ADDRESS, { from: caller, ...GAS_ARGS });
-    
+    ], ADDRESS, {from: caller, ...GAS_ARGS});
+
     expect(await contract.methods.counterValue().call()).to.be.equal('10');
     for (let i = 1; i <= 4; i++) {
       expect(await contract.methods.get(i).call()).to.be.equal(i.toString());
     }
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/nonFungible.test.tsdiffbeforeafterboth
--- a/tests/src/eth/nonFungible.test.ts
+++ b/tests/src/eth/nonFungible.test.ts
@@ -4,41 +4,39 @@
 //
 
 import privateKey from '../substrate/privateKey';
-import { approveExpectSuccess, burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, setVariableMetaDataExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, UNIQUE, setMetadataUpdatePermissionFlagExpectSuccess } from '../util/helpers';
-import { collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, transferBalanceToEth } from './util/helpers';
+import {approveExpectSuccess, burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, setVariableMetaDataExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, UNIQUE, setMetadataUpdatePermissionFlagExpectSuccess} from '../util/helpers';
+import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, transferBalanceToEth} from './util/helpers';
 import nonFungibleAbi from './nonFungibleAbi.json';
-import { expect } from 'chai';
-import waitNewBlocks from '../substrate/wait-new-blocks';
-import { submitTransactionAsync } from '../substrate/substrate-api';
+import {expect} from 'chai';
+import {submitTransactionAsync} from '../substrate/substrate-api';
 
 describe('NFT: Information getting', () => {
-  itWeb3('totalSupply', async ({ api, web3 }) => {
+  itWeb3('totalSupply', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
 
-    await createItemExpectSuccess(alice, collection, 'NFT', { substrate: alice.address });
+    await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
     const totalSupply = await contract.methods.totalSupply().call();
 
-    // FIXME: always equals to 0, because this method is not implemented
-    expect(totalSupply).to.equal('0');
+    expect(totalSupply).to.equal('1');
   });
 
-  itWeb3('balanceOf', async ({ api, web3 }) => {
+  itWeb3('balanceOf', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
-    await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
-    await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
-    await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
+    await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum:caller});
+    await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});
+    await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
@@ -47,14 +45,14 @@
     expect(balance).to.equal('3');
   });
 
-  itWeb3('ownerOf', async ({ api, web3 }) => {
+  itWeb3('ownerOf', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
@@ -65,14 +63,14 @@
 });
 
 describe('NFT: Plain calls', () => {
-  itWeb3('Can perform mint()', async ({ web3, api }) => {
+  itWeb3('Can perform mint()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
-    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, { ethereum: caller });
+    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: caller});
     await submitTransactionAsync(alice, changeAdminTx);
     const receiver = createEthAccount(web3);
 
@@ -101,18 +99,17 @@
         },
       ]);
 
-      await waitNewBlocks(api, 1);
       expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');
     }
   });
-  itWeb3('Can perform mintBulk()', async ({ web3, api }) => {
+  itWeb3('Can perform mintBulk()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
-    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, { ethereum: caller });
+    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: caller});
     await submitTransactionAsync(alice, changeAdminTx);
     const receiver = createEthAccount(web3);
 
@@ -129,7 +126,7 @@
           [+nextTokenId + 1, 'Test URI 1'],
           [+nextTokenId + 2, 'Test URI 2'],
         ],
-      ).send({ from: caller });
+      ).send({from: caller});
       const events = normalizeEvents(result.events);
 
       expect(events).to.be.deep.equal([
@@ -162,14 +159,13 @@
         },
       ]);
 
-      await waitNewBlocks(api, 1);
       expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI 0');
       expect(await contract.methods.tokenURI(+nextTokenId + 1).call()).to.be.equal('Test URI 1');
       expect(await contract.methods.tokenURI(+nextTokenId + 2).call()).to.be.equal('Test URI 2');
     }
   });
 
-  itWeb3('Can perform burn()', async ({ web3, api }) => {
+  itWeb3('Can perform burn()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       mode: {type: 'NFT'},
     });
@@ -177,15 +173,15 @@
 
     const owner = await createEthAccountWithBalance(api, web3);
 
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
-    
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
+
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
     {
-      const result = await contract.methods.burn(tokenId).send({ from: owner });
+      const result = await contract.methods.burn(tokenId).send({from: owner});
       const events = normalizeEvents(result.events);
-      
+
       expect(events).to.be.deep.equal([
         {
           address,
@@ -200,16 +196,16 @@
     }
   });
 
-  itWeb3('Can perform approve()', async ({ web3, api }) => {
+  itWeb3('Can perform approve()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const owner = createEthAccount(web3);
     await transferBalanceToEth(api, alice, owner, 999999999999999);
 
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
     const spender = createEthAccount(web3);
 
@@ -217,7 +213,7 @@
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address);
 
     {
-      const result = await contract.methods.approve(spender, tokenId).send({ from: owner, gas: '0x1000000', gasPrice: '0x01' });
+      const result = await contract.methods.approve(spender, tokenId).send({from: owner, gas: '0x1000000', gasPrice: '0x01'});
       const events = normalizeEvents(result.events);
 
       expect(events).to.be.deep.equal([
@@ -234,16 +230,16 @@
     }
   });
 
-  itWeb3('Can perform transferFrom()', async ({ web3, api }) => {
+  itWeb3('Can perform transferFrom()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const owner = createEthAccount(web3);
     await transferBalanceToEth(api, alice, owner, 999999999999999);
 
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
     const spender = createEthAccount(web3);
     await transferBalanceToEth(api, alice, spender, 999999999999999);
@@ -253,10 +249,10 @@
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
-    await contract.methods.approve(spender, tokenId).send({ from: owner });
+    await contract.methods.approve(spender, tokenId).send({from: owner});
 
     {
-      const result = await contract.methods.transferFrom(owner, receiver, tokenId).send({ from: spender });
+      const result = await contract.methods.transferFrom(owner, receiver, tokenId).send({from: spender});
       const events = normalizeEvents(result.events);
       expect(events).to.be.deep.equal([
         {
@@ -282,16 +278,16 @@
     }
   });
 
-  itWeb3('Can perform transfer()', async ({ web3, api }) => {
+  itWeb3('Can perform transfer()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const owner = createEthAccount(web3);
     await transferBalanceToEth(api, alice, owner, 999999999999999);
 
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
     const receiver = createEthAccount(web3);
     await transferBalanceToEth(api, alice, receiver, 999999999999999);
@@ -300,8 +296,7 @@
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
     {
-      const result = await contract.methods.transfer(receiver, tokenId).send({ from: owner });
-      await waitNewBlocks(api, 1);
+      const result = await contract.methods.transfer(receiver, tokenId).send({from: owner});
       const events = normalizeEvents(result.events);
       expect(events).to.be.deep.equal([
         {
@@ -327,105 +322,104 @@
     }
   });
 
-  itWeb3('Can perform getVariableMetadata', async ({ web3, api }) => {
+  itWeb3('Can perform getVariableMetadata', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const owner = await createEthAccountWithBalance(api, web3);
 
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
     await setMetadataUpdatePermissionFlagExpectSuccess(alice, collection, 'Admin');
     await setVariableMetaDataExpectSuccess(alice, collection, item, [1, 2, 3]);
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });
-    
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
+
     expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
   });
 
-  itWeb3('Can perform setVariableMetadata', async ({ web3, api }) => {
+  itWeb3('Can perform setVariableMetadata', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const owner = await createEthAccountWithBalance(api, web3);
 
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });
-    
-    expect(await contract.methods.setVariableMetadata(item, '0x010203').send({ from: owner }));
-    await waitNewBlocks(api, 1);
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
+
+    expect(await contract.methods.setVariableMetadata(item, '0x010203').send({from: owner}));
     expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
   });
 });
 
 describe('NFT: Fees', () => {
-  itWeb3('approve() call fee is less than 0.2UNQ', async ({ web3, api }) => {
+  itWeb3('approve() call fee is less than 0.2UNQ', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const owner = await createEthAccountWithBalance(api, web3);
     const spender = createEthAccount(web3);
 
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
-    const cost = await recordEthFee(api, owner, () => contract.methods.approve(spender, tokenId).send({ from: owner }));
+    const cost = await recordEthFee(api, owner, () => contract.methods.approve(spender, tokenId).send({from: owner}));
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
   });
 
-  itWeb3('transferFrom() call fee is less than 0.2UNQ', async ({ web3, api }) => {
+  itWeb3('transferFrom() call fee is less than 0.2UNQ', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
-  
+
     const owner = await createEthAccountWithBalance(api, web3);
     const spender = await createEthAccountWithBalance(api, web3);
 
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
-    await contract.methods.approve(spender, tokenId).send({ from: owner });
+    await contract.methods.approve(spender, tokenId).send({from: owner});
 
-    const cost = await recordEthFee(api, spender, () => contract.methods.transferFrom(owner, spender, tokenId).send({ from: spender }));
+    const cost = await recordEthFee(api, spender, () => contract.methods.transferFrom(owner, spender, tokenId).send({from: spender}));
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
   });
 
-  itWeb3('transfer() call fee is less than 0.2UNQ', async ({ web3, api }) => {
+  itWeb3('transfer() call fee is less than 0.2UNQ', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const owner = await createEthAccountWithBalance(api, web3);
     const receiver = createEthAccount(web3);
 
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
     const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
 
-    const cost = await recordEthFee(api, owner, () => contract.methods.transfer(receiver, tokenId).send({ from: owner }));
+    const cost = await recordEthFee(api, owner, () => contract.methods.transfer(receiver, tokenId).send({from: owner}));
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
   });
 });
 
 describe('NFT: Substrate calls', () => {
-  itWeb3('Events emitted for mint()', async ({ web3 }) => {
+  itWeb3('Events emitted for mint()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
@@ -450,9 +444,9 @@
     ]);
   });
 
-  itWeb3('Events emitted for burn()', async ({ web3 }) => {
+  itWeb3('Events emitted for burn()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
@@ -477,9 +471,9 @@
     ]);
   });
 
-  itWeb3('Events emitted for approve()', async ({ web3 }) => {
+  itWeb3('Events emitted for approve()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
@@ -491,7 +485,7 @@
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address);
 
     const events = await recordEvents(contract, async () => {
-      await approveExpectSuccess(collection, tokenId, alice, { ethereum: receiver }, 1);
+      await approveExpectSuccess(collection, tokenId, alice, {Ethereum: receiver}, 1);
     });
 
     expect(events).to.be.deep.equal([
@@ -507,9 +501,9 @@
     ]);
   });
 
-  itWeb3('Events emitted for transferFrom()', async ({ web3 }) => {
+  itWeb3('Events emitted for transferFrom()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const bob = privateKey('//Bob');
@@ -517,13 +511,13 @@
     const receiver = createEthAccount(web3);
 
     const tokenId = await createItemExpectSuccess(alice, collection, 'NFT');
-    await approveExpectSuccess(collection, tokenId, alice, bob, 1);
+    await approveExpectSuccess(collection, tokenId, alice, bob.address, 1);
 
     const address = collectionIdToAddress(collection);
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address);
 
     const events = await recordEvents(contract, async () => {
-      await transferFromExpectSuccess(collection, tokenId, bob, alice, { ethereum: receiver }, 1, 'NFT');
+      await transferFromExpectSuccess(collection, tokenId, bob, alice, {Ethereum: receiver}, 1, 'NFT');
     });
 
     expect(events).to.be.deep.equal([
@@ -539,9 +533,9 @@
     ]);
   });
 
-  itWeb3('Events emitted for transfer()', async ({ web3 }) => {
+  itWeb3('Events emitted for transfer()', async ({web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
@@ -553,7 +547,7 @@
     const contract = new web3.eth.Contract(nonFungibleAbi as any, address);
 
     const events = await recordEvents(contract, async () => {
-      await transferExpectSuccess(collection, tokenId, alice, { ethereum: receiver }, 1, 'NFT');
+      await transferExpectSuccess(collection, tokenId, alice, {Ethereum: receiver}, 1, 'NFT');
     });
 
     expect(events).to.be.deep.equal([
modifiedtests/src/eth/payable.test.tsdiffbeforeafterboth
--- a/tests/src/eth/payable.test.ts
+++ b/tests/src/eth/payable.test.ts
@@ -1,19 +1,17 @@
-import { expect } from 'chai';
+import {expect} from 'chai';
 import privateKey from '../substrate/privateKey';
-import { submitTransactionAsync } from '../substrate/substrate-api';
-import waitNewBlocks from '../substrate/wait-new-blocks';
-import { createEthAccountWithBalance, deployCollector, GAS_ARGS, itWeb3, subToEth } from './util/helpers';
+import {submitTransactionAsync} from '../substrate/substrate-api';
+import {createEthAccountWithBalance, deployCollector, GAS_ARGS, itWeb3, subToEth} from './util/helpers';
 import {evmToAddress} from '@polkadot/util-crypto';
-import { getGenericResult } from '../util/helpers';
-import { getBalanceSingle, transferBalanceExpectSuccess } from '../substrate/get-balance';
+import {getGenericResult} from '../util/helpers';
+import {getBalanceSingle, transferBalanceExpectSuccess} from '../substrate/get-balance';
 
-describe('EVM payable contracts', ()=>{
+describe('EVM payable contracts', () => {
   itWeb3('Evm contract can receive wei from eth account', async ({api, web3}) => {
     const deployer = await createEthAccountWithBalance(api, web3);
     const contract = await deployCollector(web3, deployer);
 
     await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: '10000', ...GAS_ARGS});
-    await waitNewBlocks(api, 1);
 
     expect(await contract.methods.getCollected().call()).to.be.equal('10000');
   });
@@ -52,7 +50,7 @@
     const alice = privateKey('//Alice');
 
     await transferBalanceExpectSuccess(api, alice, evmToAddress(contract.options.address), '10000');
-  
+
     expect(await contract.methods.getUnaccounted().call()).to.be.equal('10000');
   });
 
@@ -65,7 +63,6 @@
     const alice = privateKey('//Alice');
 
     await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: CONTRACT_BALANCE.toString(), ...GAS_ARGS});
-    await waitNewBlocks(api, 1);
 
     const receiver = privateKey(`//Receiver${Date.now()}`);
 
@@ -95,4 +92,4 @@
       expect(finalReceiverBalance > initialReceiverBalance).to.be.true;
     }
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/proxy/fungibleProxy.test.tsdiffbeforeafterboth
--- a/tests/src/eth/proxy/fungibleProxy.test.ts
+++ b/tests/src/eth/proxy/fungibleProxy.test.ts
@@ -4,53 +4,52 @@
 //
 
 import privateKey from '../../substrate/privateKey';
-import { createCollectionExpectSuccess, createFungibleItemExpectSuccess } from '../../util/helpers';
-import { collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents } from '../util/helpers';
+import {createCollectionExpectSuccess, createFungibleItemExpectSuccess} from '../../util/helpers';
+import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents} from '../util/helpers';
 import fungibleAbi from '../fungibleAbi.json';
-import { expect } from 'chai';
-import { ApiPromise } from '@polkadot/api';
+import {expect} from 'chai';
+import {ApiPromise} from '@polkadot/api';
 import Web3 from 'web3';
-import { readFile } from 'fs/promises';
+import {readFile} from 'fs/promises';
 
 async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any) {
   // Proxy owner has no special privilegies, we don't need to reuse them
   const owner = await createEthAccountWithBalance(api, web3);
-  const Proxy = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueFungibleProxy.abi`)).toString()), undefined, {
+  const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueFungibleProxy.abi`)).toString()), undefined, {
     from: owner,
     ...GAS_ARGS,
   });
-  const proxy = await Proxy.deploy({ data: (await readFile(`${__dirname}/UniqueFungibleProxy.bin`)).toString(), arguments: [wrapped.options.address] }).send({ from: owner });
+  const proxy = await proxyContract.deploy({data: (await readFile(`${__dirname}/UniqueFungibleProxy.bin`)).toString(), arguments: [wrapped.options.address]}).send({from: owner});
   return proxy;
 }
 
 describe('Fungible (Via EVM proxy): Information getting', () => {
-  itWeb3('totalSupply', async ({ api, web3 }) => {
+  itWeb3('totalSupply', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
-  
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { substrate: alice.address });
 
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});
+
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
     const totalSupply = await contract.methods.totalSupply().call();
 
-    // FIXME: always equals to 0, because this method is not implemented
-    expect(totalSupply).to.equal('0');
+    expect(totalSupply).to.equal('200');
   });
 
-  itWeb3('balanceOf', async ({ api, web3 }) => {
+  itWeb3('balanceOf', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: caller });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller});
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
@@ -61,10 +60,10 @@
 });
 
 describe('Fungible (Via EVM proxy): Plain calls', () => {
-  itWeb3('Can perform approve()', async ({ web3, api }) => {
+  itWeb3('Can perform approve()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
@@ -72,7 +71,7 @@
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: contract.options.address });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address});
 
     {
       const result = await contract.methods.approve(spender, 100).send({from: caller});
@@ -97,21 +96,21 @@
     }
   });
 
-  itWeb3('Can perform transferFrom()', async ({ web3, api }) => {
+  itWeb3('Can perform transferFrom()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
     const owner = await createEthAccountWithBalance(api, web3);
 
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: owner });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});
 
     const receiver = createEthAccount(web3);
 
     const address = collectionIdToAddress(collection);
-    const evmCollection = new web3.eth.Contract(fungibleAbi as any, address, { from: caller, ...GAS_ARGS });
+    const evmCollection = new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS});
     const contract = await proxyWrap(api, web3, evmCollection);
 
     await evmCollection.methods.approve(contract.options.address, 100).send({from: owner});
@@ -152,10 +151,10 @@
     }
   });
 
-  itWeb3('Can perform transfer()', async ({ web3, api }) => {
+  itWeb3('Can perform transfer()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       name: 'token name',
-      mode: { type: 'Fungible', decimalPoints: 0 },
+      mode: {type: 'Fungible', decimalPoints: 0},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
@@ -163,10 +162,10 @@
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
-    await createFungibleItemExpectSuccess(alice, collection, { Value: 200n }, { ethereum: contract.options.address });
+    await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address});
 
     {
-      const result = await contract.methods.transfer(receiver, 50).send({ from: caller});
+      const result = await contract.methods.transfer(receiver, 50).send({from: caller});
       const events = normalizeEvents(result.events);
       expect(events).to.be.deep.equal([
         {
modifiedtests/src/eth/proxy/nonFungibleProxy.test.tsdiffbeforeafterboth
--- a/tests/src/eth/proxy/nonFungibleProxy.test.ts
+++ b/tests/src/eth/proxy/nonFungibleProxy.test.ts
@@ -4,55 +4,53 @@
 //
 
 import privateKey from '../../substrate/privateKey';
-import { createCollectionExpectSuccess, createItemExpectSuccess, setVariableMetaDataExpectSuccess, setMetadataUpdatePermissionFlagExpectSuccess } from '../../util/helpers';
-import { collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents } from '../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess, setVariableMetaDataExpectSuccess, setMetadataUpdatePermissionFlagExpectSuccess} from '../../util/helpers';
+import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents} from '../util/helpers';
 import nonFungibleAbi from '../nonFungibleAbi.json';
-import { expect } from 'chai';
-import waitNewBlocks from '../../substrate/wait-new-blocks';
-import { submitTransactionAsync } from '../../substrate/substrate-api';
+import {expect} from 'chai';
+import {submitTransactionAsync} from '../../substrate/substrate-api';
 import Web3 from 'web3';
-import { readFile } from 'fs/promises';
-import { ApiPromise } from '@polkadot/api';
+import {readFile} from 'fs/promises';
+import {ApiPromise} from '@polkadot/api';
 
 async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any) {
   // Proxy owner has no special privilegies, we don't need to reuse them
   const owner = await createEthAccountWithBalance(api, web3);
-  const Proxy = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueNFTProxy.abi`)).toString()), undefined, {
+  const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueNFTProxy.abi`)).toString()), undefined, {
     from: owner,
     ...GAS_ARGS,
   });
-  const proxy = await Proxy.deploy({ data: (await readFile(`${__dirname}/UniqueNFTProxy.bin`)).toString(), arguments: [wrapped.options.address] }).send({ from: owner });
+  const proxy = await proxyContract.deploy({data: (await readFile(`${__dirname}/UniqueNFTProxy.bin`)).toString(), arguments: [wrapped.options.address]}).send({from: owner});
   return proxy;
 }
 
 describe('NFT (Via EVM proxy): Information getting', () => {
-  itWeb3('totalSupply', async ({ api, web3 }) => {
+  itWeb3('totalSupply', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
 
-    await createItemExpectSuccess(alice, collection, 'NFT', { substrate: alice.address });
+    await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
     const totalSupply = await contract.methods.totalSupply().call();
 
-    // FIXME: always equals to 0, because this method is not implemented
-    expect(totalSupply).to.equal('0');
+    expect(totalSupply).to.equal('1');
   });
 
-  itWeb3('balanceOf', async ({ api, web3 }) => {
+  itWeb3('balanceOf', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
-    await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
-    await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
-    await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
+    await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});
+    await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});
+    await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
@@ -61,14 +59,14 @@
     expect(balance).to.equal('3');
   });
 
-  itWeb3('ownerOf', async ({ api, web3 }) => {
+  itWeb3('ownerOf', async ({api, web3}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
     const caller = await createEthAccountWithBalance(api, web3);
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
@@ -79,18 +77,18 @@
 });
 
 describe('NFT (Via EVM proxy): Plain calls', () => {
-  itWeb3('Can perform mint()', async ({ web3, api }) => {
+  itWeb3('Can perform mint()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
     const receiver = createEthAccount(web3);
 
     const address = collectionIdToAddress(collection);
-    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, { from: caller, ...GAS_ARGS }));
+    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
 
-    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, { ethereum: contract.options.address });
+    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: contract.options.address});
     await submitTransactionAsync(alice, changeAdminTx);
 
     {
@@ -100,7 +98,7 @@
         receiver,
         nextTokenId,
         'Test URI',
-      ).send({ from: caller });
+      ).send({from: caller});
       const events = normalizeEvents(result.events);
 
       expect(events).to.be.deep.equal([
@@ -115,13 +113,12 @@
         },
       ]);
 
-      await waitNewBlocks(api, 1);
       expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');
     }
   });
-  itWeb3('Can perform mintBulk()', async ({ web3, api }) => {
+  itWeb3('Can perform mintBulk()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
 
@@ -129,8 +126,8 @@
     const receiver = createEthAccount(web3);
 
     const address = collectionIdToAddress(collection);
-    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, { from: caller, ...GAS_ARGS }));
-    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, { ethereum: contract.options.address });
+    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
+    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: contract.options.address});
     await submitTransactionAsync(alice, changeAdminTx);
 
     {
@@ -143,7 +140,7 @@
           [+nextTokenId + 1, 'Test URI 1'],
           [+nextTokenId + 2, 'Test URI 2'],
         ],
-      ).send({ from: caller });
+      ).send({from: caller});
       const events = normalizeEvents(result.events);
 
       expect(events).to.be.deep.equal([
@@ -176,31 +173,30 @@
         },
       ]);
 
-      await waitNewBlocks(api, 1);
       expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI 0');
       expect(await contract.methods.tokenURI(+nextTokenId + 1).call()).to.be.equal('Test URI 1');
       expect(await contract.methods.tokenURI(+nextTokenId + 2).call()).to.be.equal('Test URI 2');
     }
   });
 
-  itWeb3('Can perform burn()', async ({ web3, api }) => {
+  itWeb3('Can perform burn()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
       mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
-    
+
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: contract.options.address });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
 
-    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, { ethereum: contract.options.address });
+    const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, {Ethereum: contract.options.address});
     await submitTransactionAsync(alice, changeAdminTx);
 
     {
-      const result = await contract.methods.burn(tokenId).send({ from: caller });
+      const result = await contract.methods.burn(tokenId).send({from: caller});
       const events = normalizeEvents(result.events);
-      
+
       expect(events).to.be.deep.equal([
         {
           address,
@@ -215,9 +211,9 @@
     }
   });
 
-  itWeb3('Can perform approve()', async ({ web3, api }) => {
+  itWeb3('Can perform approve()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
@@ -225,10 +221,10 @@
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address));
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: contract.options.address });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
 
     {
-      const result = await contract.methods.approve(spender, tokenId).send({ from: caller, gas: '0x1000000', gasPrice: '0x01' });
+      const result = await contract.methods.approve(spender, tokenId).send({from: caller, gas: '0x1000000', gasPrice: '0x01'});
       const events = normalizeEvents(result.events);
 
       expect(events).to.be.deep.equal([
@@ -245,9 +241,9 @@
     }
   });
 
-  itWeb3('Can perform transferFrom()', async ({ web3, api }) => {
+  itWeb3('Can perform transferFrom()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
@@ -256,14 +252,14 @@
     const receiver = createEthAccount(web3);
 
     const address = collectionIdToAddress(collection);
-    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, address, { from: caller, ...GAS_ARGS });
+    const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
     const contract = await proxyWrap(api, web3, evmCollection);
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
 
-    await evmCollection.methods.approve(contract.options.address, tokenId).send({ from: owner });
+    await evmCollection.methods.approve(contract.options.address, tokenId).send({from: owner});
 
     {
-      const result = await contract.methods.transferFrom(owner, receiver, tokenId).send({ from: caller });
+      const result = await contract.methods.transferFrom(owner, receiver, tokenId).send({from: caller});
       const events = normalizeEvents(result.events);
       expect(events).to.be.deep.equal([
         {
@@ -289,9 +285,9 @@
     }
   });
 
-  itWeb3('Can perform transfer()', async ({ web3, api }) => {
+  itWeb3('Can perform transfer()', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
@@ -299,11 +295,10 @@
 
     const address = collectionIdToAddress(collection);
     const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
-    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: contract.options.address });
+    const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
 
     {
-      const result = await contract.methods.transfer(receiver, tokenId).send({ from: caller });
-      await waitNewBlocks(api, 1);
+      const result = await contract.methods.transfer(receiver, tokenId).send({from: caller});
       const events = normalizeEvents(result.events);
       expect(events).to.be.deep.equal([
         {
@@ -329,35 +324,34 @@
     }
   });
 
-  itWeb3('Can perform getVariableMetadata', async ({ web3, api }) => {
+  itWeb3('Can perform getVariableMetadata', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
 
     const address = collectionIdToAddress(collection);
-    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, { from: caller, ...GAS_ARGS }));
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: contract.options.address });
+    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
+    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
     await setMetadataUpdatePermissionFlagExpectSuccess(alice, collection, 'Admin');
     await setVariableMetaDataExpectSuccess(alice, collection, item, [1, 2, 3]);
-    
+
     expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
   });
 
-  itWeb3('Can perform setVariableMetadata', async ({ web3, api }) => {
+  itWeb3('Can perform setVariableMetadata', async ({web3, api}) => {
     const collection = await createCollectionExpectSuccess({
-      mode: { type: 'NFT' },
+      mode: {type: 'NFT'},
     });
     const alice = privateKey('//Alice');
     const caller = await createEthAccountWithBalance(api, web3);
 
     const address = collectionIdToAddress(collection);
-    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, { from: caller, ...GAS_ARGS }));
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: contract.options.address });
-    
-    expect(await contract.methods.setVariableMetadata(item, '0x010203').send({ from: caller }));
-    await waitNewBlocks(api, 1);
+    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
+    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
+
+    expect(await contract.methods.setVariableMetadata(item, '0x010203').send({from: caller}));
     expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
   });
 });
modifiedtests/src/eth/sponsoring.test.tsdiffbeforeafterboth
--- a/tests/src/eth/sponsoring.test.ts
+++ b/tests/src/eth/sponsoring.test.ts
@@ -1,88 +1,68 @@
-import { expect } from 'chai';
+import {expect} from 'chai';
 import privateKey from '../substrate/privateKey';
-import waitNewBlocks from '../substrate/wait-new-blocks';
-import { contractHelpers, createEthAccount, createEthAccountWithBalance, deployCollector, deployFlipper, itWeb3, transferBalanceToEth, usingWeb3Http } from './util/helpers';
+import {contractHelpers, createEthAccount, createEthAccountWithBalance, deployCollector, deployFlipper, itWeb3, transferBalanceToEth} from './util/helpers';
 
 describe('EVM sponsoring', () => {
   itWeb3('Fee is deducted from contract if sponsoring is enabled', async ({api, web3}) => {
-    await usingWeb3Http(async web3Http => {
-      const alice = privateKey('//Alice');
+    const alice = privateKey('//Alice');
 
-      const owner = await createEthAccountWithBalance(api, web3Http);
-      const caller = createEthAccount(web3Http);
-      const originalCallerBalance = await web3.eth.getBalance(caller);
-      expect(originalCallerBalance).to.be.equal('0');
+    const owner = await createEthAccountWithBalance(api, web3);
+    const caller = createEthAccount(web3);
+    const originalCallerBalance = await web3.eth.getBalance(caller);
+    expect(originalCallerBalance).to.be.equal('0');
 
-      const flipper = await deployFlipper(web3Http, owner);
-      await waitNewBlocks(api, 1);
-      
-      const helpers = contractHelpers(web3Http, owner);
-      await helpers.methods.toggleAllowlist(flipper.options.address, true).send({ from: owner });
-      await waitNewBlocks(api, 1);
-      await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({ from: owner });
-      await waitNewBlocks(api, 1);
+    const flipper = await deployFlipper(web3, owner);
 
-      expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
-      await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
-      await waitNewBlocks(api, 1);
-      await helpers.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: owner});
-      await waitNewBlocks(api, 1);
-      expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
+    const helpers = contractHelpers(web3, owner);
+    await helpers.methods.toggleAllowlist(flipper.options.address, true).send({from: owner});
+    await helpers.methods.toggleAllowed(flipper.options.address, caller, true).send({from: owner});
+
+    expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;
+    await helpers.methods.toggleSponsoring(flipper.options.address, true).send({from: owner});
+    await helpers.methods.setSponsoringRateLimit(flipper.options.address, 0).send({from: owner});
+    expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;
 
-      await transferBalanceToEth(api, alice, flipper.options.address);
-      await waitNewBlocks(api, 2);
+    await transferBalanceToEth(api, alice, flipper.options.address);
 
-      const originalFlipperBalance = await web3.eth.getBalance(flipper.options.address);
-      expect(originalFlipperBalance).to.be.not.equal('0');
+    const originalFlipperBalance = await web3.eth.getBalance(flipper.options.address);
+    expect(originalFlipperBalance).to.be.not.equal('0');
 
-      await flipper.methods.flip().send({ from: caller });
-      await waitNewBlocks(api, 1);
-      expect(await flipper.methods.getValue().call()).to.be.true;
+    await flipper.methods.flip().send({from: caller});
+    expect(await flipper.methods.getValue().call()).to.be.true;
 
-      // Balance should be taken from flipper instead of caller
-      expect(await web3.eth.getBalance(caller)).to.be.equals(originalCallerBalance);
-      expect(await web3.eth.getBalance(flipper.options.address)).to.be.not.equals(originalFlipperBalance);
-    });
+    // Balance should be taken from flipper instead of caller
+    expect(await web3.eth.getBalance(caller)).to.be.equals(originalCallerBalance);
+    expect(await web3.eth.getBalance(flipper.options.address)).to.be.not.equals(originalFlipperBalance);
   });
   itWeb3('...but this doesn\'t applies to payable value', async ({api, web3}) => {
-    await usingWeb3Http(async web3Http => {
-      const alice = privateKey('//Alice');
+    const alice = privateKey('//Alice');
 
-      const owner = await createEthAccountWithBalance(api, web3Http);
-      const caller = await createEthAccountWithBalance(api, web3Http);
-      await waitNewBlocks(api, 1);
-      const originalCallerBalance = await web3.eth.getBalance(caller);
-      expect(originalCallerBalance).to.be.not.equal('0');
+    const owner = await createEthAccountWithBalance(api, web3);
+    const caller = await createEthAccountWithBalance(api, web3);
+    const originalCallerBalance = await web3.eth.getBalance(caller);
+    expect(originalCallerBalance).to.be.not.equal('0');
 
-      const collector = await deployCollector(web3Http, owner);
-      await waitNewBlocks(api, 1);
-     
-      const helpers = contractHelpers(web3Http, owner);
-      await helpers.methods.toggleAllowlist(collector.options.address, true).send({ from: owner });
-      await waitNewBlocks(api, 1);
-      await helpers.methods.toggleAllowed(collector.options.address, caller, true).send({ from: owner });
-      await waitNewBlocks(api, 1);
+    const collector = await deployCollector(web3, owner);
 
-      expect(await helpers.methods.sponsoringEnabled(collector.options.address).call()).to.be.false;
-      await helpers.methods.toggleSponsoring(collector.options.address, true).send({ from: owner });
-      await waitNewBlocks(api, 1);
-      await helpers.methods.setSponsoringRateLimit(collector.options.address, 0).send({ from: owner });
-      await waitNewBlocks(api, 1);
-      expect(await helpers.methods.sponsoringEnabled(collector.options.address).call()).to.be.true;
+    const helpers = contractHelpers(web3, owner);
+    await helpers.methods.toggleAllowlist(collector.options.address, true).send({from: owner});
+    await helpers.methods.toggleAllowed(collector.options.address, caller, true).send({from: owner});
+
+    expect(await helpers.methods.sponsoringEnabled(collector.options.address).call()).to.be.false;
+    await helpers.methods.toggleSponsoring(collector.options.address, true).send({from: owner});
+    await helpers.methods.setSponsoringRateLimit(collector.options.address, 0).send({from: owner});
+    expect(await helpers.methods.sponsoringEnabled(collector.options.address).call()).to.be.true;
 
-      await transferBalanceToEth(api, alice, collector.options.address);
-      await waitNewBlocks(api, 2);
+    await transferBalanceToEth(api, alice, collector.options.address);
 
-      const originalCollectorBalance = await web3.eth.getBalance(collector.options.address);
-      expect(originalCollectorBalance).to.be.not.equal('0');
+    const originalCollectorBalance = await web3.eth.getBalance(collector.options.address);
+    expect(originalCollectorBalance).to.be.not.equal('0');
 
-      await collector.methods.giveMoney().send({ from: caller, value: '10000' });
-      await waitNewBlocks(api, 1);
+    await collector.methods.giveMoney().send({from: caller, value: '10000'});
 
-      // Balance will be taken from both caller (value) and from collector (fee)
-      expect(await web3.eth.getBalance(caller)).to.be.equals((BigInt(originalCallerBalance) - 10000n).toString());
-      expect(await web3.eth.getBalance(collector.options.address)).to.be.not.equals(originalCollectorBalance);
-      expect(await collector.methods.getCollected().call()).to.be.equal('10000');
-    });
+    // Balance will be taken from both caller (value) and from collector (fee)
+    expect(await web3.eth.getBalance(caller)).to.be.equals((BigInt(originalCallerBalance) - 10000n).toString());
+    expect(await web3.eth.getBalance(collector.options.address)).to.be.not.equals(originalCollectorBalance);
+    expect(await collector.methods.getCollected().call()).to.be.equal('10000');
   });
-});
\ No newline at end of file
+});
modifiedtests/src/eth/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/eth/util/helpers.ts
+++ b/tests/src/eth/util/helpers.ts
@@ -6,21 +6,20 @@
 // eslint-disable-next-line @typescript-eslint/triple-slash-reference
 /// <reference path="helpers.d.ts" />
 
-import { ApiPromise } from '@polkadot/api';
-import { addressToEvm, evmToAddress } from '@polkadot/util-crypto';
+import {ApiPromise} from '@polkadot/api';
+import {addressToEvm, evmToAddress} from '@polkadot/util-crypto';
 import Web3 from 'web3';
-import usingApi, { submitTransactionAsync } from '../../substrate/substrate-api';
-import { IKeyringPair } from '@polkadot/types/types';
-import { expect } from 'chai';
-import { getGenericResult } from '../../util/helpers';
+import usingApi, {submitTransactionAsync} from '../../substrate/substrate-api';
+import {IKeyringPair} from '@polkadot/types/types';
+import {expect} from 'chai';
+import {getGenericResult} from '../../util/helpers';
 import * as solc from 'solc';
 import config from '../../config';
 import privateKey from '../../substrate/privateKey';
 import contractHelpersAbi from './contractHelpersAbi.json';
 import getBalance from '../../substrate/get-balance';
-import waitNewBlocks from '../../substrate/wait-new-blocks';
 
-export const GAS_ARGS = { gas: 0x1000000, gasPrice: '0x01' };
+export const GAS_ARGS = {gas: 0x1000000, gasPrice: '0x01'};
 
 let web3Connected = false;
 export async function usingWeb3<T>(cb: (web3: Web3) => Promise<T> | T): Promise<T> {
@@ -37,16 +36,6 @@
     provider.connection.close();
     web3Connected = false;
   }
-}
-
-/**
- * @deprecated Web3 update solved issue with deployment over ws provider
- */
-export async function usingWeb3Http<T>(cb: (web3: Web3) => Promise<T> | T): Promise<T> {
-  const provider = new Web3.providers.HttpProvider(config.frontierUrl);
-  const web3: Web3 = new Web3(provider);
-
-  return await cb(web3);
 }
 
 export function collectionIdToAddress(address: number): string {
@@ -88,13 +77,13 @@
   i(name, async () => {
     await usingApi(async api => {
       await usingWeb3(async web3 => {
-        await cb({ api, web3 });
+        await cb({api, web3});
       });
     });
   });
 }
-itWeb3.only = (name: string, cb: (apis: { web3: Web3, api: ApiPromise }) => any) => itWeb3(name, cb, { only: true });
-itWeb3.skip = (name: string, cb: (apis: { web3: Web3, api: ApiPromise }) => any) => itWeb3(name, cb, { skip: true });
+itWeb3.only = (name: string, cb: (apis: { web3: Web3, api: ApiPromise }) => any) => itWeb3(name, cb, {only: true});
+itWeb3.skip = (name: string, cb: (apis: { web3: Web3, api: ApiPromise }) => any) => itWeb3(name, cb, {skip: true});
 
 export async function generateSubstrateEthPair(web3: Web3) {
   const account = web3.eth.accounts.create();
@@ -119,7 +108,7 @@
     }
   }
   output.sort((a, b) => a.logIndex - b.logIndex);
-  return output.map(({ address, event, returnValues }) => {
+  return output.map(({address, event, returnValues}) => {
     const args: { [key: string]: string } = {};
     for (const key of Object.keys(returnValues)) {
       if (!key.match(/^[0-9]+$/)) {
@@ -192,12 +181,12 @@
       }
     }
   `);
-  const Flipper = new web3.eth.Contract(compiled.abi, undefined, {
+  const flipperContract = new web3.eth.Contract(compiled.abi, undefined, {
     data: compiled.object,
     from: deployer,
     ...GAS_ARGS,
   });
-  const flipper = await Flipper.deploy({ data: compiled.object }).send({from: deployer});
+  const flipper = await flipperContract.deploy({data: compiled.object}).send({from: deployer});
 
   return flipper;
 }
@@ -225,12 +214,12 @@
       }
     }
   `);
-  const Collector = new web3.eth.Contract(compiled.abi, undefined, {
+  const collectorContract = new web3.eth.Contract(compiled.abi, undefined, {
     data: compiled.object,
     from: deployer,
     ...GAS_ARGS,
   });
-  const collector = await Collector.deploy({ data: compiled.object }).send({ from: deployer });
+  const collector = await collectorContract.deploy({data: compiled.object}).send({from: deployer});
 
   return collector;
 }
@@ -239,7 +228,7 @@
   return new web3.eth.Contract(contractHelpersAbi as any, '0x842899ECF380553E8a4de75bF534cdf6fBF64049', {from: caller, ...GAS_ARGS});
 }
 
-export async function executeEthTxOnSub(api: ApiPromise, from: IKeyringPair, to: any, mkTx: (methods: any) => any, { value = 0 }: {value?: bigint | number} = { }) {
+export async function executeEthTxOnSub(api: ApiPromise, from: IKeyringPair, to: any, mkTx: (methods: any) => any, {value = 0}: {value?: bigint | number} = { }) {
   const tx = api.tx.evm.call(
     subToEth(from.address),
     to.options.address,
@@ -250,7 +239,7 @@
     null,
   );
   const events = await submitTransactionAsync(from, tx);
-  expect(events.find(({ event: {section, method}})=>section === 'evm' && method === 'Executed')).to.be.not.undefined;
+  expect(events.some(({event: {section, method}}) => section == 'evm' && method == 'Executed')).to.be.true;
 }
 
 export async function ethBalanceViaSub(api: ApiPromise, address: string): Promise<bigint> {
@@ -261,7 +250,6 @@
   const before = await ethBalanceViaSub(api, user);
 
   await call();
-  await waitNewBlocks(api, 1);
 
   const after = await ethBalanceViaSub(api, user);
 
modifiedtests/src/inflation.test.tsdiffbeforeafterboth
--- a/tests/src/inflation.test.ts
+++ b/tests/src/inflation.test.ts
@@ -5,8 +5,7 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi } from './substrate/substrate-api';
-import { BigNumber } from 'bignumber.js';
+import {default as usingApi} from './substrate/substrate-api';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -15,16 +14,20 @@
   it('First year inflation is 10%', async () => {
     await usingApi(async (api) => {
 
-      const blockInterval = parseInt((await api.consts.inflation.inflationBlockInterval).toString());
-      const totalIssuanceStart = new BigNumber((await api.query.inflation.startingYearTotalIssuance()).toString());
-      const blockInflation = new BigNumber((await api.query.inflation.blockInflation()).toString());
+      const blockInterval = (api.consts.inflation.inflationBlockInterval).toBigInt();
+      const totalIssuanceStart = (await api.query.inflation.startingYearTotalIssuance()).toBigInt();
+      const blockInflation = (await api.query.inflation.blockInflation()).toBigInt();
 
-      const YEAR = 5259600; // Blocks in one year
-      const totalExpectedInflation = totalIssuanceStart.multipliedBy(0.1);
-      const totalActualInflation = blockInflation.multipliedBy(YEAR / blockInterval);
+      const YEAR = 5259600n; // Blocks in one year
+      const totalExpectedInflation = totalIssuanceStart / 10n;
+      const totalActualInflation = blockInflation * YEAR / blockInterval;
 
       const tolerance = 0.00001; // Relative difference per year between theoretical and actual inflation
-      expect(totalExpectedInflation.dividedBy(totalActualInflation).minus(1).abs().toNumber()).to.be.lessThan(tolerance);
+      let abs = totalExpectedInflation / totalActualInflation - 1n;
+      if (abs < 0n) {
+        abs = -abs;
+      }
+      expect(abs <= tolerance).to.be.true;
     });
   });
 
modifiedtests/src/limits.test.tsdiffbeforeafterboth
--- a/tests/src/limits.test.ts
+++ b/tests/src/limits.test.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
 import {
@@ -18,98 +18,98 @@
   getFreeBalance,
   waitNewBlocks,
 } from './util/helpers';
-import { expect } from 'chai';
+import {expect} from 'chai';
 
 describe('Number of tokens per address (NFT)', () => {
-  let Alice: IKeyringPair;
+  let alice: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
+      alice = privateKey('//Alice');
     });
   });
 
   it.skip('Collection limits allow greater number than chain limits, chain limits are enforced', async () => {
 
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 20 });
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {accountTokenOwnershipLimit: 20});
     for(let i = 0; i < 10; i++){
-      await createItemExpectSuccess(Alice, collectionId, 'NFT');
+      await createItemExpectSuccess(alice, collectionId, 'NFT');
     }
-    await createItemExpectFailure(Alice, collectionId, 'NFT');
+    await createItemExpectFailure(alice, collectionId, 'NFT');
     await destroyCollectionExpectSuccess(collectionId);
   });
 
   it('Collection limits allow lower number than chain limits, collection limits are enforced', async () => {
 
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 1 });
-    await createItemExpectSuccess(Alice, collectionId, 'NFT');
-    await createItemExpectFailure(Alice, collectionId, 'NFT');
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {accountTokenOwnershipLimit: 1});
+    await createItemExpectSuccess(alice, collectionId, 'NFT');
+    await createItemExpectFailure(alice, collectionId, 'NFT');
     await destroyCollectionExpectSuccess(collectionId);
   });
 });
 
 describe('Number of tokens per address (ReFungible)', () => {
-  let Alice: IKeyringPair;
+  let alice: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
+      alice = privateKey('//Alice');
     });
   });
 
   it.skip('Collection limits allow greater number than chain limits, chain limits are enforced', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 20 });
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {accountTokenOwnershipLimit: 20});
     for(let i = 0; i < 10; i++){
-      await createItemExpectSuccess(Alice, collectionId, 'ReFungible');
+      await createItemExpectSuccess(alice, collectionId, 'ReFungible');
     }
-    await createItemExpectFailure(Alice, collectionId, 'ReFungible');
+    await createItemExpectFailure(alice, collectionId, 'ReFungible');
     await destroyCollectionExpectSuccess(collectionId);
   });
 
   it('Collection limits allow lower number than chain limits, collection limits are enforced', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 1 });
-    await createItemExpectSuccess(Alice, collectionId, 'ReFungible');
-    await createItemExpectFailure(Alice, collectionId, 'ReFungible');
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {accountTokenOwnershipLimit: 1});
+    await createItemExpectSuccess(alice, collectionId, 'ReFungible');
+    await createItemExpectFailure(alice, collectionId, 'ReFungible');
     await destroyCollectionExpectSuccess(collectionId);
   });
 });
 
 describe('Sponsor timeout (NFT)', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 7});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob);
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob);
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 5, fail
     await waitNewBlocks(5);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);
-    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie);
+    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);
 
     // check setting SponsorTimeout = 7, success
     await waitNewBlocks(2); // 5 + 2
-    await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);
-    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, charlie, bob);
+    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);
     await destroyCollectionExpectSuccess(collectionId);
@@ -117,24 +117,24 @@
 
   it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {
 
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 1});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob);
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob);
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 1, fail
     await waitNewBlocks(1);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);
-    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie);
+    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);
 
     // check setting SponsorTimeout = 5, success
     await waitNewBlocks(4);
-    await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);
-    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, charlie, bob);
+    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);
     await destroyCollectionExpectSuccess(collectionId);
@@ -142,38 +142,38 @@
 });
 
 describe('Sponsor timeout (Fungible)', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {
     const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 7});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob, 10, 'Fungible');
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 5, fail
     await waitNewBlocks(5);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
-    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
+    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);
 
     // check setting SponsorTimeout = 7, success
     await waitNewBlocks(2); // 5 + 2
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
-    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
+    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);
 
@@ -183,24 +183,24 @@
   it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {
 
     const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 1});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob, 10, 'Fungible');
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 1, fail
     await waitNewBlocks(1);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
-    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
+    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);
 
     // check setting SponsorTimeout = 5, success
     await waitNewBlocks(4);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
-    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
+    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);
 
@@ -209,37 +209,37 @@
 });
 
 describe('Sponsor timeout (ReFungible)', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Collection limits have greater timeout value than chain limits, collection limits are enforced', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 7 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'ReFungible');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 7});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'ReFungible');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 100, 'ReFungible');
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob, 100, 'ReFungible');
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 5, fail
     await waitNewBlocks(5);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');
-    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 20, 'ReFungible');
+    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);
 
     // check setting SponsorTimeout = 7, success
     await waitNewBlocks(2); // 5 + 2
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');
-    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 20, 'ReFungible');
+    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);
     await destroyCollectionExpectSuccess(collectionId);
@@ -247,24 +247,24 @@
 
   it('Collection limits have lower timeout value than chain limits, chain limits are enforced', async () => {
 
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 1 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 1});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob);
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob);
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 1, fail
     await waitNewBlocks(1);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);
-    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie);
+    const aliceBalanceAfterUnsponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterUnsponsoredTransaction).to.be.equals(aliceBalanceBefore);
 
     // check setting SponsorTimeout = 5, success
     await waitNewBlocks(4);
-    await transferExpectSuccess(collectionId, tokenId, Charlie, Bob);
-    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, charlie, bob);
+    const aliceBalanceAfterSponsoredTransaction = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction).to.be.lessThan(aliceBalanceBefore);
     await destroyCollectionExpectSuccess(collectionId);
@@ -272,115 +272,115 @@
 });
 
 describe('Collection zero limits (NFT)', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it.skip('Limits have 0 in tokens per address field, the chain limits are applied', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 0 });
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {accountTokenOwnershipLimit: 0});
     for(let i = 0; i < 10; i++){
-      await createItemExpectSuccess(Alice, collectionId, 'NFT');
+      await createItemExpectSuccess(alice, collectionId, 'NFT');
     }
-    await createItemExpectFailure(Alice, collectionId, 'NFT');
+    await createItemExpectFailure(alice, collectionId, 'NFT');
   });
 
   it('Limits have 0 in sponsor timeout, no limits are applied', async () => {
 
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'NFT');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 0});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob);
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob);
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 0, success with next block
     await waitNewBlocks(1);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie);
-    const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie);
+    const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction1 < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);
   });
 });
 
 describe('Collection zero limits (Fungible)', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Limits have 0 in sponsor timeout, no limits are applied', async () => {
     const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'Fungible');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 0});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 10, 'Fungible');
-    const aliceBalanceBefore = await getFreeBalance(Alice);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
+    await transferExpectSuccess(collectionId, tokenId, alice, bob, 10, 'Fungible');
+    const aliceBalanceBefore = await getFreeBalance(alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
 
     // check setting SponsorTimeout = 0, success with next block
     await waitNewBlocks(1);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 2, 'Fungible');
-    const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 2, 'Fungible');
+    const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction1 < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);
   });
 });
 
 describe('Collection zero limits (ReFungible)', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it.skip('Limits have 0 in tokens per address field, the chain limits are applied', async () => {
-    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible' }});
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { accountTokenOwnershipLimit: 0 });
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {accountTokenOwnershipLimit: 0});
     for(let i = 0; i < 10; i++){
-      await createItemExpectSuccess(Alice, collectionId, 'ReFungible');
+      await createItemExpectSuccess(alice, collectionId, 'ReFungible');
     }
-    await createItemExpectFailure(Alice, collectionId, 'ReFungible');
+    await createItemExpectFailure(alice, collectionId, 'ReFungible');
   });
 
   it('Limits have 0 in sponsor timeout, no limits are applied', async () => {
 
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'ReFungible' } });
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { sponsorTimeout: 0 });
-    const tokenId = await createItemExpectSuccess(Alice, collectionId, 'ReFungible');
-    await setCollectionSponsorExpectSuccess(collectionId, Alice.address);
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsorTransferTimeout: 0});
+    const tokenId = await createItemExpectSuccess(alice, collectionId, 'ReFungible');
+    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
     await confirmSponsorshipExpectSuccess(collectionId, '//Alice');
-    await transferExpectSuccess(collectionId, tokenId, Alice, Bob, 100, 'ReFungible');
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');
-    const aliceBalanceBefore = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, alice, bob, 100, 'ReFungible');
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 20, 'ReFungible');
+    const aliceBalanceBefore = await getFreeBalance(alice);
 
     // check setting SponsorTimeout = 0, success with next block
     await waitNewBlocks(1);
-    await transferExpectSuccess(collectionId, tokenId, Bob, Charlie, 20, 'ReFungible');
-    const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(Alice);
+    await transferExpectSuccess(collectionId, tokenId, bob, charlie, 20, 'ReFungible');
+    const aliceBalanceAfterSponsoredTransaction1 = await getFreeBalance(alice);
     expect(aliceBalanceAfterSponsoredTransaction1 < aliceBalanceBefore).to.be.true;
     //expect(aliceBalanceAfterSponsoredTransaction1).to.be.lessThan(aliceBalanceBefore);
   });
modifiedtests/src/metadataUpdate.test.tsdiffbeforeafterboth
--- a/tests/src/metadataUpdate.test.ts
+++ b/tests/src/metadataUpdate.test.ts
@@ -27,53 +27,53 @@
 describe('Metadata update permissions with ItemOwner flag', () => {
   it('ItemOwner can set variable metadata with ItemOwner permission flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
+      const alice = privateKey('//Alice');
 
       const data = [1, 2, 254, 255];
 
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');
 
-      await setVariableMetaDataExpectSuccess(Alice, nftCollectionId, newNftTokenId, data);
+      await setVariableMetaDataExpectSuccess(alice, nftCollectionId, newNftTokenId, data);
     });
   });
 
   it('Admin can\'n set variable metadata with ItemOwner permission flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-  
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');
+
+      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
+      await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);
+      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
 
-      await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
-      await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
-      await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
-  
-      await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
+      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
     });
   });
 
   it('User can\'n set variable metadata with ItemOwner permission flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-  
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');
 
-      await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);  
-      await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
+      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
+      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
     });
   });
 });
@@ -81,60 +81,60 @@
 describe('Metadata update permissions with Admin flag', () => {
   it('Admin can set variable metadata with Admin permission flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-  
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');
 
-      await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
-      await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
-      await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
-  
-      await setVariableMetaDataExpectSuccess(Bob, nftCollectionId, newNftTokenId, data);
+      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
+      await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);
+      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
+
+      await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);
     });
   });
 
   it('User can\'n can set variable metadata with Admin permission flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-  
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');
+
+      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
+      await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);
+      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
 
-      await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
-      await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
-      await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
-  
-      await setVariableMetaDataExpectSuccess(Bob, nftCollectionId, newNftTokenId, data);
+      await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);
     });
   });
 
   it('ItemOwner can\'n can set variable metadata with Admin permission flag', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-  
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      await enablePublicMintingExpectSuccess(Alice, nftCollectionId);
-      await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
-      await enableWhiteListExpectSuccess(Alice, nftCollectionId);
-      const newNftTokenId = await createItemExpectSuccess(Bob, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');
-  
-      await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
+      await enablePublicMintingExpectSuccess(alice, nftCollectionId);
+      await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);
+      await enableWhiteListExpectSuccess(alice, nftCollectionId);
+      const newNftTokenId = await createItemExpectSuccess(bob, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');
+
+      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
     });
   });
 });
@@ -142,63 +142,63 @@
 describe('Metadata update permissions with None flag', () => {
   it('Nobody can set variable metadata with None flag (Regular)', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-  
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');
-  
-      await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
+
+      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
     });
   });
 
   it('Nobody can set variable metadata with None flag (Admin)', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-  
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');
-  
-      await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
-      await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
-      await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
-  
-      await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
+
+      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
+      await addToWhiteListExpectSuccess(alice, nftCollectionId, bob.address);
+      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
+
+      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
     });
   });
 
   it('Nobody can set variable metadata with None flag (ItemOwner)', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-  
+      const alice = privateKey('//Alice');
+
       const data = [1, 2, 254, 255];
-  
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');
-  
-      await setVariableMetaDataExpectFailure(Alice, nftCollectionId, newNftTokenId, data);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
+
+      await setVariableMetaDataExpectFailure(alice, nftCollectionId, newNftTokenId, data);
     });
   });
 
   it('Nobody can set variable metadata flag after freeze', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-  
+      const alice = privateKey('//Alice');
+
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');
-      await setMetadataUpdatePermissionFlagExpectFailure(Alice, nftCollectionId, 'Admin');       
+      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
+      await setMetadataUpdatePermissionFlagExpectFailure(alice, nftCollectionId, 'Admin');
     });
   });
 });
modifiedtests/src/mintModes.test.tsdiffbeforeafterboth
--- a/tests/src/mintModes.test.ts
+++ b/tests/src/mintModes.test.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
 import {
@@ -30,7 +30,7 @@
 
   it('If the AllowList mode is enabled, then the address added to the whitelist and not the owner or administrator can create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
@@ -41,7 +41,7 @@
 
   it('If the AllowList mode is enabled, address not included in whitelist that is regular user cannot create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await createItemExpectFailure(bob, collectionId, 'NFT');
@@ -50,17 +50,17 @@
 
   it('If the AllowList mode is enabled, address not included in whitelist that is admin can create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       await createItemExpectSuccess(bob, collectionId, 'NFT');
     });
   });
 
   it('If the AllowList mode is enabled, address not included in whitelist that is owner can create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await createItemExpectSuccess(alice, collectionId, 'NFT');
@@ -69,7 +69,7 @@
 
   it('If the AllowList mode is disabled, owner can create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await disableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await createItemExpectSuccess(alice, collectionId, 'NFT');
@@ -78,17 +78,17 @@
 
   it('If the AllowList mode is disabled, collection admin can create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await disableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       await createItemExpectSuccess(bob, collectionId, 'NFT');
     });
   });
 
   it('If the AllowList mode is disabled, regular user can`t create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await disableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await createItemExpectFailure(bob, collectionId, 'NFT');
@@ -109,7 +109,7 @@
 
   it('Address that is the not owner or not admin cannot create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, false);
       await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
@@ -119,7 +119,7 @@
 
   it('Address that is collection owner can create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await disableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, false);
       await createItemExpectSuccess(alice, collectionId, 'NFT');
@@ -128,10 +128,10 @@
 
   it('Address that is admin can create tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await disableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, false);
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       await createItemExpectSuccess(bob, collectionId, 'NFT');
     });
   });
modifiedtests/src/overflow.test.tsdiffbeforeafterboth
--- a/tests/src/overflow.test.ts
+++ b/tests/src/overflow.test.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
-import { approveExpectFail, approveExpectSuccess, createCollectionExpectSuccess, createFungibleItemExpectSuccess, getAllowance, getFungibleBalance, transferExpectFailure, transferExpectSuccess, transferFromExpectFail, transferFromExpectSuccess, U128_MAX } from './util/helpers';
+import {approveExpectSuccess, createCollectionExpectSuccess, createFungibleItemExpectSuccess, getAllowance, getBalance, transferExpectFailure, transferExpectSuccess, transferFromExpectFail, transferFromExpectSuccess, U128_MAX} from './util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -27,41 +27,36 @@
   });
 
   it('fails when overflows on transfer', async () => {
-    const fungibleCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });
+    await usingApi(async api => {
+      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
 
-    await createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: U128_MAX });
-    await transferExpectSuccess(fungibleCollectionId, 0, alice, bob, U128_MAX, 'Fungible');
-
-    await createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: 1n });
-    await transferExpectFailure(fungibleCollectionId, 0, alice, bob, 1);
-
-    expect(await getFungibleBalance(fungibleCollectionId, alice.address)).to.equal(1n);
-    expect(await getFungibleBalance(fungibleCollectionId, bob.address)).to.equal(U128_MAX);
-  });
+      await createFungibleItemExpectSuccess(alice, fungibleCollectionId, {Value: U128_MAX});
+      await transferExpectSuccess(fungibleCollectionId, 0, alice, bob, U128_MAX, 'Fungible');
 
-  it('fails on allowance overflow', async () => {
-    const fungibleCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });
+      await createFungibleItemExpectSuccess(alice, fungibleCollectionId, {Value: 1n});
+      await transferExpectFailure(fungibleCollectionId, 0, alice, bob, 1);
 
-    await createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: U128_MAX });
-    await approveExpectSuccess(fungibleCollectionId, 0, alice, bob, U128_MAX);
-    await approveExpectFail(fungibleCollectionId, 0, alice, bob, U128_MAX);
+      expect(await getBalance(api, fungibleCollectionId, alice.address, 0)).to.equal(1n);
+      expect(await getBalance(api, fungibleCollectionId, bob.address, 0)).to.equal(U128_MAX);
+    });
   });
 
   it('fails when overflows on transferFrom', async () => {
-    const fungibleCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });
+    await usingApi(async api => {
+      const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
+      await createFungibleItemExpectSuccess(alice, fungibleCollectionId, {Value: U128_MAX});
+      await approveExpectSuccess(fungibleCollectionId, 0, alice, bob.address, U128_MAX);
+      await transferFromExpectSuccess(fungibleCollectionId, 0, bob, alice, charlie, U128_MAX, 'Fungible');
 
-    await createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: U128_MAX });
-    await approveExpectSuccess(fungibleCollectionId, 0, alice, bob, U128_MAX);
-    await transferFromExpectSuccess(fungibleCollectionId, 0, bob, alice, charlie, U128_MAX, 'Fungible');
+      expect(await getBalance(api, fungibleCollectionId, charlie.address, 0)).to.equal(U128_MAX);
+      expect(await getAllowance(api, fungibleCollectionId, alice.address, bob.address, 0)).to.equal(0n);
 
-    expect(await getFungibleBalance(fungibleCollectionId, charlie.address)).to.equal(U128_MAX);
-    expect((await getAllowance(fungibleCollectionId, 0, alice.address, bob.address)).toString()).to.equal('0');
-
-    await createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: U128_MAX });
-    await approveExpectSuccess(fungibleCollectionId, 0, alice, bob, 1n);
-    await transferFromExpectFail(fungibleCollectionId, 0, bob, alice, charlie, 1);
+      await createFungibleItemExpectSuccess(alice, fungibleCollectionId, {Value: U128_MAX});
+      await approveExpectSuccess(fungibleCollectionId, 0, alice, bob.address, 1n);
+      await transferFromExpectFail(fungibleCollectionId, 0, bob, alice, charlie, 1);
 
-    expect(await getFungibleBalance(fungibleCollectionId, charlie.address)).to.equal(U128_MAX);
-    expect((await getAllowance(fungibleCollectionId, 0, alice.address, bob.address)).toString()).to.equal('1');
+      expect(await getBalance(api, fungibleCollectionId, charlie.address, 0)).to.equal(U128_MAX);
+      expect(await getAllowance(api, fungibleCollectionId, alice.address, bob.address, 0)).to.equal(1n);
+    });
   });
 });
modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -3,8 +3,8 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
-import { expect } from 'chai';
+import {ApiPromise} from '@polkadot/api';
+import {expect} from 'chai';
 import usingApi from './substrate/substrate-api';
 
 function getModuleNames(api: ApiPromise): string[] {
@@ -14,6 +14,7 @@
 // Pallets that must always be present
 const requiredPallets = [
   'balances',
+  'common',
   'randomnesscollectiveflip',
   'timestamp',
   'transactionpayment',
@@ -28,12 +29,15 @@
   'evmmigration',
   'evmtransactionpayment',
   'ethereum',
+  'fungible',
   'xcmpqueue',
   'polkadotxcm',
   'cumulusxcm',
   'dmpqueue',
   'inflation',
   'nft',
+  'nonfungible',
+  'refungible',
   'scheduler',
   'nftpayment',
   'charging',
modifiedtests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/removeCollectionAdmin.test.ts
+++ b/tests/src/removeCollectionAdmin.test.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
+import {ApiPromise} from '@polkadot/api';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
-import {createCollectionExpectSuccess, destroyCollectionExpectSuccess, normalizeAccountId} from './util/helpers';
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
+import {createCollectionExpectSuccess, destroyCollectionExpectSuccess, getAdminList, normalizeAccountId} from './util/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -17,63 +17,63 @@
   it('Remove collection admin.', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.deep.eq(Alice.address);
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.deep.eq(alice.address);
       // first - add collection admin Bob
-      const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await submitTransactionAsync(Alice, addAdminTx);
+      const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await submitTransactionAsync(alice, addAdminTx);
 
-      const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)).toJSON();
-      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(Bob.address));
+      const adminListAfterAddAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
 
       // then remove bob from admins of collection
-      const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await submitTransactionAsync(Alice, removeAdminTx);
+      const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await submitTransactionAsync(alice, removeAdminTx);
 
-      const adminListAfterRemoveAdmin: any = (await api.query.nft.adminList(collectionId)).toJSON;
-      expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(Bob.address));
+      const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(bob.address));
     });
   });
 
   it('Remove collection admin by admin.', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//Charlie');
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.deep.eq(Alice.address);
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+      const charlie = privateKey('//Charlie');
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.eq(alice.address);
       // first - add collection admin Bob
-      const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await submitTransactionAsync(Alice, addAdminTx);
+      const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await submitTransactionAsync(alice, addAdminTx);
 
-      const addAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Charlie.address));
-      await submitTransactionAsync(Alice, addAdminTx2);
+      const addAdminTx2 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));
+      await submitTransactionAsync(alice, addAdminTx2);
 
-      const adminListAfterAddAdmin: any = (await api.query.nft.adminList(collectionId)).toJSON();
-      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(Bob.address));
+      const adminListAfterAddAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));
 
       // then remove bob from admins of collection
-      const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await submitTransactionAsync(Charlie, removeAdminTx);
+      const removeAdminTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await submitTransactionAsync(charlie, removeAdminTx);
 
-      const adminListAfterRemoveAdmin: any = (await api.query.nft.adminList(collectionId)).toJSON;
-      expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(Bob.address));
+      const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);
+      expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(bob.address));
     });
   });
 
   it('Remove admin from collection that has no admins', async () => {
     await usingApi(async (api: ApiPromise) => {
-      const Alice = privateKey('//Alice');
+      const alice = privateKey('//Alice');
       const collectionId = await createCollectionExpectSuccess();
 
-      const adminListBeforeAddAdmin: any = (await api.query.nft.adminList(collectionId));
+      const adminListBeforeAddAdmin = await getAdminList(api, collectionId);
       expect(adminListBeforeAddAdmin).to.have.lengthOf(0);
 
-      const tx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Alice.address));
-      await submitTransactionAsync(Alice, tx);
+      const tx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(alice.address));
+      await submitTransactionAsync(alice, tx);
     });
   });
 });
@@ -98,13 +98,13 @@
     await usingApi(async (api: ApiPromise) => {
       // tslint:disable-next-line: no-bitwise
       const collectionId = await createCollectionExpectSuccess();
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
 
       await destroyCollectionExpectSuccess(collectionId);
 
-      const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await expect(submitTransactionExpectFailAsync(Alice, changeOwnerTx)).to.be.rejected;
+      const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await expect(submitTransactionExpectFailAsync(alice, changeOwnerTx)).to.be.rejected;
 
       // Verifying that nothing bad happened (network is live, new collections can be created, etc.)
       await createCollectionExpectSuccess();
@@ -114,15 +114,15 @@
   it('Regular user Can\'t remove collection admin', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
-      const Charlie = privateKey('//Charlie');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
+      const charlie = privateKey('//Charlie');
 
-      const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await submitTransactionAsync(Alice, addAdminTx);
+      const addAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await submitTransactionAsync(alice, addAdminTx);
 
-      const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));
-      await expect(submitTransactionExpectFailAsync(Charlie, changeOwnerTx)).to.be.rejected;
+      const changeOwnerTx = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));
+      await expect(submitTransactionExpectFailAsync(charlie, changeOwnerTx)).to.be.rejected;
 
       // Verifying that nothing bad happened (network is live, new collections can be created, etc.)
       await createCollectionExpectSuccess();
modifiedtests/src/removeCollectionSponsor.test.tsdiffbeforeafterboth
--- a/tests/src/removeCollectionSponsor.test.ts
+++ b/tests/src/removeCollectionSponsor.test.ts
@@ -5,11 +5,11 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi, submitTransactionExpectFailAsync } from './substrate/substrate-api';
-import { 
-  createCollectionExpectSuccess, 
-  setCollectionSponsorExpectSuccess, 
-  destroyCollectionExpectSuccess, 
+import {default as usingApi, submitTransactionExpectFailAsync} from './substrate/substrate-api';
+import {
+  createCollectionExpectSuccess,
+  setCollectionSponsorExpectSuccess,
+  destroyCollectionExpectSuccess,
   confirmSponsorshipExpectSuccess,
   confirmSponsorshipExpectFailure,
   createItemExpectSuccess,
@@ -19,9 +19,8 @@
   normalizeAccountId,
   addCollectionAdminExpectSuccess,
 } from './util/helpers';
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
-import { BigNumber } from 'bignumber.js';
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -33,7 +32,7 @@
 
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
@@ -53,15 +52,15 @@
       const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);
 
       // Transfer this tokens from unused address to Alice - should fail
-      const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();
       const zeroToAlice = api.tx.nft.transfer(normalizeAccountId(alice.address), collectionId, itemId, 0);
-      const badTransaction = async function () { 
+      const badTransaction = async function () {
         await submitTransactionExpectFailAsync(zeroBalance, zeroToAlice);
       };
       await expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees');
-      const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
+      const sponsorBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();
 
-      expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;
+      expect(sponsorBalanceAfter).to.be.equal(sponsorBalanceBefore);
     });
   });
 
@@ -89,7 +88,7 @@
 describe('(!negative test!) integration test: ext. removeCollectionSponsor():', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
@@ -99,7 +98,7 @@
     // Find the collection that never existed
     let collectionId = 0;
     await usingApi(async (api) => {
-      collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
+      collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
     });
 
     await removeCollectionSponsorExpectFailure(collectionId);
@@ -108,7 +107,7 @@
   it('(!negative test!) Remove sponsor for a collection with collection admin permissions', async () => {
     const collectionId = await createCollectionExpectSuccess();
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
     await removeCollectionSponsorExpectFailure(collectionId, '//Bob');
   });
 
modifiedtests/src/removeFromContractWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/removeFromContractWhiteList.test.ts
+++ b/tests/src/removeFromContractWhiteList.test.ts
@@ -5,10 +5,10 @@
 
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
-import { deployFlipper, toggleFlipValueExpectFailure, toggleFlipValueExpectSuccess } from './util/contracthelpers';
-import { addToContractWhiteListExpectSuccess, isWhitelistedInContract, removeFromContractWhiteListExpectFailure, removeFromContractWhiteListExpectSuccess, toggleContractWhitelistExpectSuccess } from './util/helpers';
-import { IKeyringPair } from '@polkadot/types/types';
-import { expect } from 'chai';
+import {deployFlipper, toggleFlipValueExpectFailure, toggleFlipValueExpectSuccess} from './util/contracthelpers';
+import {addToContractWhiteListExpectSuccess, isWhitelistedInContract, removeFromContractWhiteListExpectFailure, removeFromContractWhiteListExpectSuccess, toggleContractWhitelistExpectSuccess} from './util/helpers';
+import {IKeyringPair} from '@polkadot/types/types';
+import {expect} from 'chai';
 
 describe.skip('Integration Test removeFromContractWhiteList', () => {
   let bob: IKeyringPair;
modifiedtests/src/removeFromWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/removeFromWhiteList.test.ts
+++ b/tests/src/removeFromWhiteList.test.ts
@@ -5,7 +5,7 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi } from './substrate/substrate-api';
+import {default as usingApi} from './substrate/substrate-api';
 import {
   createCollectionExpectSuccess,
   destroyCollectionExpectSuccess,
@@ -19,7 +19,7 @@
   normalizeAccountId,
   addCollectionAdminExpectSuccess,
 } from './util/helpers';
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 
 chai.use(chaiAsPromised);
@@ -38,7 +38,7 @@
 
   it('ensure bob is not in whitelist after removal', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
 
@@ -105,9 +105,9 @@
 
   it('ensure address is not in whitelist after removal', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
       await removeFromWhiteListExpectSuccess(bob, collectionId, normalizeAccountId(charlie.address));
       expect(await isWhitelisted(collectionId, charlie.address)).to.be.false;
@@ -118,7 +118,7 @@
     await usingApi(async () => {
       const collectionWithoutWhitelistId = await createCollectionExpectSuccess();
       await enableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);
-      await addCollectionAdminExpectSuccess(alice, collectionWithoutWhitelistId, bob);
+      await addCollectionAdminExpectSuccess(alice, collectionWithoutWhitelistId, bob.address);
       await addToWhiteListExpectSuccess(alice, collectionWithoutWhitelistId, charlie.address);
       await disableWhiteListExpectSuccess(alice, collectionWithoutWhitelistId);
       await removeFromWhiteListExpectSuccess(bob, collectionWithoutWhitelistId, normalizeAccountId(charlie.address));
@@ -133,4 +133,4 @@
       await removeFromWhiteListExpectFailure(bob, collectionWithoutWhitelistId, normalizeAccountId(charlie.address));
     });
   });
-});
\ No newline at end of file
+});
modifiedtests/src/rpc.load.tsdiffbeforeafterboth
--- a/tests/src/rpc.load.ts
+++ b/tests/src/rpc.load.ts
@@ -3,12 +3,11 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import usingApi, { submitTransactionAsync } from './substrate/substrate-api';
-import { IKeyringPair } from '@polkadot/types/types';
-import { Abi, BlueprintPromise as Blueprint, CodePromise, ContractPromise as Contract } from '@polkadot/api-contract';
-import { ApiPromise, Keyring } from '@polkadot/api';
-import { BigNumber } from 'bignumber.js';
-import { findUnusedAddress } from './util/helpers';
+import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
+import {IKeyringPair} from '@polkadot/types/types';
+import {Abi, BlueprintPromise as Blueprint, CodePromise, ContractPromise as Contract} from '@polkadot/api-contract';
+import {ApiPromise, Keyring} from '@polkadot/api';
+import {findUnusedAddress} from './util/helpers';
 import fs from 'fs';
 import privateKey from './substrate/privateKey';
 
@@ -41,7 +40,7 @@
           unsub();
           resolve(result);
         }
-      });    
+      });
   });
 }
 
@@ -50,11 +49,10 @@
   const deployer = await findUnusedAddress(api);
 
   // Transfer balance to it
-  const keyring = new Keyring({ type: 'sr25519' });
+  const keyring = new Keyring({type: 'sr25519'});
   const alice = keyring.addFromUri('//Alice');
-  let amount = new BigNumber(endowment);
-  amount = amount.plus(1e15);
-  const tx = api.tx.balances.transfer(deployer.address, amount.toFixed());
+  const amount = BigInt(endowment) + 10n**15n;
+  const tx = api.tx.balances.transfer(deployer.address, amount);
   await submitTransactionAsync(alice, tx);
 
   return deployer;
@@ -100,7 +98,7 @@
         await api.rpc.system.chain();
         count++;
         process.stdout.write(`RPC reads: ${count} times at rate ${rate} r/s            \r`);
-    
+
         if (count % checkPoint == 0) {
           hrTime = process.hrtime();
           const microsec2 = hrTime[0] * 1000000 + hrTime[1] / 1000;
@@ -134,7 +132,7 @@
         await getScData(contract, deployer);
         count++;
         process.stdout.write(`SC reads: ${count} times at rate ${rate} r/s            \r`);
-    
+
         if (count % checkPoint == 0) {
           hrTime = process.hrtime();
           const microsec2 = hrTime[0] * 1000000 + hrTime[1] / 1000;
modifiedtests/src/scheduler.test.tsdiffbeforeafterboth
--- a/tests/src/scheduler.test.ts
+++ b/tests/src/scheduler.test.ts
@@ -20,15 +20,15 @@
 describe('Integration Test scheduler base transaction', () => {
   it('User can transfer owned token with delay (scheduler)', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await setCollectionSponsorExpectSuccess(nftCollectionId, Alice.address);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await setCollectionSponsorExpectSuccess(nftCollectionId, alice.address);
       await confirmSponsorshipExpectSuccess(nftCollectionId);
 
-      await scheduleTransferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 12000, 4);
+      await scheduleTransferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 1, 4);
     });
   });
 });
modifiedtests/src/setChainLimits.test.tsdiffbeforeafterboth
--- a/tests/src/setChainLimits.test.ts
+++ b/tests/src/setChainLimits.test.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
 import {
@@ -40,16 +40,16 @@
   });
 
   it('Collection owner cannot set chain limits', async () => {
-    await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+    await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     await setChainLimitsExpectFailure(alice, limits);
   });
 
   it('Collection admin cannot set chain limits', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
     await setChainLimitsExpectFailure(bob, limits);
   });
-  
+
   it('Regular user cannot set chain limits', async () => {
     await setChainLimitsExpectFailure(dave, limits);
   });
modifiedtests/src/setCollectionLimits.test.tsdiffbeforeafterboth
--- a/tests/src/setCollectionLimits.test.ts
+++ b/tests/src/setCollectionLimits.test.ts
@@ -4,19 +4,18 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits
-import { ApiPromise, Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise, Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
-import { ICollectionInterface } from './types';
 import {
   createCollectionExpectSuccess, getCreatedCollectionCount,
   getCreateItemResult,
-  getDetailedCollectionInfo,
   setCollectionLimitsExpectFailure,
   setCollectionLimitsExpectSuccess,
   addCollectionAdminExpectSuccess,
+  queryCollectionExpectSuccess,
 } from './util/helpers';
 
 chai.use(chaiAsPromised);
@@ -28,15 +27,14 @@
 
 const accountTokenOwnershipLimit = 0;
 const sponsoredDataSize = 0;
-const sponsoredMintSize = 0;
-const sponsorTimeout = 1;
+const sponsorTransferTimeout = 1;
 const tokenLimit = 10;
 
 describe('setCollectionLimits positive', () => {
   let tx;
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
     });
@@ -47,9 +45,9 @@
         collectionIdForTesting,
         {
           accountTokenOwnershipLimit: accountTokenOwnershipLimit,
-          sponsoredMintSize: sponsoredDataSize,
+          sponsoredDataSize: sponsoredDataSize,
           tokenLimit: tokenLimit,
-          sponsorTimeout: sponsorTimeout,
+          sponsorTransferTimeout,
           ownerCanTransfer: true,
           ownerCanDestroy: true,
         },
@@ -58,16 +56,16 @@
       const result = getCreateItemResult(events);
 
       // get collection limits defined previously
-      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
+      const collectionInfo = await queryCollectionExpectSuccess(api, collectionIdForTesting);
 
       // tslint:disable-next-line:no-unused-expression
       expect(result.success).to.be.true;
-      expect(collectionInfo.limits.accountTokenOwnershipLimit).to.be.equal(accountTokenOwnershipLimit);
-      expect(collectionInfo.limits.sponsoredDataSize).to.be.equal(sponsoredDataSize);
-      expect(collectionInfo.limits.tokenLimit).to.be.equal(tokenLimit);
-      expect(collectionInfo.limits.sponsorTimeout).to.be.equal(sponsorTimeout);
-      expect(collectionInfo.limits.ownerCanTransfer).to.be.true;
-      expect(collectionInfo.limits.ownerCanDestroy).to.be.true;
+      expect(collectionInfo.limits.accountTokenOwnershipLimit.unwrap().toNumber()).to.be.equal(accountTokenOwnershipLimit);
+      expect(collectionInfo.limits.sponsoredDataSize.unwrap().toNumber()).to.be.equal(sponsoredDataSize);
+      expect(collectionInfo.limits.tokenLimit.unwrap().toNumber()).to.be.equal(tokenLimit);
+      expect(collectionInfo.limits.sponsorTransferTimeout.unwrap().toNumber()).to.be.equal(sponsorTransferTimeout);
+      expect(collectionInfo.limits.ownerCanTransfer.unwrap().toJSON()).to.be.true;
+      expect(collectionInfo.limits.ownerCanDestroy.unwrap().toJSON()).to.be.true;
     });
   });
 
@@ -78,7 +76,7 @@
         accountTokenOwnershipLimit: accountTokenOwnershipLimit,
         sponsoredMintSize: sponsoredDataSize,
         tokenLimit: tokenLimit,
-        sponsorTimeout: sponsorTimeout,
+        sponsorTransferTimeout,
         ownerCanTransfer: true,
         ownerCanDestroy: true,
       };
@@ -90,7 +88,9 @@
       );
       const events1 = await submitTransactionAsync(alice, tx1);
       const result1 = getCreateItemResult(events1);
-      const collectionInfo1 = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
+      expect(result1.success).to.be.true;
+      const collectionInfo1 = await queryCollectionExpectSuccess(api, collectionIdForTesting);
+      expect(collectionInfo1.limits.tokenLimit.unwrap().toNumber()).to.be.equal(tokenLimit);
 
       // The second time
       const tx2 = api.tx.nft.setCollectionLimits(
@@ -99,13 +99,9 @@
       );
       const events2 = await submitTransactionAsync(alice, tx2);
       const result2 = getCreateItemResult(events2);
-      const collectionInfo2 = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
-
-      // tslint:disable-next-line:no-unused-expression
-      expect(result1.success).to.be.true;
-      expect(collectionInfo1.limits.tokenLimit).to.be.equal(tokenLimit);
       expect(result2.success).to.be.true;
-      expect(collectionInfo2.limits.tokenLimit).to.be.equal(tokenLimit);
+      const collectionInfo2 = await queryCollectionExpectSuccess(api, collectionIdForTesting);
+      expect(collectionInfo2.limits.tokenLimit.unwrap().toNumber()).to.be.equal(tokenLimit);
     });
   });
 
@@ -115,7 +111,7 @@
   let tx;
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
       collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
@@ -130,7 +126,7 @@
         {
           accountTokenOwnershipLimit,
           sponsoredDataSize,
-          sponsoredMintSize,
+          // sponsoredMintSize,
           tokenLimit,
         },
       );
@@ -144,7 +140,7 @@
         {
           accountTokenOwnershipLimit,
           sponsoredDataSize,
-          sponsoredMintSize,
+          // sponsoredMintSize,
           tokenLimit,
         },
       );
@@ -152,14 +148,14 @@
     });
   });
   it('execute setCollectionLimits from admin collection', async () => {
-    await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob);
+    await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);
     await usingApi(async (api: ApiPromise) => {
       tx = api.tx.nft.setCollectionLimits(
         collectionIdForTesting,
         {
           accountTokenOwnershipLimit,
           sponsoredDataSize,
-          sponsoredMintSize,
+          // sponsoredMintSize,
           tokenLimit,
         },
       );
@@ -173,7 +169,7 @@
       accountTokenOwnershipLimit: accountTokenOwnershipLimit,
       sponsoredMintSize: sponsoredDataSize,
       tokenLimit: tokenLimit,
-      sponsorTimeout: sponsorTimeout,
+      sponsorTransferTimeout,
       ownerCanTransfer: false,
       ownerCanDestroy: true,
     });
@@ -181,7 +177,7 @@
       accountTokenOwnershipLimit: accountTokenOwnershipLimit,
       sponsoredMintSize: sponsoredDataSize,
       tokenLimit: tokenLimit,
-      sponsorTimeout: sponsorTimeout,
+      sponsorTransferTimeout,
       ownerCanTransfer: true,
       ownerCanDestroy: true,
     });
@@ -193,7 +189,7 @@
       accountTokenOwnershipLimit: accountTokenOwnershipLimit,
       sponsoredMintSize: sponsoredDataSize,
       tokenLimit: tokenLimit,
-      sponsorTimeout: sponsorTimeout,
+      sponsorTransferTimeout,
       ownerCanTransfer: true,
       ownerCanDestroy: false,
     });
@@ -201,7 +197,7 @@
       accountTokenOwnershipLimit: accountTokenOwnershipLimit,
       sponsoredMintSize: sponsoredDataSize,
       tokenLimit: tokenLimit,
-      sponsorTimeout: sponsorTimeout,
+      sponsorTransferTimeout,
       ownerCanTransfer: true,
       ownerCanDestroy: true,
     });
@@ -215,7 +211,7 @@
         accountTokenOwnershipLimit: accountTokenOwnershipLimit,
         sponsoredMintSize: sponsoredDataSize,
         tokenLimit: tokenLimit,
-        sponsorTimeout: sponsorTimeout,
+        sponsorTransferTimeout,
         ownerCanTransfer: true,
         ownerCanDestroy: true,
       };
modifiedtests/src/setCollectionSponsor.test.tsdiffbeforeafterboth
--- a/tests/src/setCollectionSponsor.test.ts
+++ b/tests/src/setCollectionSponsor.test.ts
@@ -5,15 +5,15 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi } from './substrate/substrate-api';
-import { createCollectionExpectSuccess, 
-  setCollectionSponsorExpectSuccess, 
-  destroyCollectionExpectSuccess, 
+import {default as usingApi} from './substrate/substrate-api';
+import {createCollectionExpectSuccess,
+  setCollectionSponsorExpectSuccess,
+  destroyCollectionExpectSuccess,
   setCollectionSponsorExpectFailure,
   addCollectionAdminExpectSuccess,
 } from './util/helpers';
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 
 chai.use(chaiAsPromised);
 
@@ -25,7 +25,7 @@
 
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
     });
@@ -36,11 +36,11 @@
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
   });
   it('Set Fungible collection sponsor', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: {type: 'Fungible', decimalPoints: 0} });
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
   });
   it('Set ReFungible collection sponsor', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: {type: 'ReFungible'} });
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
   });
 
@@ -52,7 +52,7 @@
   it('Replace collection sponsor', async () => {
     const collectionId = await createCollectionExpectSuccess();
 
-    const keyring = new Keyring({ type: 'sr25519' });
+    const keyring = new Keyring({type: 'sr25519'});
     const charlie = keyring.addFromUri('//Charlie');
     await setCollectionSponsorExpectSuccess(collectionId, bob.address);
     await setCollectionSponsorExpectSuccess(collectionId, charlie.address);
@@ -62,7 +62,7 @@
 describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
       charlie = keyring.addFromUri('//Charlie');
@@ -77,7 +77,7 @@
     // Find the collection that never existed
     let collectionId = 0;
     await usingApi(async (api) => {
-      collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
+      collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
     });
 
     await setCollectionSponsorExpectFailure(collectionId, bob.address);
@@ -89,7 +89,7 @@
   });
   it('(!negative test!) Collection admin add sponsor', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
     await setCollectionSponsorExpectFailure(collectionId, charlie.address, '//Bob');
   });
 });
modifiedtests/src/setConstOnChainSchema.test.tsdiffbeforeafterboth
--- a/tests/src/setConstOnChainSchema.test.ts
+++ b/tests/src/setConstOnChainSchema.test.ts
@@ -3,11 +3,11 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
 import {
   createCollectionExpectSuccess,
   destroyCollectionExpectSuccess,
@@ -17,17 +17,17 @@
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
-let Alice: IKeyringPair;
-let Bob: IKeyringPair;
-let Shema: any;
+let alice: IKeyringPair;
+let bob: IKeyringPair;
+let shema: any;
 let largeShema: any;
 
 before(async () => {
   await usingApi(async () => {
-    const keyring = new Keyring({ type: 'sr25519' });
-    Alice = keyring.addFromUri('//Alice');
-    Bob = keyring.addFromUri('//Bob');
-    Shema = '0x31';
+    const keyring = new Keyring({type: 'sr25519'});
+    alice = keyring.addFromUri('//Alice');
+    bob = keyring.addFromUri('//Bob');
+    shema = '0x31';
     largeShema = new Array(4097).fill(0xff);
 
   });
@@ -37,32 +37,31 @@
   it('Run extrinsic with parameters of the collection id, set the scheme', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.eq(Alice.address);
-      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);
-      await submitTransactionAsync(Alice, setShema);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.eq(alice.address);
+      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+      await submitTransactionAsync(alice, setShema);
     });
   });
 
   it('Collection admin can set the scheme', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.eq(Alice.address);
-      await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);
-      await submitTransactionAsync(Bob, setShema);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.eq(alice.address);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+      await submitTransactionAsync(bob, setShema);
     });
   });
 
   it('Checking collection data using the ConstOnChainSchema parameter', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);
-      await submitTransactionAsync(Alice, setShema);
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.constOnChainSchema.toString()).to.be.eq(Shema);
-
+      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+      await submitTransactionAsync(alice, setShema);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.constOnChainSchema.toString()).to.be.eq(shema);
     });
   });
 });
@@ -72,9 +71,9 @@
   it('Set a non-existent collection', async () => {
     await usingApi(async (api) => {
       // tslint:disable-next-line: radix
-      const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
-      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);
-      await expect(submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;
+      const collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
+      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+      await expect(submitTransactionExpectFailAsync(alice, setShema)).to.be.rejected;
     });
   });
 
@@ -82,8 +81,8 @@
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
       await destroyCollectionExpectSuccess(collectionId);
-      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);
-      await expect(submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;
+      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+      await expect(submitTransactionExpectFailAsync(alice, setShema)).to.be.rejected;
     });
   });
 
@@ -91,17 +90,17 @@
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
       const setShema = api.tx.nft.setConstOnChainSchema(collectionId, largeShema);
-      await expect(submitTransactionExpectFailAsync(Alice, setShema)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(alice, setShema)).to.be.rejected;
     });
   });
 
   it('Execute method not on behalf of the collection owner', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.eq(Alice.address);
-      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, Shema);
-      await expect(submitTransactionExpectFailAsync(Bob, setShema)).to.be.rejected;
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.eq(alice.address);
+      const setShema = api.tx.nft.setConstOnChainSchema(collectionId, shema);
+      await expect(submitTransactionExpectFailAsync(bob, setShema)).to.be.rejected;
     });
   });
 
modifiedtests/src/setContractSponsoringRateLimit.test.tsdiffbeforeafterboth
--- a/tests/src/setContractSponsoringRateLimit.test.ts
+++ b/tests/src/setContractSponsoringRateLimit.test.ts
@@ -3,11 +3,11 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
 import waitNewBlocks from './substrate/wait-new-blocks';
-import { deployFlipper, toggleFlipValueExpectFailure, toggleFlipValueExpectSuccess } from './util/contracthelpers';
+import {deployFlipper, toggleFlipValueExpectFailure, toggleFlipValueExpectSuccess} from './util/contracthelpers';
 import {
   enableContractSponsoringExpectSuccess,
   findUnusedAddress,
modifiedtests/src/setMintPermission.test.tsdiffbeforeafterboth
--- a/tests/src/setMintPermission.test.ts
+++ b/tests/src/setMintPermission.test.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
 import {
@@ -32,7 +32,7 @@
 
   it('ensure white-listed non-privileged address can mint tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
@@ -43,7 +43,7 @@
 
   it('can be enabled twice', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
     });
@@ -51,7 +51,7 @@
 
   it('can be disabled twice', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await setMintPermissionExpectSuccess(alice, collectionId, true);
       await setMintPermissionExpectSuccess(alice, collectionId, false);
       await setMintPermissionExpectSuccess(alice, collectionId, false);
@@ -79,7 +79,7 @@
 
   it('fails on removed collection', async () => {
     await usingApi(async () => {
-      const removedCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const removedCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await destroyCollectionExpectSuccess(removedCollectionId);
 
       await setMintPermissionExpectFailure(alice, removedCollectionId, true);
@@ -87,22 +87,22 @@
   });
 
   it('fails when not collection owner tries to set mint status', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+    const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     await enableWhiteListExpectSuccess(alice, collectionId);
     await setMintPermissionExpectFailure(bob, collectionId, true);
   });
 
   it('Collection admin fails on set', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       await setMintPermissionExpectFailure(bob, collectionId, true);
     });
   });
 
   it('ensure non-white-listed non-privileged address can\'t mint tokens', async () => {
     await usingApi(async () => {
-      const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       await enableWhiteListExpectSuccess(alice, collectionId);
       await setMintPermissionExpectSuccess(alice, collectionId, true);
 
modifiedtests/src/setOffchainSchema.test.tsdiffbeforeafterboth
--- a/tests/src/setOffchainSchema.test.ts
+++ b/tests/src/setOffchainSchema.test.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
@@ -35,20 +35,24 @@
   });
 
   it('execute setOffchainSchema, verify data was set', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await setOffchainSchemaExpectSuccess(alice, collectionId, DATA);
-    const collection = await queryCollectionExpectSuccess(collectionId);
+    await usingApi(async api => {
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+      await setOffchainSchemaExpectSuccess(alice, collectionId, DATA);
+      const collection = await queryCollectionExpectSuccess(api, collectionId);
 
-    expect(collection.offchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));
+      expect(collection.offchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));
+    });
   });
 
   it('execute setOffchainSchema (collection admin), verify data was set', async () => {
-    const collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
-    await addCollectionAdminExpectSuccess(alice, collectionId, bob);
-    await setOffchainSchemaExpectSuccess(bob, collectionId, DATA);
-    const collection = await queryCollectionExpectSuccess(collectionId);
+    await usingApi(async api => {
+      const collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+      await setOffchainSchemaExpectSuccess(bob, collectionId, DATA);
+      const collection = await queryCollectionExpectSuccess(api, collectionId);
 
-    expect(collection.offchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));
+      expect(collection.offchainSchema).to.be.equal('0x' + Buffer.from(DATA).toString('hex'));
+    });
   });
 });
 
@@ -63,7 +67,7 @@
       alice = privateKey('//Alice');
       bob = privateKey('//Bob');
 
-      validCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      validCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     });
   });
 
@@ -74,7 +78,7 @@
   });
 
   it('fails on destroyed collection id', async () => {
-    const destroyedCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+    const destroyedCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     await destroyCollectionExpectSuccess(destroyedCollectionId);
 
     await setOffchainSchemaExpectFailure(alice, destroyedCollectionId, DATA);
modifiedtests/src/setPublicAccessMode.test.tsdiffbeforeafterboth
--- a/tests/src/setPublicAccessMode.test.ts
+++ b/tests/src/setPublicAccessMode.test.ts
@@ -4,8 +4,8 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
@@ -24,34 +24,34 @@
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
-let Alice: IKeyringPair;
-let Bob: IKeyringPair;
+let alice: IKeyringPair;
+let bob: IKeyringPair;
 
 describe('Integration Test setPublicAccessMode(): ', () => {
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
     });
   });
 
   it('Run extrinsic with collection id parameters, set the whitelist mode for the collection', async () => {
     await usingApi(async () => {
       const collectionId: number = await createCollectionExpectSuccess();
-      await enableWhiteListExpectSuccess(Alice, collectionId);
-      await enablePublicMintingExpectSuccess(Alice, collectionId);
-      await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
-      await createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);
+      await enableWhiteListExpectSuccess(alice, collectionId);
+      await enablePublicMintingExpectSuccess(alice, collectionId);
+      await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
+      await createItemExpectSuccess(bob, collectionId, 'NFT', bob.address);
     });
   });
 
   it('Whitelisted collection limits', async () => {
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
-      await enableWhiteListExpectSuccess(Alice, collectionId);
-      await enablePublicMintingExpectSuccess(Alice, collectionId);
-      const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(Bob.address), 'NFT');
-      await expect(submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;
+      await enableWhiteListExpectSuccess(alice, collectionId);
+      await enablePublicMintingExpectSuccess(alice, collectionId);
+      const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(bob.address), 'NFT');
+      await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
     });
   });
 });
@@ -60,9 +60,9 @@
   it('Set a non-existent collection', async () => {
     await usingApi(async (api: ApiPromise) => {
       // tslint:disable-next-line: radix
-      const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
+      const collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
       const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');
-      await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
     });
   });
 
@@ -72,15 +72,15 @@
       const collectionId = await createCollectionExpectSuccess();
       await destroyCollectionExpectSuccess(collectionId);
       const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');
-      await expect(submitTransactionExpectFailAsync(Alice, tx)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
     });
   });
 
   it('Re-set the list mode already set in quantity', async () => {
     await usingApi(async () => {
       const collectionId: number = await createCollectionExpectSuccess();
-      await enableWhiteListExpectSuccess(Alice, collectionId);
-      await enableWhiteListExpectSuccess(Alice, collectionId);
+      await enableWhiteListExpectSuccess(alice, collectionId);
+      await enableWhiteListExpectSuccess(alice, collectionId);
     });
   });
 
@@ -89,7 +89,7 @@
       // tslint:disable-next-line: no-bitwise
       const collectionId = await createCollectionExpectSuccess();
       const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');
-      await expect(submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
     });
   });
 });
@@ -97,17 +97,17 @@
 describe('Negative Integration Test ext. collection admin setPublicAccessMode(): ', () => {
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
     });
   });
   it('setPublicAccessMode by collection admin', async () => {
     await usingApi(async (api: ApiPromise) => {
       // tslint:disable-next-line: no-bitwise
       const collectionId = await createCollectionExpectSuccess();
-      await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       const tx = api.tx.nft.setPublicAccessMode(collectionId, 'WhiteList');
-      await expect(submitTransactionExpectFailAsync(Bob, tx)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;
     });
   });
 });
modifiedtests/src/setSchemaVersion.test.tsdiffbeforeafterboth
--- a/tests/src/setSchemaVersion.test.ts
+++ b/tests/src/setSchemaVersion.test.ts
@@ -4,12 +4,11 @@
 //
 
 // https://unique-network.readthedocs.io/en/latest/jsapi.html#setschemaversion
-import { ApiPromise, Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise, Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
-import { ICollectionInterface } from './types';
 import {
   createCollectionExpectSuccess,
   destroyCollectionExpectSuccess,
@@ -25,42 +24,27 @@
 let alice: IKeyringPair;
 let bob: IKeyringPair;
 let charlie: IKeyringPair;
-let collectionIdForTesting: number;
 
 /*
 1. We create collection.
 2. Save just created collection id.
 3. Use this id for setSchemaVersion.
 */
-
-describe('hooks', () => {
-  before(async () => {
-    await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
-      alice = keyring.addFromUri('//Alice');
-    });
-  });
-  it('choose or create collection for testing', async () => {
-    await usingApi(async () => {
-      collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
-    });
-  });
-});
-
 describe('setSchemaVersion positive', () => {
   let tx;
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
     });
   });
   it('execute setSchemaVersion with image url and unique ', async () => {
     await usingApi(async (api: ApiPromise) => {
+      const collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
       tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemResult(events);
-      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
+      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
       // tslint:disable-next-line:no-unused-expression
       expect(result.success).to.be.true;
       // tslint:disable-next-line:no-unused-expression
@@ -73,12 +57,15 @@
 
 describe('Collection admin setSchemaVersion positive', () => {
   let tx;
+  let collectionIdForTesting: any;
+
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       bob = keyring.addFromUri('//Bob');
-      await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob);
+      collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
+      await addCollectionAdminExpectSuccess(alice, collectionIdForTesting, bob.address);
     });
   });
   it('execute setSchemaVersion with image url and unique ', async () => {
@@ -86,7 +73,7 @@
       tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Unique');
       const events = await submitTransactionAsync(bob, tx);
       const result = getCreateItemResult(events);
-      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
+      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
       // tslint:disable-next-line:no-unused-expression
       expect(result.success).to.be.true;
       // tslint:disable-next-line:no-unused-expression
@@ -101,7 +88,7 @@
       tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'ImageURL');
       const events = await submitTransactionAsync(bob, tx);
       const result = getCreateItemResult(events);
-      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;
+      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting);
       // tslint:disable-next-line:no-unused-expression
       expect(result.success).to.be.true;
       // tslint:disable-next-line:no-unused-expression
@@ -114,11 +101,13 @@
 
 describe('setSchemaVersion negative', () => {
   let tx;
+  let collectionIdForTesting: any;
   before(async () => {
     await usingApi(async () => {
-      const keyring = new Keyring({ type: 'sr25519' });
+      const keyring = new Keyring({type: 'sr25519'});
       alice = keyring.addFromUri('//Alice');
       charlie = keyring.addFromUri('//Charlie');
+      collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});
     });
   });
   it('execute setSchemaVersion for not exists collection', async () => {
@@ -127,21 +116,6 @@
       const nonExistedCollectionId = collectionCount + 1;
       tx = api.tx.nft.setSchemaVersion(nonExistedCollectionId, 'ImageURL');
       await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;
-    });
-  });
-  it('execute setSchemaVersion with not correct schema version', async () => {
-    await usingApi(async (api: ApiPromise) => {
-      const consoleError = console.error;
-      console.error = () => {};
-      try {
-        tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Test');
-        await submitTransactionAsync(alice, tx);
-      } catch (e) {
-        // tslint:disable-next-line:no-unused-expression
-        expect(e).to.be.exist;
-      } finally {
-        console.error = consoleError;
-      }
     });
   });
   it('execute setSchemaVersion for deleted collection', async () => {
modifiedtests/src/setVariableMetaData.test.tsdiffbeforeafterboth
--- a/tests/src/setVariableMetaData.test.ts
+++ b/tests/src/setVariableMetaData.test.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
@@ -18,6 +18,7 @@
   setVariableMetaDataExpectSuccess,
   addCollectionAdminExpectSuccess,
   setMetadataUpdatePermissionFlagExpectSuccess,
+  getVariableMetadata,
 } from './util/helpers';
 
 chai.use(chaiAsPromised);
@@ -32,7 +33,7 @@
   before(async () => {
     await usingApi(async () => {
       alice = privateKey('//Alice');
-      collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
     });
   });
@@ -43,9 +44,7 @@
 
   it('verify data was set', async () => {
     await usingApi(async api => {
-      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();
-
-      expect(Array.from(item.variableData)).to.deep.equal(Array.from(data));
+      expect(await getVariableMetadata(api, collectionId, tokenId)).to.deep.equal(data);
     });
   });
 });
@@ -61,10 +60,10 @@
     await usingApi(async () => {
       alice = privateKey('//Alice');
       bob = privateKey('//Bob');
-      collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
       await setMetadataUpdatePermissionFlagExpectSuccess(alice, collectionId, 'Admin');
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
     });
   });
 
@@ -74,9 +73,7 @@
 
   it('verify data was set', async () => {
     await usingApi(async api => {
-      const item: any = (await api.query.nft.nftItemList(collectionId, tokenId) as any).unwrap();
-
-      expect(Array.from(item.variableData)).to.deep.equal(Array.from(data));
+      expect(await getVariableMetadata(api, collectionId, tokenId)).to.deep.equal(data);
     });
   });
 });
@@ -95,7 +92,7 @@
       alice = privateKey('//Alice');
       bob = privateKey('//Bob');
 
-      validCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+      validCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
       validTokenId = await createItemExpectSuccess(alice, validCollectionId, 'NFT');
     });
   });
@@ -107,14 +104,14 @@
     });
   });
   it('fails on removed collection id', async () => {
-    const removedCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+    const removedCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     const removedCollectionTokenId = await createItemExpectSuccess(alice, removedCollectionId, 'NFT');
 
     await destroyCollectionExpectSuccess(removedCollectionId);
     await setVariableMetaDataExpectFailure(alice, removedCollectionId, removedCollectionTokenId, data);
   });
   it('fails on removed token', async () => {
-    const removedTokenCollectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
+    const removedTokenCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
     const removedTokenId = await createItemExpectSuccess(alice, removedTokenCollectionId, 'NFT');
     await burnItemExpectSuccess(alice, removedTokenCollectionId, removedTokenId);
 
@@ -131,7 +128,7 @@
     await setVariableMetaDataExpectFailure(alice, validCollectionId, validTokenId, tooLongData);
   });
   it('fails on fungible token', async () => {
-    const fungibleCollectionId = await createCollectionExpectSuccess({ mode: { type: 'Fungible', decimalPoints: 0 } });
+    const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
     const fungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
 
     await setVariableMetaDataExpectFailure(alice, fungibleCollectionId, fungibleTokenId, data);
modifiedtests/src/setVariableMetadataSponsoringRateLimit.test.tsdiffbeforeafterboth
--- a/tests/src/setVariableMetadataSponsoringRateLimit.test.ts
+++ b/tests/src/setVariableMetadataSponsoringRateLimit.test.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
 import usingApi from './substrate/substrate-api';
 import {
modifiedtests/src/setVariableOnChainSchema.test.tsdiffbeforeafterboth
--- a/tests/src/setVariableOnChainSchema.test.ts
+++ b/tests/src/setVariableOnChainSchema.test.ts
@@ -3,11 +3,11 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
+import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
 import {
   createCollectionExpectSuccess,
   destroyCollectionExpectSuccess,
@@ -17,17 +17,17 @@
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
-let Alice: IKeyringPair;
-let Bob: IKeyringPair;
-let Schema: any;
+let alice: IKeyringPair;
+let bob: IKeyringPair;
+let schema: any;
 let largeSchema: any;
 
 before(async () => {
   await usingApi(async () => {
-    const keyring = new Keyring({ type: 'sr25519' });
-    Alice = keyring.addFromUri('//Alice');
-    Bob = keyring.addFromUri('//Bob');
-    Schema = '0x31';
+    const keyring = new Keyring({type: 'sr25519'});
+    alice = keyring.addFromUri('//Alice');
+    bob = keyring.addFromUri('//Bob');
+    schema = '0x31';
     largeSchema = new Array(4097).fill(0xff);
 
   });
@@ -37,20 +37,20 @@
   it('Run extrinsic with parameters of the collection id, set the scheme', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.eq(Alice.address);
-      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);
-      await submitTransactionAsync(Alice, setSchema);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.eq(alice.address);
+      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+      await submitTransactionAsync(alice, setSchema);
     });
   });
 
   it('Checking collection data using the setVariableOnChainSchema parameter', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);
-      await submitTransactionAsync(Alice, setSchema);
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.variableOnChainSchema.toString()).to.be.eq(Schema);
+      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+      await submitTransactionAsync(alice, setSchema);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.variableOnChainSchema.toString()).to.be.eq(schema);
 
     });
   });
@@ -61,22 +61,22 @@
   it('Run extrinsic with parameters of the collection id, set the scheme', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.eq(Alice.address);
-      await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);
-      await submitTransactionAsync(Bob, setSchema);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.eq(alice.address);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+      await submitTransactionAsync(bob, setSchema);
     });
   });
 
   it('Checking collection data using the setVariableOnChainSchema parameter', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);
-      await submitTransactionAsync(Bob, setSchema);
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.variableOnChainSchema.toString()).to.be.eq(Schema);
+      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+      await submitTransactionAsync(bob, setSchema);
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.variableOnChainSchema.toString()).to.be.eq(schema);
 
     });
   });
@@ -87,9 +87,9 @@
   it('Set a non-existent collection', async () => {
     await usingApi(async (api) => {
       // tslint:disable-next-line: radix
-      const collectionId = parseInt((await api.query.nft.createdCollectionCount()).toString()) + 1;
-      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);
-      await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;
+      const collectionId = (await api.query.common.createdCollectionCount()).toNumber() + 1;
+      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+      await expect(submitTransactionExpectFailAsync(alice, setSchema)).to.be.rejected;
     });
   });
 
@@ -97,8 +97,8 @@
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
       await destroyCollectionExpectSuccess(collectionId);
-      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);
-      await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;
+      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+      await expect(submitTransactionExpectFailAsync(alice, setSchema)).to.be.rejected;
     });
   });
 
@@ -106,17 +106,17 @@
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
       const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, largeSchema);
-      await expect(submitTransactionExpectFailAsync(Alice, setSchema)).to.be.rejected;
+      await expect(submitTransactionExpectFailAsync(alice, setSchema)).to.be.rejected;
     });
   });
 
   it('Execute method not on behalf of the collection owner', async () => {
     await usingApi(async (api) => {
       const collectionId = await createCollectionExpectSuccess();
-      const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();
-      expect(collection.owner).to.be.eq(Alice.address);
-      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, Schema);
-      await expect(submitTransactionExpectFailAsync(Bob, setSchema)).to.be.rejected;
+      const collection = (await api.query.common.collectionById(collectionId)).unwrap();
+      expect(collection.owner.toString()).to.be.eq(alice.address);
+      const setSchema = api.tx.nft.setVariableOnChainSchema(collectionId, schema);
+      await expect(submitTransactionExpectFailAsync(bob, setSchema)).to.be.rejected;
     });
   });
 
modifiedtests/src/substrate/get-balance.tsdiffbeforeafterboth
--- a/tests/src/substrate/get-balance.ts
+++ b/tests/src/substrate/get-balance.ts
@@ -3,13 +3,13 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
+import {ApiPromise} from '@polkadot/api';
 import {AccountInfo} from '@polkadot/types/interfaces/system';
 import promisifySubstrate from './promisify-substrate';
-import { IKeyringPair } from '@polkadot/types/types';
-import { submitTransactionAsync } from './substrate-api';
-import { getGenericResult } from '../util/helpers';
-import { expect } from 'chai';
+import {IKeyringPair} from '@polkadot/types/types';
+import {submitTransactionAsync} from './substrate-api';
+import {getGenericResult} from '../util/helpers';
+import {expect} from 'chai';
 
 export default async function getBalance(api: ApiPromise, accounts: string[]): Promise<Array<bigint>> {
   const balance = promisifySubstrate(api, (acc: string[]) => api.query.system.account.multi(acc));
@@ -26,4 +26,4 @@
   const events = await submitTransactionAsync(from, tx);
   const result = getGenericResult(events);
   expect(result.success).to.be.true;
-}
\ No newline at end of file
+}
modifiedtests/src/substrate/privateKey.tsdiffbeforeafterboth
--- a/tests/src/substrate/privateKey.ts
+++ b/tests/src/substrate/privateKey.ts
@@ -3,11 +3,11 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { Keyring } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {Keyring} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 
 export default function privateKey(account: string): IKeyringPair {
-  const keyring = new Keyring({ type: 'sr25519' });
-  
+  const keyring = new Keyring({type: 'sr25519'});
+
   return keyring.addFromUri(account);
-}
\ No newline at end of file
+}
modifiedtests/src/substrate/promisify-substrate.tsdiffbeforeafterboth
--- a/tests/src/substrate/promisify-substrate.ts
+++ b/tests/src/substrate/promisify-substrate.ts
@@ -3,7 +3,7 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
+import {ApiPromise} from '@polkadot/api';
 
 type PromiseType<T> = T extends PromiseLike<infer TInner> ? TInner : T;
 
@@ -25,7 +25,7 @@
         reject && reject(error);
         cleanup();
       };
-      
+
       api.on('disconnected', fail);
       api.on('error', fail);
 
modifiedtests/src/substrate/substrate-api.tsdiffbeforeafterboth
--- a/tests/src/substrate/substrate-api.ts
+++ b/tests/src/substrate/substrate-api.ts
@@ -3,14 +3,14 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { WsProvider, ApiPromise } from '@polkadot/api';
-import { EventRecord } from '@polkadot/types/interfaces/system/types';
-import { ExtrinsicStatus } from '@polkadot/types/interfaces/author/types';
-import { IKeyringPair } from '@polkadot/types/types';
+import {WsProvider, ApiPromise} from '@polkadot/api';
+import {EventRecord} from '@polkadot/types/interfaces/system/types';
+import {ExtrinsicStatus} from '@polkadot/types/interfaces/author/types';
+import {IKeyringPair} from '@polkadot/types/types';
 
 import config from '../config';
 import promisifySubstrate from './promisify-substrate';
-import { ApiOptions, SubmittableExtrinsic, ApiTypes } from '@polkadot/api/types';
+import {ApiOptions, SubmittableExtrinsic, ApiTypes} from '@polkadot/api/types';
 import * as defs from '../interfaces/definitions';
 
 
@@ -40,20 +40,19 @@
   const consoleLog = console.log;
   const consoleWarn = console.warn;
 
-  const outFn = (message: any, ...rest: any[]) => {
-    if (typeof message !== 'string') {
-      consoleErr(message, ...rest);
-      return;
+  const outFn = (printer: any) => (...args: any[]) => {
+    for (const arg of args) {
+      if (typeof arg !== 'string')
+        continue;
+      if (arg.includes('1000:: Normal connection closure' || arg === 'Normal connection closure'))
+        return;
     }
-    if (!message.includes('StorageChangeSet:: WebSocket is not connected') &&
-        !message.includes('2021-') &&
-        !message.includes('StorageChangeSet:: Normal connection closure'))
-      consoleErr(message, ...rest);
+    printer(...args);
   };
 
-  console.error = outFn;
-  console.log = outFn;
-  console.warn = outFn;
+  console.error = outFn(consoleErr.bind(console));
+  console.log = outFn(consoleLog.bind(console));
+  console.warn = outFn(consoleWarn.bind(console));
 
   try {
     await promisifySubstrate(api, async () => {
@@ -101,7 +100,7 @@
   /* eslint no-async-promise-executor: "off" */
   return new Promise(async (resolve, reject) => {
     try {
-      await transaction.signAndSend(sender, ({ events = [], status }) => {
+      await transaction.signAndSend(sender, ({events = [], status}) => {
         const transactionStatus = getTransactionStatus(events, status);
 
         if (transactionStatus === TransactionStatus.Success) {
@@ -119,8 +118,6 @@
 }
 
 export function submitTransactionExpectFailAsync(sender: IKeyringPair, transaction: SubmittableExtrinsic<ApiTypes>): Promise<EventRecord[]> {
-  const consoleError = console.error;
-  const consoleLog = console.log;
   console.error = () => {};
   console.log = () => {};
 
@@ -129,19 +126,15 @@
     const resolve = (rec: EventRecord[]) => {
       setTimeout(() => {
         res(rec);
-        console.error = consoleError;
-        console.log = consoleLog;
       });
     };
     const reject = (errror: any) => {
       setTimeout(() => {
         rej(errror);
-        console.error = consoleError;
-        console.log = consoleLog;
       });
     };
     try {
-      await transaction.signAndSend(sender, ({ events = [], status }) => {
+      await transaction.signAndSend(sender, ({events = [], status}) => {
         const transactionStatus = getTransactionStatus(events, status);
 
         // console.log('transactionStatus', transactionStatus, 'events', events);
modifiedtests/src/substrate/wait-new-blocks.tsdiffbeforeafterboth
--- a/tests/src/substrate/wait-new-blocks.ts
+++ b/tests/src/substrate/wait-new-blocks.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
+import {ApiPromise} from '@polkadot/api';
 
 /* eslint no-async-promise-executor: "off" */
 export default function waitNewBlocks(api: ApiPromise, blocksCount = 1): Promise<void> {
   const promise = new Promise<void>(async (resolve) => {
-    
+
     const unsubscribe = await api.rpc.chain.subscribeNewHeads(() => {
       if (blocksCount > 0) {
         blocksCount--;
@@ -20,4 +20,4 @@
   });
 
   return promise;
-}
\ No newline at end of file
+}
modifiedtests/src/toggleContractWhiteList.test.tsdiffbeforeafterboth
--- a/tests/src/toggleContractWhiteList.test.ts
+++ b/tests/src/toggleContractWhiteList.test.ts
@@ -5,7 +5,7 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';
+import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';
 import privateKey from './substrate/privateKey';
 import {
   deployFlipper,
modifiedtests/src/transfer.nload.tsdiffbeforeafterboth
--- a/tests/src/transfer.nload.ts
+++ b/tests/src/transfer.nload.ts
@@ -3,12 +3,12 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import privateKey from './substrate/privateKey';
-import usingApi, { submitTransactionAsync } from './substrate/substrate-api';
+import usingApi, {submitTransactionAsync} from './substrate/substrate-api';
 import waitNewBlocks from './substrate/wait-new-blocks';
-import { findUnusedAddresses } from './util/helpers';
+import {findUnusedAddresses} from './util/helpers';
 import * as cluster from 'cluster';
 import os from 'os';
 
@@ -115,4 +115,4 @@
     flushCounterToMaster();
   }, 100);
   interval.unref();
-}
\ No newline at end of file
+}
modifiedtests/src/transfer.test.tsdiffbeforeafterboth
--- a/tests/src/transfer.test.ts
+++ b/tests/src/transfer.test.ts
@@ -3,13 +3,13 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
-import { expect } from 'chai';
-import { alicesPublicKey, bobsPublicKey } from './accounts';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
+import {expect} from 'chai';
+import {alicesPublicKey, bobsPublicKey} from './accounts';
 import getBalance from './substrate/get-balance';
 import privateKey from './substrate/privateKey';
-import { default as usingApi, submitTransactionAsync } from './substrate/substrate-api';
+import {default as usingApi, submitTransactionAsync} from './substrate/substrate-api';
 import {
   burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess,
   destroyCollectionExpectSuccess,
@@ -21,9 +21,9 @@
   addCollectionAdminExpectSuccess,
 } from './util/helpers';
 
-let Alice: IKeyringPair;
-let Bob: IKeyringPair;
-let Charlie: IKeyringPair;
+let alice: IKeyringPair;
+let bob: IKeyringPair;
+let charlie: IKeyringPair;
 
 describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {
   it('Balance transfers and check balance', async () => {
@@ -66,25 +66,25 @@
 
   it('User can transfer owned token', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await transferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 1, 'NFT');
       // fungible
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-      await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+      await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob, 1, 'Fungible');
       // reFungible
       const reFungibleCollectionId = await
       createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+      const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
       await transferExpectSuccess(
         reFungibleCollectionId,
         newReFungibleTokenId,
-        Alice,
-        Bob,
+        alice,
+        bob,
         100,
         'ReFungible',
       );
@@ -93,27 +93,27 @@
 
   it('Collection admin can transfer owned token', async () => {
     await usingApi(async () => {
-      const Alice = privateKey('//Alice');
-      const Bob = privateKey('//Bob');
+      const alice = privateKey('//Alice');
+      const bob = privateKey('//Bob');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
-      const newNftTokenId = await createItemExpectSuccess(Bob, nftCollectionId, 'NFT', Bob.address);
-      await transferExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, 1, 'NFT');
+      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
+      const newNftTokenId = await createItemExpectSuccess(bob, nftCollectionId, 'NFT', bob.address);
+      await transferExpectSuccess(nftCollectionId, newNftTokenId, bob, alice, 1, 'NFT');
       // fungible
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      await addCollectionAdminExpectSuccess(Alice, fungibleCollectionId, Bob);
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible', Bob.address);
-      await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, 1, 'Fungible');
+      await addCollectionAdminExpectSuccess(alice, fungibleCollectionId, bob.address);
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible', bob.address);
+      await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, 1, 'Fungible');
       // reFungible
       const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      await addCollectionAdminExpectSuccess(Alice, reFungibleCollectionId, Bob);
-      const newReFungibleTokenId = await createItemExpectSuccess(Bob, reFungibleCollectionId, 'ReFungible', Bob.address);
+      await addCollectionAdminExpectSuccess(alice, reFungibleCollectionId, bob.address);
+      const newReFungibleTokenId = await createItemExpectSuccess(bob, reFungibleCollectionId, 'ReFungible', bob.address);
       await transferExpectSuccess(
         reFungibleCollectionId,
         newReFungibleTokenId,
-        Bob,
-        Alice,
+        bob,
+        alice,
         100,
         'ReFungible',
       );
@@ -124,108 +124,108 @@
 describe('Negative Integration Test Transfer(recipient, collection_id, item_id, value)', () => {
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
   it('Transfer with not existed collection_id', async () => {
     await usingApi(async (api) => {
       // nft
-      const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await transferExpectFailure(nftCollectionCount + 1, 1, Alice, Bob, 1);
+      const nftCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await transferExpectFailure(nftCollectionCount + 1, 1, alice, bob, 1);
       // fungible
-      const fungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await transferExpectFailure(fungibleCollectionCount + 1, 1, Alice, Bob, 1);
+      const fungibleCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await transferExpectFailure(fungibleCollectionCount + 1, 0, alice, bob, 1);
       // reFungible
-      const reFungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await transferExpectFailure(reFungibleCollectionCount + 1, 1, Alice, Bob, 1);
+      const reFungibleCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await transferExpectFailure(reFungibleCollectionCount + 1, 1, alice, bob, 1);
     });
   });
   it('Transfer with deleted collection_id', async () => {
     // nft
     const nftCollectionId = await createCollectionExpectSuccess();
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
     await destroyCollectionExpectSuccess(nftCollectionId);
-    await transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);
+    await transferExpectFailure(nftCollectionId, newNftTokenId, alice, bob, 1);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
+    const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
     await destroyCollectionExpectSuccess(fungibleCollectionId);
-    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);
+    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, alice, bob, 1);
     // reFungible
     const reFungibleCollectionId = await
     createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+    const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
     await destroyCollectionExpectSuccess(reFungibleCollectionId);
     await transferExpectFailure(
       reFungibleCollectionId,
       newReFungibleTokenId,
-      Alice,
-      Bob,
+      alice,
+      bob,
       1,
     );
   });
   it('Transfer with not existed item_id', async () => {
     // nft
     const nftCollectionId = await createCollectionExpectSuccess();
-    await transferExpectFailure(nftCollectionId, 2, Alice, Bob, 1);
+    await transferExpectFailure(nftCollectionId, 2, alice, bob, 1);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    await transferExpectFailure(fungibleCollectionId, 2, Alice, Bob, 1);
+    await transferExpectFailure(fungibleCollectionId, 2, alice, bob, 1);
     // reFungible
     const reFungibleCollectionId = await
     createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
     await transferExpectFailure(
       reFungibleCollectionId,
       2,
-      Alice,
-      Bob,
+      alice,
+      bob,
       1,
     );
   });
   it('Transfer with deleted item_id', async () => {
     // nft
     const nftCollectionId = await createCollectionExpectSuccess();
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-    await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);
-    await transferExpectFailure(nftCollectionId, newNftTokenId, Alice, Bob, 1);
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+    await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);
+    await transferExpectFailure(nftCollectionId, newNftTokenId, alice, bob, 1);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-    await burnItemExpectSuccess(Alice, fungibleCollectionId, newFungibleTokenId, 10);
-    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1);
+    const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+    await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);
+    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, alice, bob, 1);
     // reFungible
     const reFungibleCollectionId = await
     createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-    await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 100);
+    const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+    await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);
     await transferExpectFailure(
       reFungibleCollectionId,
       newReFungibleTokenId,
-      Alice,
-      Bob,
+      alice,
+      bob,
       1,
     );
   });
   it('Transfer with recipient that is not owner', async () => {
     // nft
     const nftCollectionId = await createCollectionExpectSuccess();
-    const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-    await transferExpectFailure(nftCollectionId, newNftTokenId, Charlie, Bob, 1);
+    const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+    await transferExpectFailure(nftCollectionId, newNftTokenId, charlie, bob, 1);
     // fungible
     const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1);
+    const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+    await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, charlie, bob, 1);
     // reFungible
     const reFungibleCollectionId = await
     createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-    const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+    const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
     await transferExpectFailure(
       reFungibleCollectionId,
       newReFungibleTokenId,
-      Charlie,
-      Bob,
+      charlie,
+      bob,
       1,
     );
   });
modifiedtests/src/transferFrom.test.tsdiffbeforeafterboth
--- a/tests/src/transferFrom.test.ts
+++ b/tests/src/transferFrom.test.ts
@@ -2,12 +2,12 @@
 // This file is subject to the terms and conditions defined in
 // file 'LICENSE', which is part of this source code package.
 //
-import { ApiPromise } from '@polkadot/api';
-import { IKeyringPair } from '@polkadot/types/types';
+import {ApiPromise} from '@polkadot/api';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import { default as usingApi } from './substrate/substrate-api';
+import {default as usingApi} from './substrate/substrate-api';
 import {
   approveExpectFail,
   approveExpectSuccess,
@@ -25,15 +25,15 @@
 const expect = chai.expect;
 
 describe('Integration Test transferFrom(from, recipient, collection_id, item_id, value):', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
@@ -41,28 +41,28 @@
     await usingApi(async () => {
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address);
 
-      await transferFromExpectSuccess(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1, 'NFT');
+      await transferFromExpectSuccess(nftCollectionId, newNftTokenId, bob, alice, charlie, 1, 'NFT');
 
       // fungible
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
-      await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1, 'Fungible');
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);
+      await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1, 'Fungible');
 
       // reFungible
       const reFungibleCollectionId = await
       createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob, 100);
+      const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 100);
       await transferFromExpectSuccess(
         reFungibleCollectionId,
         newReFungibleTokenId,
-        Bob,
-        Alice,
-        Charlie,
+        bob,
+        alice,
+        charlie,
         100,
         'ReFungible',
       );
@@ -70,60 +70,60 @@
   });
 
   it('Should reduce allowance if value is big', async () => {
-    await usingApi(async () => {
+    await usingApi(async (api) => {
       const alice = privateKey('//Alice');
       const bob = privateKey('//Bob');
       const charlie = privateKey('//Charlie');
 
       // fungible
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createFungibleItemExpectSuccess(alice, fungibleCollectionId, { Value: 500000n });
+      const newFungibleTokenId = await createFungibleItemExpectSuccess(alice, fungibleCollectionId, {Value: 500000n});
 
-      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob, 500000n);
+      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address, 500000n);
       await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 500000n, 'Fungible');
-      expect((await getAllowance(fungibleCollectionId, newFungibleTokenId, alice.address, bob.address)).toString()).to.equal('0');
+      expect(await getAllowance(api, fungibleCollectionId, alice.address, bob.address, newFungibleTokenId)).to.equal(0n);
     });
   });
 
   it('can be called by collection owner on non-owned item when OwnerCanTransfer == true', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
 
-    await transferFromExpectSuccess(collectionId, itemId, Alice, Bob, Charlie);
+    await transferFromExpectSuccess(collectionId, itemId, alice, bob, charlie);
   });
 });
 
 describe('Negative Integration Test transferFrom(from, recipient, collection_id, item_id, value):', () => {
-  let Alice: IKeyringPair;
-  let Bob: IKeyringPair;
-  let Charlie: IKeyringPair;
+  let alice: IKeyringPair;
+  let bob: IKeyringPair;
+  let charlie: IKeyringPair;
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('transferFrom for a collection that does not exist', async () => {
     await usingApi(async (api: ApiPromise) => {
       // nft
-      const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await approveExpectFail(nftCollectionCount + 1, 1, Alice, Bob);
+      const nftCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await approveExpectFail(nftCollectionCount + 1, 1, alice, bob);
 
-      await transferFromExpectFail(nftCollectionCount + 1, 1, Bob, Alice, Charlie, 1);
+      await transferFromExpectFail(nftCollectionCount + 1, 1, bob, alice, charlie, 1);
 
       // fungible
-      const fungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await approveExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob);
+      const fungibleCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await approveExpectFail(fungibleCollectionCount + 1, 0, alice, bob);
 
-      await transferFromExpectFail(fungibleCollectionCount + 1, 1, Bob, Alice, Charlie, 1);
+      await transferFromExpectFail(fungibleCollectionCount + 1, 0, bob, alice, charlie, 1);
       // reFungible
-      const reFungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
-      await approveExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob);
+      const reFungibleCollectionCount = (await api.query.common.createdCollectionCount()).toNumber();
+      await approveExpectFail(reFungibleCollectionCount + 1, 1, alice, bob);
 
-      await transferFromExpectFail(reFungibleCollectionCount + 1, 1, Bob, Alice, Charlie, 1);
+      await transferFromExpectFail(reFungibleCollectionCount + 1, 1, bob, alice, charlie, 1);
     });
   });
 
@@ -149,24 +149,24 @@
     await usingApi(async () => {
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
 
-      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);
+      await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 1);
 
       // fungible
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1);
       // reFungible
       const reFungibleCollectionId = await
       createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+      const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
       await transferFromExpectFail(
         reFungibleCollectionId,
         newReFungibleTokenId,
-        Bob,
-        Alice,
-        Charlie,
+        bob,
+        alice,
+        charlie,
         1,
       );
     });
@@ -176,27 +176,27 @@
     await usingApi(async () => {
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address);
 
-      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 2);
+      await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 2);
 
       // fungible
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
-      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 2);
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);
+      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 2);
       // reFungible
       const reFungibleCollectionId = await
       createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
+      const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address);
       await transferFromExpectFail(
         reFungibleCollectionId,
         newReFungibleTokenId,
-        Bob,
-        Alice,
-        Charlie,
+        bob,
+        alice,
+        charlie,
         2,
       );
     });
@@ -204,13 +204,13 @@
 
   it('execute transferFrom from account that is not owner of collection', async () => {
     await usingApi(async () => {
-      const Dave = privateKey('//Dave');
+      const dave = privateKey('//Dave');
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
       try {
-        await approveExpectFail(nftCollectionId, newNftTokenId, Dave, Bob);
-        await transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1);
+        await approveExpectFail(nftCollectionId, newNftTokenId, dave, bob);
+        await transferFromExpectFail(nftCollectionId, newNftTokenId, dave, alice, charlie, 1);
       } catch (e) {
         // tslint:disable-next-line:no-unused-expression
         expect(e).to.be.exist;
@@ -220,10 +220,10 @@
 
       // fungible
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
       try {
-        await approveExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Bob);
-        await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Dave, Alice, Charlie, 1);
+        await approveExpectFail(fungibleCollectionId, newFungibleTokenId, dave, bob);
+        await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, dave, alice, charlie, 1);
       } catch (e) {
         // tslint:disable-next-line:no-unused-expression
         expect(e).to.be.exist;
@@ -231,83 +231,83 @@
       // reFungible
       const reFungibleCollectionId = await
       createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
+      const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
       try {
-        await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Bob);
-        await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Dave, Alice, Charlie, 1);
+        await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, dave, bob);
+        await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, dave, alice, charlie, 1);
       } catch (e) {
         // tslint:disable-next-line:no-unused-expression
         expect(e).to.be.exist;
       }
     });
   });
-  it( 'transferFrom burnt token before approve NFT', async () => {
+  it('transferFrom burnt token before approve NFT', async () => {
     await usingApi(async () => {
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);
-      await approveExpectFail(nftCollectionId, newNftTokenId, Alice, Bob);
-      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);
+      await approveExpectFail(nftCollectionId, newNftTokenId, alice, bob);
+      await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 1);
     });
   });
-  it( 'transferFrom burnt token before approve Fungible', async () => {
+  it('transferFrom burnt token before approve Fungible', async () => {
     await usingApi(async () => {
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-      await burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);
-      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
-      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+      await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);
+      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);
+      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1);
 
     });
   });
-  it( 'transferFrom burnt token before approve ReFungible', async () => {
+  it('transferFrom burnt token before approve ReFungible', async () => {
     await usingApi(async () => {
       const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-      await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 100);
-      await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
-      await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);
+      const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+      await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);
+      await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, alice, bob);
+      await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, bob, alice, charlie, 1);
 
     });
   });
 
-  it( 'transferFrom burnt token after approve NFT', async () => {
+  it('transferFrom burnt token after approve NFT', async () => {
     await usingApi(async () => {
       // nft
       const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
-      await approveExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob);
-      await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);
-      await transferFromExpectFail(nftCollectionId, newNftTokenId, Bob, Alice, Charlie, 1);
+      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
+      await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address);
+      await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1);
+      await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 1);
     });
   });
-  it( 'transferFrom burnt token after approve Fungible', async () => {
+  it('transferFrom burnt token after approve Fungible', async () => {
     await usingApi(async () => {
       const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-      const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
-      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob);
-      await burnItemExpectSuccess(Alice, fungibleCollectionId, 1, 10);
-      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, Bob, Alice, Charlie, 1);
+      const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
+      await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address);
+      await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10);
+      await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1);
 
     });
   });
-  it( 'transferFrom burnt token after approve ReFungible', async () => {
+  it('transferFrom burnt token after approve ReFungible', async () => {
     await usingApi(async () => {
       const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
-      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, Alice, Bob);
-      await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 100);
-      await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, Bob, Alice, Charlie, 1);
+      const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible');
+      await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address);
+      await burnItemExpectSuccess(alice, reFungibleCollectionId, newReFungibleTokenId, 100);
+      await transferFromExpectFail(reFungibleCollectionId, newReFungibleTokenId, bob, alice, charlie, 1);
 
     });
   });
 
   it('fails when called by collection owner on non-owned item when OwnerCanTransfer == false', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Bob.address);
-    await setCollectionLimitsExpectSuccess(Alice, collectionId, { ownerCanTransfer: false });
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);
+    await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: false});
 
-    await transferFromExpectFail(collectionId, itemId, Alice, Bob, Charlie);
+    await transferFromExpectFail(collectionId, itemId, alice, bob, charlie);
   });
 });
deletedtests/src/types.tsdiffbeforeafterboth
--- a/tests/src/types.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// This file is subject to the terms and conditions defined in
-// file 'LICENSE', which is part of this source code package.
-//
-
-import BN from 'bn.js';
-
-export interface ICollectionInterface {
-  access: string;
-  id: number;
-  decimalPoints: BN;
-  // constOnChainSchema
-  description: [BN, BN]; // utf16
-  isReFungible: boolean;
-  limits: {
-    accountTokenOwnershipLimit: number;
-    sponsoredDataSize: number;
-    sponsoredDataRateLimit?: number,
-    tokenLimit: number;
-    sponsorTimeout: number;
-    ownerCanTransfer: boolean;
-    ownerCanDestroy: boolean;
-  };
-  mintMode: boolean;
-  mode: {
-    nft: null;
-  };
-  name: [BN, BN]; // utf16
-  offchainSchema: [Uint8Array];
-  owner: [Uint8Array];
-  schemaVersion: string;
-  // prefix
-  // sponsor
-  // tokenPrefix
-  // unconfirmedSponsor
-  // variableOnChainSchema
-}
modifiedtests/src/util/contracthelpers.tsdiffbeforeafterboth
--- a/tests/src/util/contracthelpers.ts
+++ b/tests/src/util/contracthelpers.ts
@@ -5,16 +5,15 @@
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import { submitTransactionAsync, submitTransactionExpectFailAsync } from '../substrate/substrate-api';
+import {submitTransactionAsync, submitTransactionExpectFailAsync} from '../substrate/substrate-api';
 import fs from 'fs';
-import { Abi, CodePromise, ContractPromise as Contract } from '@polkadot/api-contract';
-import { IKeyringPair } from '@polkadot/types/types';
-import { ApiPromise, Keyring } from '@polkadot/api';
+import {Abi, CodePromise, ContractPromise as Contract} from '@polkadot/api-contract';
+import {IKeyringPair} from '@polkadot/types/types';
+import {ApiPromise, Keyring} from '@polkadot/api';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
-import { BigNumber } from 'bignumber.js';
-import { findUnusedAddress, getGenericResult } from '../util/helpers';
+import {findUnusedAddress, getGenericResult} from '../util/helpers';
 
 const value = 0;
 const gasLimit = '200000000000';
@@ -40,11 +39,10 @@
   const deployer = await findUnusedAddress(api);
 
   // Transfer balance to it
-  const keyring = new Keyring({ type: 'sr25519' });
+  const keyring = new Keyring({type: 'sr25519'});
   const alice = keyring.addFromUri('//Alice');
-  let amount = new BigNumber(endowment);
-  amount = amount.plus(100e15);
-  const tx = api.tx.balances.transfer(deployer.address, amount.toFixed());
+  const amount = BigInt(endowment) + 10n**15n;
+  const tx = api.tx.balances.transfer(deployer.address, amount);
   await submitTransactionAsync(alice, tx);
 
   return deployer;
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
before · tests/src/util/helpers.ts
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import { ApiPromise, Keyring } from '@polkadot/api';7import type { AccountId, EventRecord } from '@polkadot/types/interfaces';8import { IKeyringPair } from '@polkadot/types/types';9import { evmToAddress } from '@polkadot/util-crypto';10import { BigNumber } from 'bignumber.js';11import BN from 'bn.js';12import chai from 'chai';13import chaiAsPromised from 'chai-as-promised';14import { alicesPublicKey } from '../accounts';15import privateKey from '../substrate/privateKey';16import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from '../substrate/substrate-api';17import { ICollectionInterface } from '../types';18import { hexToStr, strToUTF16, utf16ToStr } from './util';1920chai.use(chaiAsPromised);21const expect = chai.expect;2223export type CrossAccountId = {24  substrate: string,25} | {26  ethereum: string,27};28export function normalizeAccountId(input: string | AccountId | CrossAccountId | IKeyringPair): CrossAccountId {29  if (typeof input === 'string')30    return { substrate: input };31  if ('address' in input) {32    return { substrate: input.address };33  }34  if ('ethereum' in input) {35    input.ethereum = input.ethereum.toLowerCase();36    return input;37  }38  if ('substrate' in input) {39    return input;40  }4142  // AccountId43  return {substrate: input.toString()};44}45export function toSubstrateAddress(input: string | CrossAccountId | IKeyringPair): string {46  input = normalizeAccountId(input);47  if ('substrate' in input) {48    return input.substrate;49  } else {50    return evmToAddress(input.ethereum);51  }52}5354export const U128_MAX = (1n << 128n) - 1n;5556const MICROUNIQUE = 1_000_000_000n;57const MILLIUNIQUE = 1_000n * MICROUNIQUE;58const CENTIUNIQUE = 10n * MILLIUNIQUE;59export const UNIQUE = 100n * CENTIUNIQUE;6061type GenericResult = {62  success: boolean,63};6465interface CreateCollectionResult {66  success: boolean;67  collectionId: number;68}6970interface CreateItemResult {71  success: boolean;72  collectionId: number;73  itemId: number;74  recipient?: CrossAccountId;75}7677interface TransferResult {78  success: boolean;79  collectionId: number;80  itemId: number;81  sender?: CrossAccountId;82  recipient?: CrossAccountId;83  value: bigint;84}8586interface IReFungibleOwner {87  fraction: BN;88  owner: number[];89}9091interface ITokenDataType {92  owner: IKeyringPair;93  constData: number[];94  variableData: number[];95}9697interface IGetMessage {98  checkMsgNftMethod: string;99  checkMsgTrsMethod: string;100  checkMsgSysMethod: string;101}102103export interface IFungibleTokenDataType {104  value: number;105}106107export interface IChainLimits {108  collectionNumbersLimit: number;109	accountTokenOwnershipLimit: number;110	collectionsAdminsLimit: number;111	customDataLimit: number;112	nftSponsorTransferTimeout: number;113	fungibleSponsorTransferTimeout: number;114	refungibleSponsorTransferTimeout: number;115	offchainSchemaLimit: number;116	variableOnChainSchemaLimit: number;117	constOnChainSchemaLimit: number;118}119120export interface IReFungibleTokenDataType {121  owner: IReFungibleOwner[];122  constData: number[];123  variableData: number[];124}125126export function nftEventMessage(events: EventRecord[]): IGetMessage {127  let checkMsgNftMethod = '';128  let checkMsgTrsMethod = '';129  let checkMsgSysMethod = '';130  events.forEach(({ event: { method, section } }) => {131    if (section === 'nft') {132      checkMsgNftMethod = method;133    } else if (section === 'treasury') {134      checkMsgTrsMethod = method;135    } else if (section === 'system') {136      checkMsgSysMethod = method;137    } else { return null; }138  });139  const result: IGetMessage = {140    checkMsgNftMethod,141    checkMsgTrsMethod,142    checkMsgSysMethod,143  };144  return result;145}146147export function getGenericResult(events: EventRecord[]): GenericResult {148  const result: GenericResult = {149    success: false,150  };151  events.forEach(({ event: { method } }) => {152    // console.log(`    ${phase}: ${section}.${method}:: ${data}`);153    if (method === 'ExtrinsicSuccess') {154      result.success = true;155    }156  });157  return result;158}159160161162export function getCreateCollectionResult(events: EventRecord[]): CreateCollectionResult {163  let success = false;164  let collectionId = 0;165  events.forEach(({ event: { data, method, section } }) => {166    // console.log(`    ${phase}: ${section}.${method}:: ${data}`);167    if (method == 'ExtrinsicSuccess') {168      success = true;169    } else if ((section == 'nft') && (method == 'CollectionCreated')) {170      collectionId = parseInt(data[0].toString());171    }172  });173  const result: CreateCollectionResult = {174    success,175    collectionId,176  };177  return result;178}179180export function getCreateItemResult(events: EventRecord[]): CreateItemResult {181  let success = false;182  let collectionId = 0;183  let itemId = 0;184  let recipient;185  events.forEach(({ event: { data, method, section } }) => {186    // console.log(`    ${phase}: ${section}.${method}:: ${data}`);187    if (method == 'ExtrinsicSuccess') {188      success = true;189    } else if ((section == 'nft') && (method == 'ItemCreated')) {190      collectionId = parseInt(data[0].toString());191      itemId = parseInt(data[1].toString());192      recipient = data[2].toJSON();193    }194  });195  const result: CreateItemResult = {196    success,197    collectionId,198    itemId,199    recipient,200  };201  return result;202}203204export function getTransferResult(events: EventRecord[]): TransferResult {205  const result: TransferResult = {206    success: false,207    collectionId: 0,208    itemId: 0,209    value: 0n,210  };211212  events.forEach(({ event: { data, method, section } }) => {213    if (method === 'ExtrinsicSuccess') {214      result.success = true;215    } else if (section === 'nft' && method === 'Transfer') {216      result.collectionId = +data[0].toString();217      result.itemId = +data[1].toString();218      result.sender = data[2].toJSON() as CrossAccountId;219      result.recipient = data[3].toJSON() as CrossAccountId;220      result.value = BigInt(data[4].toString());221    }222  });223224  return result;225}226227interface Nft {228  type: 'NFT';229}230231interface Fungible {232  type: 'Fungible';233  decimalPoints: number;234}235236interface ReFungible {237  type: 'ReFungible';238}239240type CollectionMode = Nft | Fungible | ReFungible;241242export type CreateCollectionParams = {243  mode: CollectionMode,244  name: string,245  description: string,246  tokenPrefix: string,247};248249const defaultCreateCollectionParams: CreateCollectionParams = {250  description: 'description',251  mode: { type: 'NFT' },252  name: 'name',253  tokenPrefix: 'prefix',254};255256export async function createCollectionExpectSuccess(params: Partial<CreateCollectionParams> = {}): Promise<number> {257  const { name, description, mode, tokenPrefix } = { ...defaultCreateCollectionParams, ...params };258259  let collectionId = 0;260  await usingApi(async (api) => {261    // Get number of collections before the transaction262    const AcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);263264    // Run the CreateCollection transaction265    const alicePrivateKey = privateKey('//Alice');266267    let modeprm = {};268    if (mode.type === 'NFT') {269      modeprm = { nft: null };270    } else if (mode.type === 'Fungible') {271      modeprm = { fungible: mode.decimalPoints };272    } else if (mode.type === 'ReFungible') {273      modeprm = { refungible: null };274    }275276    const tx = api.tx.nft.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm);277    const events = await submitTransactionAsync(alicePrivateKey, tx);278    const result = getCreateCollectionResult(events);279280    // Get number of collections after the transaction281    const BcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);282283    // Get the collection284    const collection: any = (await api.query.nft.collectionById(result.collectionId) as any).toJSON();285286    // What to expect287    // tslint:disable-next-line:no-unused-expression288    expect(result.success).to.be.true;289    expect(result.collectionId).to.be.equal(BcollectionCount);290    // tslint:disable-next-line:no-unused-expression291    expect(collection).to.be.not.null;292    expect(BcollectionCount).to.be.equal(AcollectionCount + 1, 'Error: NFT collection NOT created.');293    expect(collection.owner).to.be.equal(toSubstrateAddress(alicesPublicKey));294    expect(utf16ToStr(collection.name)).to.be.equal(name);295    expect(utf16ToStr(collection.description)).to.be.equal(description);296    expect(hexToStr(collection.tokenPrefix)).to.be.equal(tokenPrefix);297298    collectionId = result.collectionId;299  });300301  return collectionId;302}303304export async function createCollectionExpectFailure(params: Partial<CreateCollectionParams> = {}) {305  const { name, description, mode, tokenPrefix } = { ...defaultCreateCollectionParams, ...params };306307  let modeprm = {};308  if (mode.type === 'NFT') {309    modeprm = { nft: null };310  } else if (mode.type === 'Fungible') {311    modeprm = { fungible: mode.decimalPoints };312  } else if (mode.type === 'ReFungible') {313    modeprm = { refungible: null };314  }315316  await usingApi(async (api) => {317    // Get number of collections before the transaction318    const AcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString());319320    // Run the CreateCollection transaction321    const alicePrivateKey = privateKey('//Alice');322    const tx = api.tx.nft.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm);323    const events = await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;324    const result = getCreateCollectionResult(events);325326    // Get number of collections after the transaction327    const BcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString());328329    // What to expect330    // tslint:disable-next-line:no-unused-expression331    expect(result.success).to.be.false;332    expect(BcollectionCount).to.be.equal(AcollectionCount, 'Error: Collection with incorrect data created.');333  });334}335336export async function findUnusedAddress(api: ApiPromise, seedAddition = ''): Promise<IKeyringPair> {337  let bal = new BigNumber(0);338  let unused;339  do {340    const randomSeed = 'seed' + Math.floor(Math.random() * Math.floor(10000)) + seedAddition;341    const keyring = new Keyring({ type: 'sr25519' });342    unused = keyring.addFromUri(`//${randomSeed}`);343    bal = new BigNumber((await api.query.system.account(unused.address)).data.free.toString());344  } while (bal.toFixed() != '0');345  return unused;346}347348export async function getAllowance(collectionId: number, tokenId: number, owner: string, approved: string) {349  return await usingApi(async (api) => {350    const bn = await api.query.nft.allowances(collectionId, [tokenId, owner, approved]) as unknown as BN;351    return BigInt(bn.toString());352  });353}354355export function findUnusedAddresses(api: ApiPromise, amount: number): Promise<IKeyringPair[]> {356  return Promise.all(new Array(amount).fill(null).map(() => findUnusedAddress(api, '_' + Date.now())));357}358359export async function findNotExistingCollection(api: ApiPromise): Promise<number> {360  const totalNumber = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10) as unknown as number;361  const newCollection: number = totalNumber + 1;362  return newCollection;363}364365function getDestroyResult(events: EventRecord[]): boolean {366  let success = false;367  events.forEach(({ event: { method } }) => {368    if (method == 'ExtrinsicSuccess') {369      success = true;370    }371  });372  return success;373}374375export async function destroyCollectionExpectFailure(collectionId: number, senderSeed = '//Alice') {376  await usingApi(async (api) => {377    // Run the DestroyCollection transaction378    const alicePrivateKey = privateKey(senderSeed);379    const tx = api.tx.nft.destroyCollection(collectionId);380    await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;381  });382}383384export async function destroyCollectionExpectSuccess(collectionId: number, senderSeed = '//Alice') {385  await usingApi(async (api) => {386    // Run the DestroyCollection transaction387    const alicePrivateKey = privateKey(senderSeed);388    const tx = api.tx.nft.destroyCollection(collectionId);389    const events = await submitTransactionAsync(alicePrivateKey, tx);390    const result = getDestroyResult(events);391392    // Get the collection393    const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();394395    // What to expect396    expect(result).to.be.true;397    expect(collection).to.be.null;398  });399}400401export async function queryCollectionLimits(collectionId: number) {402  return await usingApi(async (api) => {403    return ((await api.query.nft.collectionById(collectionId)).toJSON() as any).limits;404  });405}406407export async function setCollectionLimitsExpectSuccess(sender: IKeyringPair, collectionId: number, limits: any) {408  await usingApi(async (api) => {409    const oldLimits = await queryCollectionLimits(collectionId);410    const newLimits = { ...oldLimits as any, ...limits };411    const tx = api.tx.nft.setCollectionLimits(collectionId, newLimits);412    const events = await submitTransactionAsync(sender, tx);413    const result = getGenericResult(events);414415    expect(result.success).to.be.true;416  });417}418419export async function setCollectionLimitsExpectFailure(sender: IKeyringPair, collectionId: number, limits: any) {420  await usingApi(async (api) => {421    const oldLimits = await queryCollectionLimits(collectionId);422    const newLimits = { ...oldLimits as any, ...limits };423    const tx = api.tx.nft.setCollectionLimits(collectionId, newLimits);424    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;425    const result = getGenericResult(events);426427    expect(result.success).to.be.false;428  });429}430431export async function setCollectionSponsorExpectSuccess(collectionId: number, sponsor: string, sender = '//Alice') {432  await usingApi(async (api) => {433434    // Run the transaction435    const senderPrivateKey = privateKey(sender);436    const tx = api.tx.nft.setCollectionSponsor(collectionId, sponsor);437    const events = await submitTransactionAsync(senderPrivateKey, tx);438    const result = getGenericResult(events);439440    // Get the collection441    const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();442443    // What to expect444    expect(result.success).to.be.true;445    expect(collection.sponsorship).to.deep.equal({446      unconfirmed: sponsor,447    });448  });449}450451export async function removeCollectionSponsorExpectSuccess(collectionId: number, sender = '//Alice') {452  await usingApi(async (api) => {453454    // Run the transaction455    const alicePrivateKey = privateKey(sender);456    const tx = api.tx.nft.removeCollectionSponsor(collectionId);457    const events = await submitTransactionAsync(alicePrivateKey, tx);458    const result = getGenericResult(events);459460    // Get the collection461    const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();462463    // What to expect464    expect(result.success).to.be.true;465    expect(collection.sponsorship).to.be.deep.equal({ disabled: null });466  });467}468469export async function removeCollectionSponsorExpectFailure(collectionId: number, senderSeed = '//Alice') {470  await usingApi(async (api) => {471472    // Run the transaction473    const alicePrivateKey = privateKey(senderSeed);474    const tx = api.tx.nft.removeCollectionSponsor(collectionId);475    await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;476  });477}478479export async function setCollectionSponsorExpectFailure(collectionId: number, sponsor: string, senderSeed = '//Alice') {480  await usingApi(async (api) => {481482    // Run the transaction483    const alicePrivateKey = privateKey(senderSeed);484    const tx = api.tx.nft.setCollectionSponsor(collectionId, sponsor);485    await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;486  });487}488489export async function confirmSponsorshipExpectSuccess(collectionId: number, senderSeed = '//Alice') {490  await usingApi(async (api) => {491492    // Run the transaction493    const sender = privateKey(senderSeed);494    const tx = api.tx.nft.confirmSponsorship(collectionId);495    const events = await submitTransactionAsync(sender, tx);496    const result = getGenericResult(events);497498    // Get the collection499    const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();500501    // What to expect502    expect(result.success).to.be.true;503    expect(collection.sponsorship).to.be.deep.equal({504      confirmed: sender.address,505    });506  });507}508509510export async function confirmSponsorshipExpectFailure(collectionId: number, senderSeed = '//Alice') {511  await usingApi(async (api) => {512513    // Run the transaction514    const sender = privateKey(senderSeed);515    const tx = api.tx.nft.confirmSponsorship(collectionId);516    await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;517  });518}519520export async function setMetadataUpdatePermissionFlagExpectSuccess(sender: IKeyringPair, collectionId: number, flag: string) {521522  await usingApi(async (api) => {523    const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag);524    const events = await submitTransactionAsync(sender, tx);525    const result = getGenericResult(events);526527    expect(result.success).to.be.true;528  });529}530531export async function setMetadataUpdatePermissionFlagExpectFailure(sender: IKeyringPair, collectionId: number, flag: string) {532533  await usingApi(async (api) => {534    const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag);535    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;536    const result = getGenericResult(events);537538    expect(result.success).to.be.false;539  });540}541542export async function enableContractSponsoringExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, enable: boolean) {543  await usingApi(async (api) => {544    const tx = api.tx.nft.enableContractSponsoring(contractAddress, enable);545    const events = await submitTransactionAsync(sender, tx);546    const result = getGenericResult(events);547548    expect(result.success).to.be.true;549  });550}551552export async function enableContractSponsoringExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, enable: boolean) {553  await usingApi(async (api) => {554    const tx = api.tx.nft.enableContractSponsoring(contractAddress, enable);555    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;556    const result = getGenericResult(events);557558    expect(result.success).to.be.false;559  });560}561562export async function setTransferFlagExpectSuccess(sender: IKeyringPair, collectionId: number, enabled: boolean) {563564  await usingApi(async (api) => {565566    const tx = api.tx.nft.setTransfersEnabledFlag (collectionId, enabled);567    const events = await submitTransactionAsync(sender, tx);568    const result = getGenericResult(events);569570    expect(result.success).to.be.true;571  });572}573574export async function setTransferFlagExpectFailure(sender: IKeyringPair, collectionId: number, enabled: boolean) {575576  await usingApi(async (api) => {577578    const tx = api.tx.nft.setTransfersEnabledFlag (collectionId, enabled);579    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;580    const result = getGenericResult(events);581582    expect(result.success).to.be.false;583  });584}585586export async function setContractSponsoringRateLimitExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, rateLimit: number) {587  await usingApi(async (api) => {588    const tx = api.tx.nft.setContractSponsoringRateLimit(contractAddress, rateLimit);589    const events = await submitTransactionAsync(sender, tx);590    const result = getGenericResult(events);591592    expect(result.success).to.be.true;593  });594}595596export async function setContractSponsoringRateLimitExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, rateLimit: number) {597  await usingApi(async (api) => {598    const tx = api.tx.nft.setContractSponsoringRateLimit(contractAddress, rateLimit);599    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;600    const result = getGenericResult(events);601602    expect(result.success).to.be.false;603  });604}605606export async function toggleContractWhitelistExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, value = true) {607  await usingApi(async (api) => {608    const tx = api.tx.nft.toggleContractWhiteList(contractAddress, value);609    const events = await submitTransactionAsync(sender, tx);610    const result = getGenericResult(events);611612    expect(result.success).to.be.true;613  });614}615616export async function isWhitelistedInContract(contractAddress: AccountId | string, user: string) {617  let whitelisted = false;618  await usingApi(async (api) => {619    whitelisted = (await api.query.nft.contractWhiteList(contractAddress, user)).toJSON() as boolean;620  });621  return whitelisted;622}623624export async function addToContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {625  await usingApi(async (api) => {626    const tx = api.tx.nft.addToContractWhiteList(contractAddress.toString(), user.toString());627    const events = await submitTransactionAsync(sender, tx);628    const result = getGenericResult(events);629630    expect(result.success).to.be.true;631  });632}633634export async function removeFromContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {635  await usingApi(async (api) => {636    const tx = api.tx.nft.removeFromContractWhiteList(contractAddress.toString(), user.toString());637    const events = await submitTransactionAsync(sender, tx);638    const result = getGenericResult(events);639640    expect(result.success).to.be.true;641  });642}643644export async function removeFromContractWhiteListExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {645  await usingApi(async (api) => {646    const tx = api.tx.nft.removeFromContractWhiteList(contractAddress.toString(), user.toString());647    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;648    const result = getGenericResult(events);649650    expect(result.success).to.be.false;651  });652}653654export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {655  await usingApi(async (api) => {656    const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));657    const events = await submitTransactionAsync(sender, tx);658    const result = getGenericResult(events);659660    expect(result.success).to.be.true;661  });662}663664export async function setVariableMetaDataExpectFailure(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {665  await usingApi(async (api) => {666    const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));667    await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;668  });669}670671export async function setOffchainSchemaExpectSuccess(sender: IKeyringPair, collectionId: number, data: number[]) {672  await usingApi(async (api) => {673    const tx = api.tx.nft.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));674    const events = await submitTransactionAsync(sender, tx);675    const result = getGenericResult(events);676677    expect(result.success).to.be.true;678  });679}680681export async function setOffchainSchemaExpectFailure(sender: IKeyringPair, collectionId: number, data: number[]) {682  await usingApi(async (api) => {683    const tx = api.tx.nft.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));684    await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;685  });686}687688export interface CreateFungibleData {689  readonly Value: bigint;690}691692export interface CreateReFungibleData { }693export interface CreateNftData { }694695export type CreateItemData = {696  NFT: CreateNftData;697} | {698  Fungible: CreateFungibleData;699} | {700  ReFungible: CreateReFungibleData;701};702703export async function burnItemExpectSuccess(sender: IKeyringPair, collectionId: number, tokenId: number, value = 1) {704  await usingApi(async (api) => {705    const tx = api.tx.nft.burnItem(collectionId, tokenId, value);706    const events = await submitTransactionAsync(sender, tx);707    const result = getGenericResult(events);708    // Get the item709    const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();710    // What to expect711    // tslint:disable-next-line:no-unused-expression712    expect(result.success).to.be.true;713    // tslint:disable-next-line:no-unused-expression714    expect(item).to.be.null;715  });716}717718export async function719approveExpectSuccess(720  collectionId: number,721  tokenId: number, owner: IKeyringPair, approved: IKeyringPair | CrossAccountId | string, amount: number | bigint = 1,722) {723  await usingApi(async (api: ApiPromise) => {724    approved = normalizeAccountId(approved);725    const allowanceBefore =726      await api.query.nft.allowances(collectionId, [tokenId, owner.address, toSubstrateAddress(approved)]) as unknown as BN;727    const approveNftTx = api.tx.nft.approve(approved, collectionId, tokenId, amount);728    const events = await submitTransactionAsync(owner, approveNftTx);729    const result = getCreateItemResult(events);730    // tslint:disable-next-line:no-unused-expression731    expect(result.success).to.be.true;732    const allowanceAfter =733      await api.query.nft.allowances(collectionId, [tokenId, owner.address, toSubstrateAddress(approved)]) as unknown as BN;734    expect(allowanceAfter.sub(allowanceBefore).toString()).to.be.equal(amount.toString());735  });736}737738export async function739transferFromExpectSuccess(740  collectionId: number,741  tokenId: number,742  accountApproved: IKeyringPair,743  accountFrom: IKeyringPair | CrossAccountId,744  accountTo: IKeyringPair | CrossAccountId,745  value: number | bigint = 1,746  type = 'NFT',747) {748  await usingApi(async (api: ApiPromise) => {749    const to = normalizeAccountId(accountTo);750    let balanceBefore = new BN(0);751    if (type === 'Fungible') {752      balanceBefore = await api.query.nft.balance(collectionId, toSubstrateAddress(to)) as unknown as BN;753    }754    const transferFromTx = api.tx.nft.transferFrom(normalizeAccountId(accountFrom), to, collectionId, tokenId, value);755    const events = await submitTransactionAsync(accountApproved, transferFromTx);756    const result = getCreateItemResult(events);757    // tslint:disable-next-line:no-unused-expression758    expect(result.success).to.be.true;759    if (type === 'NFT') {760      const nftItemData = (await api.query.nft.nftItemList(collectionId, tokenId) as any).toJSON() as ITokenDataType;761      expect(nftItemData.owner).to.be.deep.equal(to);762    }763    if (type === 'Fungible') {764      const balanceAfter = (await api.query.nft.fungibleItemList(collectionId, toSubstrateAddress(to)) as any).value as unknown as BN;765      expect(balanceAfter.sub(balanceBefore).toString()).to.be.equal(value.toString());766    }767    if (type === 'ReFungible') {768      const nftItemData =769        (await api.query.nft.reFungibleItemList(collectionId, tokenId) as any).toJSON() as IReFungibleTokenDataType;770      expect(nftItemData.owner[0].owner).to.be.deep.equal(normalizeAccountId(to));771      expect(nftItemData.owner[0].fraction).to.be.equal(value);772    }773  });774}775776export async function777transferFromExpectFail(778  collectionId: number,779  tokenId: number,780  accountApproved: IKeyringPair,781  accountFrom: IKeyringPair,782  accountTo: IKeyringPair,783  value: number | bigint = 1,784) {785  await usingApi(async (api: ApiPromise) => {786    const transferFromTx = api.tx.nft.transferFrom(normalizeAccountId(accountFrom.address), normalizeAccountId(accountTo.address), collectionId, tokenId, value);787    const events = await expect(submitTransactionExpectFailAsync(accountApproved, transferFromTx)).to.be.rejected;788    const result = getCreateCollectionResult(events);789    // tslint:disable-next-line:no-unused-expression790    expect(result.success).to.be.false;791  });792}793794/* eslint no-async-promise-executor: "off" */795async function getBlockNumber(api: ApiPromise): Promise<number> {796  return new Promise<number>(async (resolve) => {797    const unsubscribe = await api.rpc.chain.subscribeNewHeads((head) => {798      unsubscribe();799      resolve(head.number.toNumber());800    });801  });802}803804export async function addCollectionAdminExpectSuccess(sender: IKeyringPair, collectionId: number, address: IKeyringPair) {805  await usingApi(async (api) => {806    const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(address.address));807    const events = await submitTransactionAsync(sender, changeAdminTx);808    const result = getCreateCollectionResult(events);809    expect(result.success).to.be.true;810  });811}812813export async function814getFreeBalance(account: IKeyringPair) : Promise<bigint>815{816  let balance = 0n;817  await usingApi(async (api) => {818    balance = BigInt((await api.query.system.account(account.address)).data.free.toString());819  });820821  return balance;822}823824export async function825scheduleTransferExpectSuccess(826  collectionId: number,827  tokenId: number,828  sender: IKeyringPair,829  recipient: IKeyringPair,830  value: number | bigint = 1,831  blockTimeMs: number,832  blockSchedule: number,833) {834  await usingApi(async (api: ApiPromise) => {835    const blockNumber: number | undefined = await getBlockNumber(api);836    const expectedBlockNumber = blockNumber + blockSchedule;837838    expect(blockNumber).to.be.greaterThan(0);839    const transferTx = await api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);840    const scheduleTx = await api.tx.scheduler.schedule(expectedBlockNumber, null, 0, transferTx);841842    await submitTransactionAsync(sender, scheduleTx);843844    const recipientBalanceBefore = new BigNumber((await api.query.system.account(recipient.address)).data.free.toString());845846    const nftItemDataBefore = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON() as any as ITokenDataType;847    expect(toSubstrateAddress(nftItemDataBefore.owner)).to.be.equal(sender.address);848849    // sleep for 4 blocks850    await new Promise(resolve => setTimeout(resolve, blockTimeMs * (blockSchedule + 1)));851852    const recipientBalanceAfter = new BigNumber((await api.query.system.account(recipient.address)).data.free.toString());853854    const nftItemData = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON() as unknown as ITokenDataType;855    expect(toSubstrateAddress(nftItemData.owner)).to.be.equal(recipient.address);856    expect(recipientBalanceAfter.toNumber()).to.be.equal(recipientBalanceBefore.toNumber());857  });858}859860861export async function862transferExpectSuccess(863  collectionId: number,864  tokenId: number,865  sender: IKeyringPair,866  recipient: IKeyringPair | CrossAccountId,867  value: number | bigint = 1,868  type = 'NFT',869) {870  await usingApi(async (api: ApiPromise) => {871    const to = normalizeAccountId(recipient);872873    let balanceBefore = new BN(0);874    if (type === 'Fungible') {875      balanceBefore = await api.query.nft.balance(collectionId, toSubstrateAddress(to)) as unknown as BN;876    }877    const transferTx = api.tx.nft.transfer(to, collectionId, tokenId, value);878    const events = await submitTransactionAsync(sender, transferTx);879    const result = getTransferResult(events);880    // tslint:disable-next-line:no-unused-expression881    expect(result.success).to.be.true;882    expect(result.collectionId).to.be.equal(collectionId);883    expect(result.itemId).to.be.equal(tokenId);884    expect(result.sender).to.be.deep.equal(normalizeAccountId(sender.address));885    expect(result.recipient).to.be.deep.equal(to);886    expect(result.value.toString()).to.be.equal(value.toString());887    if (type === 'NFT') {888      const nftItemData = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON() as unknown as ITokenDataType;889      expect(nftItemData.owner).to.be.deep.equal(to);890    }891    if (type === 'Fungible') {892      const balanceAfter = (await api.query.nft.fungibleItemList(collectionId, toSubstrateAddress(to)) as any).value as unknown as BN;893      expect(balanceAfter.sub(balanceBefore).toString()).to.be.equal(value.toString());894    }895    if (type === 'ReFungible') {896      const nftItemData =897        (await api.query.nft.reFungibleItemList(collectionId, tokenId)).toJSON() as unknown as IReFungibleTokenDataType;898      const expectedOwner = toSubstrateAddress(to);899      const ownerIndex = nftItemData.owner.findIndex(v => toSubstrateAddress(v.owner as any as string) == expectedOwner);900      expect(ownerIndex).to.not.equal(-1);901      expect(nftItemData.owner[ownerIndex].owner).to.be.deep.equal(normalizeAccountId(to));902      expect(nftItemData.owner[ownerIndex].fraction).to.be.greaterThanOrEqual(value as number);903    }904  });905}906907export async function908transferExpectFailure(909  collectionId: number,910  tokenId: number,911  sender: IKeyringPair,912  recipient: IKeyringPair,913  value: number | bigint = 1,914) {915  await usingApi(async (api: ApiPromise) => {916    const transferTx = api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);917    const events = await expect(submitTransactionExpectFailAsync(sender, transferTx)).to.be.rejected;918    if (events && Array.isArray(events)) {919      const result = getCreateCollectionResult(events);920      // tslint:disable-next-line:no-unused-expression921      expect(result.success).to.be.false;922    }923  });924}925926export async function927approveExpectFail(928  collectionId: number,929  tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number | bigint = 1,930) {931  await usingApi(async (api: ApiPromise) => {932    const approveNftTx = api.tx.nft.approve(normalizeAccountId(approved.address), collectionId, tokenId, amount);933    const events = await expect(submitTransactionExpectFailAsync(owner, approveNftTx)).to.be.rejected;934    const result = getCreateCollectionResult(events);935    // tslint:disable-next-line:no-unused-expression936    expect(result.success).to.be.false;937  });938}939940export async function getFungibleBalance(941  collectionId: number,942  owner: string,943) {944  return await usingApi(async (api) => {945    const response = (await api.query.nft.fungibleItemList(collectionId, owner)).toJSON() as unknown as { value: string };946    return BigInt(response.value);947  });948}949950export async function createFungibleItemExpectSuccess(951  sender: IKeyringPair,952  collectionId: number,953  data: CreateFungibleData,954  owner: CrossAccountId | string = sender.address,955) {956  return await usingApi(async (api) => {957    const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(owner), { Fungible: data });958959    const events = await submitTransactionAsync(sender, tx);960    const result = getCreateItemResult(events);961962    expect(result.success).to.be.true;963    return result.itemId;964  });965}966967export async function createItemExpectSuccess(sender: IKeyringPair, collectionId: number, createMode: string, owner: CrossAccountId | string = sender.address) {968  let newItemId = 0;969  await usingApi(async (api) => {970    const to = normalizeAccountId(owner);971    const AItemCount = parseInt((await api.query.nft.itemListIndex(collectionId)).toString(), 10);972    const Aitem: any = (await api.query.nft.fungibleItemList(collectionId, toSubstrateAddress(to))).toJSON();973    const AItemBalance = new BigNumber(Aitem.value);974975    let tx;976    if (createMode === 'Fungible') {977      const createData = { fungible: { value: 10 } };978      tx = api.tx.nft.createItem(collectionId, to, createData);979    } else if (createMode === 'ReFungible') {980      const createData = { refungible: { const_data: [], variable_data: [], pieces: 100 } };981      tx = api.tx.nft.createItem(collectionId, to, createData);982    } else {983      const createData = { nft: { const_data: [], variable_data: [] } };984      tx = api.tx.nft.createItem(collectionId, to, createData);985    }986987    const events = await submitTransactionAsync(sender, tx);988    const result = getCreateItemResult(events);989990    const BItemCount = parseInt((await api.query.nft.itemListIndex(collectionId)).toString(), 10);991    const Bitem: any = (await api.query.nft.fungibleItemList(collectionId, toSubstrateAddress(to))).toJSON();992    const BItemBalance = new BigNumber(Bitem.value);993994    // What to expect995    // tslint:disable-next-line:no-unused-expression996    expect(result.success).to.be.true;997    if (createMode === 'Fungible') {998      expect(BItemBalance.minus(AItemBalance).toNumber()).to.be.equal(10);999    } else {1000      expect(BItemCount).to.be.equal(AItemCount + 1);1001    }1002    expect(collectionId).to.be.equal(result.collectionId);1003    expect(BItemCount.toString()).to.be.equal(result.itemId.toString());1004    expect(to).to.be.deep.equal(result.recipient);1005    newItemId = result.itemId;1006  });1007  return newItemId;1008}10091010export async function createItemExpectFailure(sender: IKeyringPair, collectionId: number, createMode: string, owner: string = sender.address) {1011  await usingApi(async (api) => {1012    const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(owner), createMode);10131014    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1015    const result = getCreateItemResult(events);10161017    expect(result.success).to.be.false;1018  });1019}10201021export async function setPublicAccessModeExpectSuccess(1022  sender: IKeyringPair, collectionId: number,1023  accessMode: 'Normal' | 'WhiteList',1024) {1025  await usingApi(async (api) => {10261027    // Run the transaction1028    const tx = api.tx.nft.setPublicAccessMode(collectionId, accessMode);1029    const events = await submitTransactionAsync(sender, tx);1030    const result = getGenericResult(events);10311032    // Get the collection1033    const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();10341035    // What to expect1036    // tslint:disable-next-line:no-unused-expression1037    expect(result.success).to.be.true;1038    expect(collection.access).to.be.equal(accessMode);1039  });1040}10411042export async function setPublicAccessModeExpectFail(1043  sender: IKeyringPair, collectionId: number,1044  accessMode: 'Normal' | 'WhiteList',1045) {1046  await usingApi(async (api) => {10471048    // Run the transaction1049    const tx = api.tx.nft.setPublicAccessMode(collectionId, accessMode);1050    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1051    const result = getGenericResult(events);10521053    // What to expect1054    // tslint:disable-next-line:no-unused-expression1055    expect(result.success).to.be.false;1056  });1057}10581059export async function enableWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number) {1060  await setPublicAccessModeExpectSuccess(sender, collectionId, 'WhiteList');1061}10621063export async function enableWhiteListExpectFail(sender: IKeyringPair, collectionId: number) {1064  await setPublicAccessModeExpectFail(sender, collectionId, 'WhiteList');1065}10661067export async function disableWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number) {1068  await setPublicAccessModeExpectSuccess(sender, collectionId, 'Normal');1069}10701071export async function setMintPermissionExpectSuccess(sender: IKeyringPair, collectionId: number, enabled: boolean) {1072  await usingApi(async (api) => {10731074    // Run the transaction1075    const tx = api.tx.nft.setMintPermission(collectionId, enabled);1076    const events = await submitTransactionAsync(sender, tx);1077    const result = getGenericResult(events);10781079    // Get the collection1080    const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON();10811082    // What to expect1083    // tslint:disable-next-line:no-unused-expression1084    expect(result.success).to.be.true;1085    expect(collection.mintMode).to.be.equal(enabled);1086  });1087}10881089export async function enablePublicMintingExpectSuccess(sender: IKeyringPair, collectionId: number) {1090  await setMintPermissionExpectSuccess(sender, collectionId, true);1091}10921093export async function setMintPermissionExpectFailure(sender: IKeyringPair, collectionId: number, enabled: boolean) {1094  await usingApi(async (api) => {1095    // Run the transaction1096    const tx = api.tx.nft.setMintPermission(collectionId, enabled);1097    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1098    const result = getCreateCollectionResult(events);1099    // tslint:disable-next-line:no-unused-expression1100    expect(result.success).to.be.false;1101  });1102}11031104export async function setChainLimitsExpectFailure(sender: IKeyringPair, limits: IChainLimits) {1105  await usingApi(async (api) => {1106    // Run the transaction1107    const tx = api.tx.nft.setChainLimits(limits);1108    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1109    const result = getCreateCollectionResult(events);1110    // tslint:disable-next-line:no-unused-expression1111    expect(result.success).to.be.false;1112  });1113}11141115export async function isWhitelisted(collectionId: number, address: string) {1116  let whitelisted = false;1117  await usingApi(async (api) => {1118    whitelisted = (await api.query.nft.whiteList(collectionId, address)).toJSON() as unknown as boolean;1119  });1120  return whitelisted;1121}11221123export async function addToWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number, address: string | AccountId) {1124  await usingApi(async (api) => {11251126    const whiteListedBefore = (await api.query.nft.whiteList(collectionId, address)).toJSON();11271128    // Run the transaction1129    const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(address));1130    const events = await submitTransactionAsync(sender, tx);1131    const result = getGenericResult(events);11321133    const whiteListedAfter = (await api.query.nft.whiteList(collectionId, address)).toJSON();11341135    // What to expect1136    // tslint:disable-next-line:no-unused-expression1137    expect(result.success).to.be.true;1138    // tslint:disable-next-line: no-unused-expression1139    expect(whiteListedBefore).to.be.false;1140    // tslint:disable-next-line: no-unused-expression1141    expect(whiteListedAfter).to.be.true;1142  });1143}11441145export async function addToWhiteListAgainExpectSuccess(sender: IKeyringPair, collectionId: number, address: string | AccountId) {1146  await usingApi(async (api) => {11471148    const whiteListedBefore = (await api.query.nft.whiteList(collectionId, address)).toJSON();11491150    // Run the transaction1151    const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(address));1152    const events = await submitTransactionAsync(sender, tx);1153    const result = getGenericResult(events);11541155    const whiteListedAfter = (await api.query.nft.whiteList(collectionId, address)).toJSON();11561157    // What to expect1158    // tslint:disable-next-line:no-unused-expression1159    expect(result.success).to.be.true;1160    // tslint:disable-next-line: no-unused-expression1161    expect(whiteListedBefore).to.be.true;1162    // tslint:disable-next-line: no-unused-expression1163    expect(whiteListedAfter).to.be.true;1164  });1165}11661167export async function addToWhiteListExpectFail(sender: IKeyringPair, collectionId: number, address: string | AccountId) {1168  await usingApi(async (api) => {11691170    // Run the transaction1171    const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(address));1172    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1173    const result = getGenericResult(events);11741175    // What to expect1176    // tslint:disable-next-line:no-unused-expression1177    expect(result.success).to.be.false;1178  });1179}11801181export async function removeFromWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number, address: CrossAccountId) {1182  await usingApi(async (api) => {1183    // Run the transaction1184    const tx = api.tx.nft.removeFromWhiteList(collectionId, normalizeAccountId(address));1185    const events = await submitTransactionAsync(sender, tx);1186    const result = getGenericResult(events);11871188    // What to expect1189    // tslint:disable-next-line:no-unused-expression1190    expect(result.success).to.be.true;1191  });1192}11931194export async function removeFromWhiteListExpectFailure(sender: IKeyringPair, collectionId: number, address: CrossAccountId) {1195  await usingApi(async (api) => {1196    // Run the transaction1197    const tx = api.tx.nft.removeFromWhiteList(collectionId, normalizeAccountId(address));1198    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1199    const result = getGenericResult(events);12001201    // What to expect1202    // tslint:disable-next-line:no-unused-expression1203    expect(result.success).to.be.false;1204  });1205}12061207export const getDetailedCollectionInfo = async (api: ApiPromise, collectionId: number)1208  : Promise<ICollectionInterface | null> => {1209  return (await api.query.nft.collectionById(collectionId)).toJSON() as unknown as ICollectionInterface;1210};12111212export const getCreatedCollectionCount = async (api: ApiPromise): Promise<number> => {1213  // set global object - collectionsCount1214  return (await api.query.nft.createdCollectionCount() as unknown as BN).toNumber();1215};12161217export async function queryCollectionExpectSuccess(collectionId: number): Promise<ICollectionInterface> {1218  return await usingApi(async (api) => {1219    return (await api.query.nft.collectionById(collectionId)).toJSON() as unknown as ICollectionInterface;1220  });1221}12221223export async function queryNftOwner(api: ApiPromise, collectionId: number, tokenId: number): Promise<CrossAccountId> {1224  return normalizeAccountId((await api.query.nft.nftItemList(collectionId, tokenId) as any).toJSON().owner);1225}12261227export async function waitNewBlocks(blocksCount = 1): Promise<void> {1228  await usingApi(async (api) => {1229    const promise = new Promise<void>(async (resolve) => {1230      const unsubscribe = await api.rpc.chain.subscribeNewHeads(() => {1231        if (blocksCount > 0) {1232          blocksCount--;1233        } else {1234          unsubscribe();1235          resolve();1236        }1237      });1238    });1239    return promise;1240  });1241}
after · tests/src/util/helpers.ts
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import {ApiPromise, Keyring} from '@polkadot/api';7import type {AccountId, EventRecord} from '@polkadot/types/interfaces';8import {IKeyringPair} from '@polkadot/types/types';9import {evmToAddress} from '@polkadot/util-crypto';10import BN from 'bn.js';11import chai from 'chai';12import chaiAsPromised from 'chai-as-promised';13import {alicesPublicKey} from '../accounts';14import {NftDataStructsCollection} from '../interfaces';15import privateKey from '../substrate/privateKey';16import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from '../substrate/substrate-api';17import {hexToStr, strToUTF16, utf16ToStr} from './util';1819chai.use(chaiAsPromised);20const expect = chai.expect;2122export type CrossAccountId = {23  Substrate: string,24} | {25  Ethereum: string,26};27export function normalizeAccountId(input: string | AccountId | CrossAccountId | IKeyringPair): CrossAccountId {28  if (typeof input === 'string') {29    if (input.length === 48 || input.length === 47) {30      return {Substrate: input};31    } else if (input.length === 42 && input.startsWith('0x')) {32      return {Ethereum: input.toLowerCase()};33    } else if (input.length === 40 && !input.startsWith('0x')) {34      return {Ethereum: '0x' + input.toLowerCase()};35    } else {36      throw new Error(`Unknown address format: "${input}"`);37    }38  }39  if ('address' in input) {40    return {Substrate: input.address};41  }42  if ('Ethereum' in input) {43    return {44      Ethereum: input.Ethereum.toLowerCase(),45    };46  } else if ('ethereum' in input) {47    return {48      Ethereum: (input as any).ethereum.toLowerCase(),49    };50  } else if ('Substrate' in input) {51    return input;52  }else if ('substrate' in input) {53    return {54      Substrate: (input as any).substrate,55    };56  }5758  // AccountId59  return {Substrate: input.toString()};60}61export function toSubstrateAddress(input: string | CrossAccountId | IKeyringPair): string {62  input = normalizeAccountId(input);63  if ('Substrate' in input) {64    return input.Substrate;65  } else {66    return evmToAddress(input.Ethereum);67  }68}6970export const U128_MAX = (1n << 128n) - 1n;7172const MICROUNIQUE = 1_000_000_000n;73const MILLIUNIQUE = 1_000n * MICROUNIQUE;74const CENTIUNIQUE = 10n * MILLIUNIQUE;75export const UNIQUE = 100n * CENTIUNIQUE;7677type GenericResult = {78  success: boolean,79};8081interface CreateCollectionResult {82  success: boolean;83  collectionId: number;84}8586interface CreateItemResult {87  success: boolean;88  collectionId: number;89  itemId: number;90  recipient?: CrossAccountId;91}9293interface TransferResult {94  success: boolean;95  collectionId: number;96  itemId: number;97  sender?: CrossAccountId;98  recipient?: CrossAccountId;99  value: bigint;100}101102interface IReFungibleOwner {103  fraction: BN;104  owner: number[];105}106107interface IGetMessage {108  checkMsgNftMethod: string;109  checkMsgTrsMethod: string;110  checkMsgSysMethod: string;111}112113export interface IFungibleTokenDataType {114  value: number;115}116117export interface IChainLimits {118  collectionNumbersLimit: number;119	accountTokenOwnershipLimit: number;120	collectionsAdminsLimit: number;121	customDataLimit: number;122	nftSponsorTransferTimeout: number;123	fungibleSponsorTransferTimeout: number;124	refungibleSponsorTransferTimeout: number;125	offchainSchemaLimit: number;126	variableOnChainSchemaLimit: number;127	constOnChainSchemaLimit: number;128}129130export interface IReFungibleTokenDataType {131  owner: IReFungibleOwner[];132  constData: number[];133  variableData: number[];134}135136export function nftEventMessage(events: EventRecord[]): IGetMessage {137  let checkMsgNftMethod = '';138  let checkMsgTrsMethod = '';139  let checkMsgSysMethod = '';140  events.forEach(({event: {method, section}}) => {141    if (section === 'common') {142      checkMsgNftMethod = method;143    } else if (section === 'treasury') {144      checkMsgTrsMethod = method;145    } else if (section === 'system') {146      checkMsgSysMethod = method;147    } else { return null; }148  });149  const result: IGetMessage = {150    checkMsgNftMethod,151    checkMsgTrsMethod,152    checkMsgSysMethod,153  };154  return result;155}156157export function getGenericResult(events: EventRecord[]): GenericResult {158  const result: GenericResult = {159    success: false,160  };161  events.forEach(({event: {method}}) => {162    // console.log(`    ${phase}: ${section}.${method}:: ${data}`);163    if (method === 'ExtrinsicSuccess') {164      result.success = true;165    }166  });167  return result;168}169170171172export function getCreateCollectionResult(events: EventRecord[]): CreateCollectionResult {173  let success = false;174  let collectionId = 0;175  events.forEach(({event: {data, method, section}}) => {176    // console.log(`    ${phase}: ${section}.${method}:: ${data}`);177    if (method == 'ExtrinsicSuccess') {178      success = true;179    } else if ((section == 'common') && (method == 'CollectionCreated')) {180      collectionId = parseInt(data[0].toString(), 10);181    }182  });183  const result: CreateCollectionResult = {184    success,185    collectionId,186  };187  return result;188}189190export function getCreateItemResult(events: EventRecord[]): CreateItemResult {191  let success = false;192  let collectionId = 0;193  let itemId = 0;194  let recipient;195  events.forEach(({event: {data, method, section}}) => {196    // console.log(`    ${phase}: ${section}.${method}:: ${data}`);197    if (method == 'ExtrinsicSuccess') {198      success = true;199    } else if ((section == 'common') && (method == 'ItemCreated')) {200      collectionId = parseInt(data[0].toString(), 10);201      itemId = parseInt(data[1].toString(), 10);202      recipient = normalizeAccountId(data[2].toJSON() as any);203    }204  });205  const result: CreateItemResult = {206    success,207    collectionId,208    itemId,209    recipient,210  };211  return result;212}213214export function getTransferResult(events: EventRecord[]): TransferResult {215  const result: TransferResult = {216    success: false,217    collectionId: 0,218    itemId: 0,219    value: 0n,220  };221222  events.forEach(({event: {data, method, section}}) => {223    if (method === 'ExtrinsicSuccess') {224      result.success = true;225    } else if (section === 'common' && method === 'Transfer') {226      result.collectionId = +data[0].toString();227      result.itemId = +data[1].toString();228      result.sender = normalizeAccountId(data[2].toJSON() as any);229      result.recipient = normalizeAccountId(data[3].toJSON() as any);230      result.value = BigInt(data[4].toString());231    }232  });233234  return result;235}236237interface Nft {238  type: 'NFT';239}240241interface Fungible {242  type: 'Fungible';243  decimalPoints: number;244}245246interface ReFungible {247  type: 'ReFungible';248}249250type CollectionMode = Nft | Fungible | ReFungible;251252export type CreateCollectionParams = {253  mode: CollectionMode,254  name: string,255  description: string,256  tokenPrefix: string,257};258259const defaultCreateCollectionParams: CreateCollectionParams = {260  description: 'description',261  mode: {type: 'NFT'},262  name: 'name',263  tokenPrefix: 'prefix',264};265266export async function createCollectionExpectSuccess(params: Partial<CreateCollectionParams> = {}): Promise<number> {267  const {name, description, mode, tokenPrefix} = {...defaultCreateCollectionParams, ...params};268269  let collectionId = 0;270  await usingApi(async (api) => {271    // Get number of collections before the transaction272    const collectionCountBefore = (await api.query.common.createdCollectionCount()).toNumber();273274    // Run the CreateCollection transaction275    const alicePrivateKey = privateKey('//Alice');276277    let modeprm = {};278    if (mode.type === 'NFT') {279      modeprm = {nft: null};280    } else if (mode.type === 'Fungible') {281      modeprm = {fungible: mode.decimalPoints};282    } else if (mode.type === 'ReFungible') {283      modeprm = {refungible: null};284    }285286    const tx = api.tx.nft.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm as any);287    const events = await submitTransactionAsync(alicePrivateKey, tx);288    const result = getCreateCollectionResult(events);289290    // Get number of collections after the transaction291    const collectionCountAfter = (await api.query.common.createdCollectionCount()).toNumber();292293    // Get the collection294    const collection = (await api.query.common.collectionById(result.collectionId)).unwrap();295296    // What to expect297    // tslint:disable-next-line:no-unused-expression298    expect(result.success).to.be.true;299    expect(result.collectionId).to.be.equal(collectionCountAfter);300    // tslint:disable-next-line:no-unused-expression301    expect(collection).to.be.not.null;302    expect(collectionCountAfter).to.be.equal(collectionCountBefore + 1, 'Error: NFT collection NOT created.');303    expect(collection.owner.toString()).to.be.equal(toSubstrateAddress(alicesPublicKey));304    expect(utf16ToStr(collection.name.toJSON() as any)).to.be.equal(name);305    expect(utf16ToStr(collection.description.toJSON() as any)).to.be.equal(description);306    expect(hexToStr(collection.tokenPrefix.toJSON())).to.be.equal(tokenPrefix);307308    collectionId = result.collectionId;309  });310311  return collectionId;312}313314export async function createCollectionExpectFailure(params: Partial<CreateCollectionParams> = {}) {315  const {name, description, mode, tokenPrefix} = {...defaultCreateCollectionParams, ...params};316317  let modeprm = {};318  if (mode.type === 'NFT') {319    modeprm = {nft: null};320  } else if (mode.type === 'Fungible') {321    modeprm = {fungible: mode.decimalPoints};322  } else if (mode.type === 'ReFungible') {323    modeprm = {refungible: null};324  }325326  await usingApi(async (api) => {327    // Get number of collections before the transaction328    const collectionCountBefore = (await api.query.common.createdCollectionCount()).toNumber();329330    // Run the CreateCollection transaction331    const alicePrivateKey = privateKey('//Alice');332    const tx = api.tx.nft.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm as any);333    const events = await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;334    const result = getCreateCollectionResult(events);335336    // Get number of collections after the transaction337    const collectionCountAfter = (await api.query.common.createdCollectionCount()).toNumber();338339    // What to expect340    // tslint:disable-next-line:no-unused-expression341    expect(result.success).to.be.false;342    expect(collectionCountAfter).to.be.equal(collectionCountBefore, 'Error: Collection with incorrect data created.');343  });344}345346export async function findUnusedAddress(api: ApiPromise, seedAddition = ''): Promise<IKeyringPair> {347  let bal = 0n;348  let unused;349  do {350    const randomSeed = 'seed' + Math.floor(Math.random() * Math.floor(10000)) + seedAddition;351    const keyring = new Keyring({type: 'sr25519'});352    unused = keyring.addFromUri(`//${randomSeed}`);353    bal = (await api.query.system.account(unused.address)).data.free.toBigInt();354  } while (bal !== 0n);355  return unused;356}357358export async function getAllowance(api: ApiPromise, collectionId: number, owner: CrossAccountId | string, approved: CrossAccountId | string, tokenId: number) {359  return (await api.rpc.nft.allowance(collectionId, normalizeAccountId(owner), normalizeAccountId(approved), tokenId)).toBigInt();360}361362export function findUnusedAddresses(api: ApiPromise, amount: number): Promise<IKeyringPair[]> {363  return Promise.all(new Array(amount).fill(null).map(() => findUnusedAddress(api, '_' + Date.now())));364}365366export async function findNotExistingCollection(api: ApiPromise): Promise<number> {367  const totalNumber = (await api.query.common.createdCollectionCount()).toNumber();368  const newCollection: number = totalNumber + 1;369  return newCollection;370}371372function getDestroyResult(events: EventRecord[]): boolean {373  let success = false;374  events.forEach(({event: {method}}) => {375    if (method == 'ExtrinsicSuccess') {376      success = true;377    }378  });379  return success;380}381382export async function destroyCollectionExpectFailure(collectionId: number, senderSeed = '//Alice') {383  await usingApi(async (api) => {384    // Run the DestroyCollection transaction385    const alicePrivateKey = privateKey(senderSeed);386    const tx = api.tx.nft.destroyCollection(collectionId);387    await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;388  });389}390391export async function destroyCollectionExpectSuccess(collectionId: number, senderSeed = '//Alice') {392  await usingApi(async (api) => {393    // Run the DestroyCollection transaction394    const alicePrivateKey = privateKey(senderSeed);395    const tx = api.tx.nft.destroyCollection(collectionId);396    const events = await submitTransactionAsync(alicePrivateKey, tx);397    const result = getDestroyResult(events);398    expect(result).to.be.true;399400    // What to expect401    expect((await api.query.common.collectionById(collectionId)).isNone).to.be.true;402  });403}404405export async function setCollectionLimitsExpectSuccess(sender: IKeyringPair, collectionId: number, limits: any) {406  await usingApi(async (api) => {407    const tx = api.tx.nft.setCollectionLimits(collectionId, limits);408    const events = await submitTransactionAsync(sender, tx);409    const result = getGenericResult(events);410411    expect(result.success).to.be.true;412  });413}414415export async function setCollectionLimitsExpectFailure(sender: IKeyringPair, collectionId: number, limits: any) {416  await usingApi(async (api) => {417    const tx = api.tx.nft.setCollectionLimits(collectionId, limits);418    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;419    const result = getGenericResult(events);420421    expect(result.success).to.be.false;422  });423}424425export async function setCollectionSponsorExpectSuccess(collectionId: number, sponsor: string, sender = '//Alice') {426  await usingApi(async (api) => {427428    // Run the transaction429    const senderPrivateKey = privateKey(sender);430    const tx = api.tx.nft.setCollectionSponsor(collectionId, sponsor);431    const events = await submitTransactionAsync(senderPrivateKey, tx);432    const result = getGenericResult(events);433434    // Get the collection435    const collection = (await api.query.common.collectionById(collectionId)).unwrap();436437    // What to expect438    expect(result.success).to.be.true;439    expect(collection.sponsorship.toJSON()).to.deep.equal({440      unconfirmed: sponsor,441    });442  });443}444445export async function removeCollectionSponsorExpectSuccess(collectionId: number, sender = '//Alice') {446  await usingApi(async (api) => {447448    // Run the transaction449    const alicePrivateKey = privateKey(sender);450    const tx = api.tx.nft.removeCollectionSponsor(collectionId);451    const events = await submitTransactionAsync(alicePrivateKey, tx);452    const result = getGenericResult(events);453454    // Get the collection455    const collection = (await api.query.common.collectionById(collectionId)).unwrap();456457    // What to expect458    expect(result.success).to.be.true;459    expect(collection.sponsorship.toJSON()).to.be.deep.equal({disabled: null});460  });461}462463export async function removeCollectionSponsorExpectFailure(collectionId: number, senderSeed = '//Alice') {464  await usingApi(async (api) => {465466    // Run the transaction467    const alicePrivateKey = privateKey(senderSeed);468    const tx = api.tx.nft.removeCollectionSponsor(collectionId);469    await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;470  });471}472473export async function setCollectionSponsorExpectFailure(collectionId: number, sponsor: string, senderSeed = '//Alice') {474  await usingApi(async (api) => {475476    // Run the transaction477    const alicePrivateKey = privateKey(senderSeed);478    const tx = api.tx.nft.setCollectionSponsor(collectionId, sponsor);479    await expect(submitTransactionExpectFailAsync(alicePrivateKey, tx)).to.be.rejected;480  });481}482483export async function confirmSponsorshipExpectSuccess(collectionId: number, senderSeed = '//Alice') {484  await usingApi(async (api) => {485486    // Run the transaction487    const sender = privateKey(senderSeed);488    const tx = api.tx.nft.confirmSponsorship(collectionId);489    const events = await submitTransactionAsync(sender, tx);490    const result = getGenericResult(events);491492    // Get the collection493    const collection = (await api.query.common.collectionById(collectionId)).unwrap();494495    // What to expect496    expect(result.success).to.be.true;497    expect(collection.sponsorship.toJSON()).to.be.deep.equal({498      confirmed: sender.address,499    });500  });501}502503504export async function confirmSponsorshipExpectFailure(collectionId: number, senderSeed = '//Alice') {505  await usingApi(async (api) => {506507    // Run the transaction508    const sender = privateKey(senderSeed);509    const tx = api.tx.nft.confirmSponsorship(collectionId);510    await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;511  });512}513514export async function setMetadataUpdatePermissionFlagExpectSuccess(sender: IKeyringPair, collectionId: number, flag: string) {515516  await usingApi(async (api) => {517    const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag as any);518    const events = await submitTransactionAsync(sender, tx);519    const result = getGenericResult(events);520521    expect(result.success).to.be.true;522  });523}524525export async function setMetadataUpdatePermissionFlagExpectFailure(sender: IKeyringPair, collectionId: number, flag: string) {526527  await usingApi(async (api) => {528    const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag as any);529    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;530    const result = getGenericResult(events);531532    expect(result.success).to.be.false;533  });534}535536export async function enableContractSponsoringExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, enable: boolean) {537  await usingApi(async (api) => {538    const tx = api.tx.nft.enableContractSponsoring(contractAddress, enable);539    const events = await submitTransactionAsync(sender, tx);540    const result = getGenericResult(events);541542    expect(result.success).to.be.true;543  });544}545546export async function enableContractSponsoringExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, enable: boolean) {547  await usingApi(async (api) => {548    const tx = api.tx.nft.enableContractSponsoring(contractAddress, enable);549    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;550    const result = getGenericResult(events);551552    expect(result.success).to.be.false;553  });554}555556export async function setTransferFlagExpectSuccess(sender: IKeyringPair, collectionId: number, enabled: boolean) {557558  await usingApi(async (api) => {559560    const tx = api.tx.nft.setTransfersEnabledFlag (collectionId, enabled);561    const events = await submitTransactionAsync(sender, tx);562    const result = getGenericResult(events);563564    expect(result.success).to.be.true;565  });566}567568export async function setTransferFlagExpectFailure(sender: IKeyringPair, collectionId: number, enabled: boolean) {569570  await usingApi(async (api) => {571572    const tx = api.tx.nft.setTransfersEnabledFlag (collectionId, enabled);573    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;574    const result = getGenericResult(events);575576    expect(result.success).to.be.false;577  });578}579580export async function setContractSponsoringRateLimitExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, rateLimit: number) {581  await usingApi(async (api) => {582    const tx = api.tx.nft.setContractSponsoringRateLimit(contractAddress, rateLimit);583    const events = await submitTransactionAsync(sender, tx);584    const result = getGenericResult(events);585586    expect(result.success).to.be.true;587  });588}589590export async function setContractSponsoringRateLimitExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, rateLimit: number) {591  await usingApi(async (api) => {592    const tx = api.tx.nft.setContractSponsoringRateLimit(contractAddress, rateLimit);593    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;594    const result = getGenericResult(events);595596    expect(result.success).to.be.false;597  });598}599600export async function toggleContractWhitelistExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, value = true) {601  await usingApi(async (api) => {602    const tx = api.tx.nft.toggleContractWhiteList(contractAddress, value);603    const events = await submitTransactionAsync(sender, tx);604    const result = getGenericResult(events);605606    expect(result.success).to.be.true;607  });608}609610export async function isWhitelistedInContract(contractAddress: AccountId | string, user: string) {611  let whitelisted = false;612  await usingApi(async (api) => {613    whitelisted = (await api.query.nft.contractWhiteList(contractAddress, user)).toJSON() as boolean;614  });615  return whitelisted;616}617618export async function addToContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {619  await usingApi(async (api) => {620    const tx = api.tx.nft.addToContractWhiteList(contractAddress.toString(), user.toString());621    const events = await submitTransactionAsync(sender, tx);622    const result = getGenericResult(events);623624    expect(result.success).to.be.true;625  });626}627628export async function removeFromContractWhiteListExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {629  await usingApi(async (api) => {630    const tx = api.tx.nft.removeFromContractWhiteList(contractAddress.toString(), user.toString());631    const events = await submitTransactionAsync(sender, tx);632    const result = getGenericResult(events);633634    expect(result.success).to.be.true;635  });636}637638export async function removeFromContractWhiteListExpectFailure(sender: IKeyringPair, contractAddress: AccountId | string, user: AccountId | string) {639  await usingApi(async (api) => {640    const tx = api.tx.nft.removeFromContractWhiteList(contractAddress.toString(), user.toString());641    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;642    const result = getGenericResult(events);643644    expect(result.success).to.be.false;645  });646}647648export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {649  await usingApi(async (api) => {650    const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));651    const events = await submitTransactionAsync(sender, tx);652    const result = getGenericResult(events);653654    expect(result.success).to.be.true;655  });656}657658export async function setVariableMetaDataExpectFailure(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {659  await usingApi(async (api) => {660    const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));661    await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;662  });663}664665export async function setOffchainSchemaExpectSuccess(sender: IKeyringPair, collectionId: number, data: number[]) {666  await usingApi(async (api) => {667    const tx = api.tx.nft.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));668    const events = await submitTransactionAsync(sender, tx);669    const result = getGenericResult(events);670671    expect(result.success).to.be.true;672  });673}674675export async function setOffchainSchemaExpectFailure(sender: IKeyringPair, collectionId: number, data: number[]) {676  await usingApi(async (api) => {677    const tx = api.tx.nft.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));678    await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;679  });680}681682export interface CreateFungibleData {683  readonly Value: bigint;684}685686export interface CreateReFungibleData { }687export interface CreateNftData { }688689export type CreateItemData = {690  NFT: CreateNftData;691} | {692  Fungible: CreateFungibleData;693} | {694  ReFungible: CreateReFungibleData;695};696697export async function burnItemExpectSuccess(sender: IKeyringPair, collectionId: number, tokenId: number, value = 1) {698  await usingApi(async (api) => {699    const balanceBefore = await getBalance(api, collectionId, normalizeAccountId(sender), tokenId);700    // if burning token by admin - use adminButnItemExpectSuccess701    expect(balanceBefore >= BigInt(value)).to.be.true;702703    const tx = api.tx.nft.burnItem(collectionId, tokenId, value);704    const events = await submitTransactionAsync(sender, tx);705    const result = getGenericResult(events);706    expect(result.success).to.be.true;707708    const balanceAfter = await getBalance(api, collectionId, normalizeAccountId(sender), tokenId);709    expect(balanceAfter + BigInt(value)).to.be.equal(balanceBefore);710  });711}712713export async function714approveExpectSuccess(715  collectionId: number,716  tokenId: number, owner: IKeyringPair, approved: CrossAccountId | string, amount: number | bigint = 1,717) {718  await usingApi(async (api: ApiPromise) => {719    const approveNftTx = api.tx.nft.approve(normalizeAccountId(approved), collectionId, tokenId, amount);720    const events = await submitTransactionAsync(owner, approveNftTx);721    const result = getGenericResult(events);722    expect(result.success).to.be.true;723724    expect(await getAllowance(api, collectionId, owner.address, approved, tokenId)).to.be.equal(BigInt(amount));725  });726}727728export async function adminApproveFromExpectSuccess(729  collectionId: number,730  tokenId: number, admin: IKeyringPair, owner: CrossAccountId | string, approved: CrossAccountId | string, amount: number | bigint = 1,731) {732  await usingApi(async (api: ApiPromise) => {733    const approveNftTx = api.tx.nft.approve(normalizeAccountId(approved), collectionId, tokenId, amount);734    const events = await submitTransactionAsync(admin, approveNftTx);735    const result = getGenericResult(events);736    expect(result.success).to.be.true;737738    expect(await getAllowance(api, collectionId, owner, approved, tokenId)).to.be.equal(BigInt(amount));739  });740}741742export async function743transferFromExpectSuccess(744  collectionId: number,745  tokenId: number,746  accountApproved: IKeyringPair,747  accountFrom: IKeyringPair | CrossAccountId,748  accountTo: IKeyringPair | CrossAccountId,749  value: number | bigint = 1,750  type = 'NFT',751) {752  await usingApi(async (api: ApiPromise) => {753    const to = normalizeAccountId(accountTo);754    let balanceBefore = 0n;755    if (type === 'Fungible') {756      balanceBefore = await getBalance(api, collectionId, to, tokenId);757    }758    const transferFromTx = api.tx.nft.transferFrom(normalizeAccountId(accountFrom), to, collectionId, tokenId, value);759    const events = await submitTransactionAsync(accountApproved, transferFromTx);760    const result = getCreateItemResult(events);761    // tslint:disable-next-line:no-unused-expression762    expect(result.success).to.be.true;763    if (type === 'NFT') {764      expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal(to);765    }766    if (type === 'Fungible') {767      const balanceAfter = await getBalance(api, collectionId, to, tokenId);768      expect(balanceAfter - balanceBefore).to.be.equal(BigInt(value));769    }770    if (type === 'ReFungible') {771      expect(await getBalance(api, collectionId, to, tokenId)).to.be.equal(BigInt(value));772    }773  });774}775776export async function777transferFromExpectFail(778  collectionId: number,779  tokenId: number,780  accountApproved: IKeyringPair,781  accountFrom: IKeyringPair,782  accountTo: IKeyringPair,783  value: number | bigint = 1,784) {785  await usingApi(async (api: ApiPromise) => {786    const transferFromTx = api.tx.nft.transferFrom(normalizeAccountId(accountFrom.address), normalizeAccountId(accountTo.address), collectionId, tokenId, value);787    const events = await expect(submitTransactionExpectFailAsync(accountApproved, transferFromTx)).to.be.rejected;788    const result = getCreateCollectionResult(events);789    // tslint:disable-next-line:no-unused-expression790    expect(result.success).to.be.false;791  });792}793794/* eslint no-async-promise-executor: "off" */795async function getBlockNumber(api: ApiPromise): Promise<number> {796  return new Promise<number>(async (resolve) => {797    const unsubscribe = await api.rpc.chain.subscribeNewHeads((head) => {798      unsubscribe();799      resolve(head.number.toNumber());800    });801  });802}803804export async function addCollectionAdminExpectSuccess(sender: IKeyringPair, collectionId: number, address: string | CrossAccountId) {805  await usingApi(async (api) => {806    const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(address));807    const events = await submitTransactionAsync(sender, changeAdminTx);808    const result = getCreateCollectionResult(events);809    expect(result.success).to.be.true;810  });811}812813export async function814getFreeBalance(account: IKeyringPair) : Promise<bigint>815{816  let balance = 0n;817  await usingApi(async (api) => {818    balance = BigInt((await api.query.system.account(account.address)).data.free.toString());819  });820821  return balance;822}823824export async function825scheduleTransferExpectSuccess(826  collectionId: number,827  tokenId: number,828  sender: IKeyringPair,829  recipient: IKeyringPair,830  value: number | bigint = 1,831  blockSchedule: number,832) {833  await usingApi(async (api: ApiPromise) => {834    const blockNumber: number | undefined = await getBlockNumber(api);835    const expectedBlockNumber = blockNumber + blockSchedule;836837    expect(blockNumber).to.be.greaterThan(0);838    const transferTx = api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);839    const scheduleTx = api.tx.scheduler.schedule(expectedBlockNumber, null, 0, transferTx as any);840841    await submitTransactionAsync(sender, scheduleTx);842843    const recipientBalanceBefore = (await api.query.system.account(recipient.address)).data.free.toBigInt();844845    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal(normalizeAccountId(sender.address));846847    // sleep for 4 blocks848    await waitNewBlocks(blockSchedule + 1);849850    const recipientBalanceAfter = (await api.query.system.account(recipient.address)).data.free.toBigInt();851852    expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal(normalizeAccountId(recipient.address));853    expect(recipientBalanceAfter).to.be.equal(recipientBalanceBefore);854  });855}856857858export async function859transferExpectSuccess(860  collectionId: number,861  tokenId: number,862  sender: IKeyringPair,863  recipient: IKeyringPair | CrossAccountId,864  value: number | bigint = 1,865  type = 'NFT',866) {867  await usingApi(async (api: ApiPromise) => {868    const to = normalizeAccountId(recipient);869870    let balanceBefore = 0n;871    if (type === 'Fungible') {872      balanceBefore = await getBalance(api, collectionId, to, tokenId);873    }874    const transferTx = api.tx.nft.transfer(to, collectionId, tokenId, value);875    const events = await submitTransactionAsync(sender, transferTx);876    const result = getTransferResult(events);877    // tslint:disable-next-line:no-unused-expression878    expect(result.success).to.be.true;879    expect(result.collectionId).to.be.equal(collectionId);880    expect(result.itemId).to.be.equal(tokenId);881    expect(result.sender).to.be.deep.equal(normalizeAccountId(sender.address));882    expect(result.recipient).to.be.deep.equal(to);883    expect(result.value).to.be.equal(BigInt(value));884    if (type === 'NFT') {885      expect(await getTokenOwner(api, collectionId, tokenId)).to.be.deep.equal(to);886    }887    if (type === 'Fungible') {888      const balanceAfter = await getBalance(api, collectionId, to, tokenId);889      expect(balanceAfter - balanceBefore).to.be.equal(BigInt(value));890    }891    if (type === 'ReFungible') {892      expect(await getBalance(api, collectionId, to, tokenId) >= value).to.be.true;893    }894  });895}896897export async function898transferExpectFailure(899  collectionId: number,900  tokenId: number,901  sender: IKeyringPair,902  recipient: IKeyringPair,903  value: number | bigint = 1,904) {905  await usingApi(async (api: ApiPromise) => {906    const transferTx = api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);907    const events = await expect(submitTransactionExpectFailAsync(sender, transferTx)).to.be.rejected;908    if (events && Array.isArray(events)) {909      const result = getCreateCollectionResult(events);910      // tslint:disable-next-line:no-unused-expression911      expect(result.success).to.be.false;912    }913  });914}915916export async function917approveExpectFail(918  collectionId: number,919  tokenId: number, owner: IKeyringPair, approved: IKeyringPair, amount: number | bigint = 1,920) {921  await usingApi(async (api: ApiPromise) => {922    const approveNftTx = api.tx.nft.approve(normalizeAccountId(approved.address), collectionId, tokenId, amount);923    const events = await expect(submitTransactionExpectFailAsync(owner, approveNftTx)).to.be.rejected;924    const result = getCreateCollectionResult(events);925    // tslint:disable-next-line:no-unused-expression926    expect(result.success).to.be.false;927  });928}929930export async function getBalance(931  api: ApiPromise,932  collectionId: number,933  owner: string | CrossAccountId,934  token: number,935): Promise<bigint> {936  return (await api.rpc.nft.balance(collectionId, normalizeAccountId(owner), token)).toBigInt();937}938export async function getTokenOwner(939  api: ApiPromise,940  collectionId: number,941  token: number,942): Promise<CrossAccountId> {943  return normalizeAccountId((await api.rpc.nft.tokenOwner(collectionId, token)).toJSON() as any);944}945export async function isTokenExists(946  api: ApiPromise,947  collectionId: number,948  token: number,949): Promise<boolean> {950  return (await api.rpc.nft.tokenExists(collectionId, token)).toJSON();951}952export async function getLastTokenId(953  api: ApiPromise,954  collectionId: number,955): Promise<number> {956  return (await api.rpc.nft.lastTokenId(collectionId)).toJSON();957}958export async function getAdminList(959  api: ApiPromise,960  collectionId: number,961): Promise<string[]> {962  return (await api.rpc.nft.adminlist(collectionId)).toHuman() as any;963}964export async function getVariableMetadata(965  api: ApiPromise,966  collectionId: number,967  tokenId: number,968): Promise<number[]> {969  return [...(await api.rpc.nft.variableMetadata(collectionId, tokenId))];970}971export async function getConstMetadata(972  api: ApiPromise,973  collectionId: number,974  tokenId: number,975): Promise<number[]> {976  return [...(await api.rpc.nft.constMetadata(collectionId, tokenId))];977}978979export async function createFungibleItemExpectSuccess(980  sender: IKeyringPair,981  collectionId: number,982  data: CreateFungibleData,983  owner: CrossAccountId | string = sender.address,984) {985  return await usingApi(async (api) => {986    const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(owner), {Fungible: data});987988    const events = await submitTransactionAsync(sender, tx);989    const result = getCreateItemResult(events);990991    expect(result.success).to.be.true;992    return result.itemId;993  });994}995996export async function createItemExpectSuccess(sender: IKeyringPair, collectionId: number, createMode: string, owner: CrossAccountId | string = sender.address) {997  let newItemId = 0;998  await usingApi(async (api) => {999    const to = normalizeAccountId(owner);1000    const itemCountBefore = await getLastTokenId(api, collectionId);1001    const itemBalanceBefore = await getBalance(api, collectionId, to, newItemId);10021003    let tx;1004    if (createMode === 'Fungible') {1005      const createData = {fungible: {value: 10}};1006      tx = api.tx.nft.createItem(collectionId, to, createData as any);1007    } else if (createMode === 'ReFungible') {1008      const createData = {refungible: {const_data: [], variable_data: [], pieces: 100}};1009      tx = api.tx.nft.createItem(collectionId, to, createData as any);1010    } else {1011      const createData = {nft: {const_data: [], variable_data: []}};1012      tx = api.tx.nft.createItem(collectionId, to, createData as any);1013    }10141015    const events = await submitTransactionAsync(sender, tx);1016    const result = getCreateItemResult(events);10171018    const itemCountAfter = await getLastTokenId(api, collectionId);1019    const itemBalanceAfter = await getBalance(api, collectionId, to, newItemId);10201021    // What to expect1022    // tslint:disable-next-line:no-unused-expression1023    expect(result.success).to.be.true;1024    if (createMode === 'Fungible') {1025      expect(itemBalanceAfter - itemBalanceBefore).to.be.equal(10n);1026    } else {1027      expect(itemCountAfter).to.be.equal(itemCountBefore + 1);1028    }1029    expect(collectionId).to.be.equal(result.collectionId);1030    expect(itemCountAfter.toString()).to.be.equal(result.itemId.toString());1031    expect(to).to.be.deep.equal(result.recipient);1032    newItemId = result.itemId;1033  });1034  return newItemId;1035}10361037export async function createItemExpectFailure(sender: IKeyringPair, collectionId: number, createMode: string, owner: string = sender.address) {1038  await usingApi(async (api) => {1039    const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(owner), createMode);10401041    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1042    const result = getCreateItemResult(events);10431044    expect(result.success).to.be.false;1045  });1046}10471048export async function setPublicAccessModeExpectSuccess(1049  sender: IKeyringPair, collectionId: number,1050  accessMode: 'Normal' | 'WhiteList',1051) {1052  await usingApi(async (api) => {10531054    // Run the transaction1055    const tx = api.tx.nft.setPublicAccessMode(collectionId, accessMode);1056    const events = await submitTransactionAsync(sender, tx);1057    const result = getGenericResult(events);10581059    // Get the collection1060    const collection = (await api.query.common.collectionById(collectionId)).unwrap();10611062    // What to expect1063    // tslint:disable-next-line:no-unused-expression1064    expect(result.success).to.be.true;1065    expect(collection.access.toHuman()).to.be.equal(accessMode);1066  });1067}10681069export async function setPublicAccessModeExpectFail(1070  sender: IKeyringPair, collectionId: number,1071  accessMode: 'Normal' | 'WhiteList',1072) {1073  await usingApi(async (api) => {10741075    // Run the transaction1076    const tx = api.tx.nft.setPublicAccessMode(collectionId, accessMode);1077    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1078    const result = getGenericResult(events);10791080    // What to expect1081    // tslint:disable-next-line:no-unused-expression1082    expect(result.success).to.be.false;1083  });1084}10851086export async function enableWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number) {1087  await setPublicAccessModeExpectSuccess(sender, collectionId, 'WhiteList');1088}10891090export async function enableWhiteListExpectFail(sender: IKeyringPair, collectionId: number) {1091  await setPublicAccessModeExpectFail(sender, collectionId, 'WhiteList');1092}10931094export async function disableWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number) {1095  await setPublicAccessModeExpectSuccess(sender, collectionId, 'Normal');1096}10971098export async function setMintPermissionExpectSuccess(sender: IKeyringPair, collectionId: number, enabled: boolean) {1099  await usingApi(async (api) => {11001101    // Run the transaction1102    const tx = api.tx.nft.setMintPermission(collectionId, enabled);1103    const events = await submitTransactionAsync(sender, tx);1104    const result = getGenericResult(events);1105    expect(result.success).to.be.true;11061107    // Get the collection1108    const collection = (await api.query.common.collectionById(collectionId)).unwrap();11091110    expect(collection.mintMode.toHuman()).to.be.equal(enabled);1111  });1112}11131114export async function enablePublicMintingExpectSuccess(sender: IKeyringPair, collectionId: number) {1115  await setMintPermissionExpectSuccess(sender, collectionId, true);1116}11171118export async function setMintPermissionExpectFailure(sender: IKeyringPair, collectionId: number, enabled: boolean) {1119  await usingApi(async (api) => {1120    // Run the transaction1121    const tx = api.tx.nft.setMintPermission(collectionId, enabled);1122    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1123    const result = getCreateCollectionResult(events);1124    // tslint:disable-next-line:no-unused-expression1125    expect(result.success).to.be.false;1126  });1127}11281129export async function setChainLimitsExpectFailure(sender: IKeyringPair, limits: IChainLimits) {1130  await usingApi(async (api) => {1131    // Run the transaction1132    const tx = api.tx.nft.setChainLimits(limits);1133    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1134    const result = getCreateCollectionResult(events);1135    // tslint:disable-next-line:no-unused-expression1136    expect(result.success).to.be.false;1137  });1138}11391140export async function isWhitelisted(collectionId: number, address: string | CrossAccountId) {1141  return await usingApi(async (api) => {1142    return (await api.query.common.allowlist(collectionId, normalizeAccountId(address))).toJSON();1143  });1144}11451146export async function addToWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number, address: string | AccountId | CrossAccountId) {1147  await usingApi(async (api) => {1148    expect(await isWhitelisted(collectionId, normalizeAccountId(address))).to.be.false;11491150    // Run the transaction1151    const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(address));1152    const events = await submitTransactionAsync(sender, tx);1153    const result = getGenericResult(events);1154    expect(result.success).to.be.true;11551156    expect(await isWhitelisted(collectionId, normalizeAccountId(address))).to.be.true;1157  });1158}11591160export async function addToWhiteListAgainExpectSuccess(sender: IKeyringPair, collectionId: number, address: string | AccountId) {1161  await usingApi(async (api) => {11621163    expect(await isWhitelisted(collectionId, normalizeAccountId(address))).to.be.true;11641165    // Run the transaction1166    const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(address));1167    const events = await submitTransactionAsync(sender, tx);1168    const result = getGenericResult(events);1169    expect(result.success).to.be.true;11701171    expect(await isWhitelisted(collectionId, normalizeAccountId(address))).to.be.true;1172  });1173}11741175export async function addToWhiteListExpectFail(sender: IKeyringPair, collectionId: number, address: string | AccountId) {1176  await usingApi(async (api) => {11771178    // Run the transaction1179    const tx = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(address));1180    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1181    const result = getGenericResult(events);11821183    // What to expect1184    // tslint:disable-next-line:no-unused-expression1185    expect(result.success).to.be.false;1186  });1187}11881189export async function removeFromWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number, address: CrossAccountId) {1190  await usingApi(async (api) => {1191    // Run the transaction1192    const tx = api.tx.nft.removeFromWhiteList(collectionId, normalizeAccountId(address));1193    const events = await submitTransactionAsync(sender, tx);1194    const result = getGenericResult(events);11951196    // What to expect1197    // tslint:disable-next-line:no-unused-expression1198    expect(result.success).to.be.true;1199  });1200}12011202export async function removeFromWhiteListExpectFailure(sender: IKeyringPair, collectionId: number, address: CrossAccountId) {1203  await usingApi(async (api) => {1204    // Run the transaction1205    const tx = api.tx.nft.removeFromWhiteList(collectionId, normalizeAccountId(address));1206    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;1207    const result = getGenericResult(events);12081209    // What to expect1210    // tslint:disable-next-line:no-unused-expression1211    expect(result.success).to.be.false;1212  });1213}12141215export const getDetailedCollectionInfo = async (api: ApiPromise, collectionId: number)1216  : Promise<NftDataStructsCollection | null> => {1217  return (await api.query.common.collectionById(collectionId)).unwrapOr(null);1218};12191220export const getCreatedCollectionCount = async (api: ApiPromise): Promise<number> => {1221  // set global object - collectionsCount1222  return (await api.query.common.createdCollectionCount()).toNumber();1223};12241225export async function queryCollectionExpectSuccess(api: ApiPromise, collectionId: number): Promise<NftDataStructsCollection> {1226  return (await api.query.common.collectionById(collectionId)).unwrap();1227}12281229export async function waitNewBlocks(blocksCount = 1): Promise<void> {1230  await usingApi(async (api) => {1231    const promise = new Promise<void>(async (resolve) => {1232      const unsubscribe = await api.rpc.chain.subscribeNewHeads(() => {1233        if (blocksCount > 0) {1234          blocksCount--;1235        } else {1236          unsubscribe();1237          resolve();1238        }1239      });1240    });1241    return promise;1242  });1243}
modifiedtests/src/whiteLists.test.tsdiffbeforeafterboth
--- a/tests/src/whiteLists.test.ts
+++ b/tests/src/whiteLists.test.ts
@@ -3,11 +3,11 @@
 // file 'LICENSE', which is part of this source code package.
 //
 
-import { IKeyringPair } from '@polkadot/types/types';
+import {IKeyringPair} from '@polkadot/types/types';
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import privateKey from './substrate/privateKey';
-import usingApi, { submitTransactionExpectFailAsync } from './substrate/substrate-api';
+import usingApi, {submitTransactionExpectFailAsync} from './substrate/substrate-api';
 import {
   addToWhiteListExpectSuccess,
   createCollectionExpectSuccess,
@@ -32,276 +32,273 @@
 chai.use(chaiAsPromised);
 const expect = chai.expect;
 
-let Alice: IKeyringPair;
-let Bob: IKeyringPair;
-let Charlie: IKeyringPair;
+let alice: IKeyringPair;
+let bob: IKeyringPair;
+let charlie: IKeyringPair;
 
 describe('Integration Test ext. White list tests', () => {
 
   before(async () => {
     await usingApi(async () => {
-      Alice = privateKey('//Alice');
-      Bob = privateKey('//Bob');
-      Charlie = privateKey('//Charlie');
+      alice = privateKey('//Alice');
+      bob = privateKey('//Bob');
+      charlie = privateKey('//Charlie');
     });
   });
 
   it('Owner can add address to white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
   });
 
   it('Admin can add address to white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-    await addToWhiteListExpectSuccess(Bob, collectionId, Charlie.address);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+    await addToWhiteListExpectSuccess(bob, collectionId, charlie.address);
   });
 
   it('Non-privileged user cannot add address to white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectFail(Bob, collectionId, Charlie.address);
+    await addToWhiteListExpectFail(bob, collectionId, charlie.address);
   });
 
   it('Nobody can add address to white list of non-existing collection', async () => {
     const collectionId = (1<<32) - 1;
-    await addToWhiteListExpectFail(Alice, collectionId, Bob.address);
+    await addToWhiteListExpectFail(alice, collectionId, bob.address);
   });
 
   it('Nobody can add address to white list of destroyed collection', async () => {
     const collectionId = await createCollectionExpectSuccess();
     await destroyCollectionExpectSuccess(collectionId, '//Alice');
-    await addToWhiteListExpectFail(Alice, collectionId, Bob.address);
+    await addToWhiteListExpectFail(alice, collectionId, bob.address);
   });
 
   it('If address is already added to white list, nothing happens', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
-    await addToWhiteListAgainExpectSuccess(Alice, collectionId, Bob.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
+    await addToWhiteListAgainExpectSuccess(alice, collectionId, bob.address);
   });
 
   it('Owner can remove address from white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
-    await removeFromWhiteListExpectSuccess(Alice, collectionId, normalizeAccountId(Bob));
-  });  
+    await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
+    await removeFromWhiteListExpectSuccess(alice, collectionId, normalizeAccountId(bob));
+  });
 
   it('Admin can remove address from white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await removeFromWhiteListExpectSuccess(Bob, collectionId, normalizeAccountId(Charlie));
-  }); 
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await removeFromWhiteListExpectSuccess(bob, collectionId, normalizeAccountId(charlie));
+  });
 
   it('Non-privileged user cannot remove address from white list', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await removeFromWhiteListExpectFailure(Bob, collectionId, normalizeAccountId(Charlie));
-  }); 
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await removeFromWhiteListExpectFailure(bob, collectionId, normalizeAccountId(charlie));
+  });
 
   it('Nobody can remove address from white list of non-existing collection', async () => {
     const collectionId = (1<<32) - 1;
-    await removeFromWhiteListExpectFailure(Alice, collectionId, normalizeAccountId(Charlie));
-  }); 
-
+    await removeFromWhiteListExpectFailure(alice, collectionId, normalizeAccountId(charlie));
+  });
 
-
   it('Nobody can remove address from white list of deleted collection', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
     await destroyCollectionExpectSuccess(collectionId, '//Alice');
-    await removeFromWhiteListExpectFailure(Alice, collectionId, normalizeAccountId(Charlie));
-  }); 
+    await removeFromWhiteListExpectFailure(alice, collectionId, normalizeAccountId(charlie));
+  });
 
   it('If address is already removed from white list, nothing happens', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await removeFromWhiteListExpectSuccess(Alice, collectionId, normalizeAccountId(Charlie));
-    await removeFromWhiteListExpectSuccess(Alice, collectionId, normalizeAccountId(Charlie));
-  }); 
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await removeFromWhiteListExpectSuccess(alice, collectionId, normalizeAccountId(charlie));
+    await removeFromWhiteListExpectSuccess(alice, collectionId, normalizeAccountId(charlie));
+  });
 
   it('If Public Access mode is set to WhiteList, tokens can’t be transferred from a non-whitelisted address with transfer or transferFrom. Test1', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
 
     await transferExpectFailure(
       collectionId,
       itemId,
-      Alice,
-      Charlie,
+      alice,
+      charlie,
       1,
     );
-  }); 
+  });
 
   it('If Public Access mode is set to WhiteList, tokens can’t be transferred from a non-whitelisted address with transfer or transferFrom. Test2', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Alice.address);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await approveExpectSuccess(collectionId, itemId, Alice, Charlie);
-    await removeFromWhiteListExpectSuccess(Alice, collectionId, normalizeAccountId(Alice));
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, alice.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await approveExpectSuccess(collectionId, itemId, alice, charlie.address);
+    await removeFromWhiteListExpectSuccess(alice, collectionId, normalizeAccountId(alice));
 
     await transferExpectFailure(
       collectionId,
       itemId,
-      Alice,
-      Charlie,
+      alice,
+      charlie,
       1,
     );
-  });   
+  });
 
   it('If Public Access mode is set to WhiteList, tokens can’t be transferred to a non-whitelisted address with transfer or transferFrom. Test1', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Alice.address);
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, alice.address);
 
     await transferExpectFailure(
       collectionId,
       itemId,
-      Alice,
-      Charlie,
+      alice,
+      charlie,
       1,
     );
-  });   
+  });
 
   it('If Public Access mode is set to WhiteList, tokens can’t be transferred to a non-whitelisted address with transfer or transferFrom. Test2', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Alice.address);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await approveExpectSuccess(collectionId, itemId, Alice, Charlie);
-    await removeFromWhiteListExpectSuccess(Alice, collectionId, normalizeAccountId(Alice));
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, alice.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await approveExpectSuccess(collectionId, itemId, alice, charlie.address);
+    await removeFromWhiteListExpectSuccess(alice, collectionId, normalizeAccountId(alice));
 
     await transferExpectFailure(
       collectionId,
       itemId,
-      Alice,
-      Charlie,
+      alice,
+      charlie,
       1,
     );
-  }); 
+  });
 
   it('If Public Access mode is set to WhiteList, tokens can’t be destroyed by a non-whitelisted address (even if it owned them before enabling WhiteList mode)', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
 
     await usingApi(async (api) => {
       const tx = api.tx.nft.burnItem(collectionId, itemId, /*normalizeAccountId(Alice.address),*/ 11);
-      const badTransaction = async function () { 
-        await submitTransactionExpectFailAsync(Alice, tx);
+      const badTransaction = async function () {
+        await submitTransactionExpectFailAsync(alice, tx);
       };
       await expect(badTransaction()).to.be.rejected;
     });
-  });   
-  
+  });
+
   it('If Public Access mode is set to WhiteList, token transfers can’t be Approved by a non-whitelisted address (see Approve method)', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await approveExpectFail(collectionId, itemId, Alice, Bob);
-  });   
-  
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await approveExpectFail(collectionId, itemId, alice, bob);
+  });
+
   it('If Public Access mode is set to WhiteList, tokens can be transferred to a whitelisted address with transfer.', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Alice.address);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await transferExpectSuccess(collectionId, itemId, Alice, Charlie, 1, 'NFT');
-  });  
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, alice.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await transferExpectSuccess(collectionId, itemId, alice, charlie, 1, 'NFT');
+  });
 
   it('If Public Access mode is set to WhiteList, tokens can be transferred to a whitelisted address with transferFrom.', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Alice.address);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await approveExpectSuccess(collectionId, itemId, Alice, Charlie);
-    await transferFromExpectSuccess(collectionId, itemId, Alice, Alice, Charlie, 1, 'NFT');
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, alice.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await approveExpectSuccess(collectionId, itemId, alice, charlie.address);
+    await transferFromExpectSuccess(collectionId, itemId, alice, alice, charlie, 1, 'NFT');
   });
 
   it('If Public Access mode is set to WhiteList, tokens can be transferred from a whitelisted address with transfer', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Alice.address);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await transferExpectSuccess(collectionId, itemId, Alice, Charlie, 1, 'NFT');
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, alice.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await transferExpectSuccess(collectionId, itemId, alice, charlie, 1, 'NFT');
   });
 
   it('If Public Access mode is set to WhiteList, tokens can be transferred from a whitelisted address with transferFrom', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    const itemId = await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Alice.address);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Charlie.address);
-    await approveExpectSuccess(collectionId, itemId, Alice, Charlie);
-    await transferFromExpectSuccess(collectionId, itemId, Alice, Alice, Charlie, 1, 'NFT');
+    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await addToWhiteListExpectSuccess(alice, collectionId, alice.address);
+    await addToWhiteListExpectSuccess(alice, collectionId, charlie.address);
+    await approveExpectSuccess(collectionId, itemId, alice, charlie.address);
+    await transferFromExpectSuccess(collectionId, itemId, alice, alice, charlie, 1, 'NFT');
   });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens can be created by owner', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, false);
-    await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, false);
+    await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
   });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens can be created by admin', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, false);
-    await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-    await createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, false);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+    await createItemExpectSuccess(bob, collectionId, 'NFT', bob.address);
   });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens cannot be created by non-privileged and white-listed address', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, false);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
-    await createItemExpectFailure(Bob, collectionId, 'NFT', Bob.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, false);
+    await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
+    await createItemExpectFailure(bob, collectionId, 'NFT', bob.address);
   });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens cannot be created by non-privileged and non-white listed address', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, false);
-    await createItemExpectFailure(Bob, collectionId, 'NFT', Bob.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, false);
+    await createItemExpectFailure(bob, collectionId, 'NFT', bob.address);
   });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by owner', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, true);
-    await createItemExpectSuccess(Alice, collectionId, 'NFT', Alice.address);
-  });  
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, true);
+    await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);
+  });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by admin', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, true);
-    await addCollectionAdminExpectSuccess(Alice, collectionId, Bob);
-    await createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, true);
+    await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
+    await createItemExpectSuccess(bob, collectionId, 'NFT', bob.address);
   });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens cannot be created by non-privileged and non-white listed address', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, true);
-    await createItemExpectFailure(Bob, collectionId, 'NFT', Bob.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, true);
+    await createItemExpectFailure(bob, collectionId, 'NFT', bob.address);
   });
 
   it('If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by non-privileged and white listed address', async () => {
     const collectionId = await createCollectionExpectSuccess();
-    await enableWhiteListExpectSuccess(Alice, collectionId);
-    await setMintPermissionExpectSuccess(Alice, collectionId, true);
-    await addToWhiteListExpectSuccess(Alice, collectionId, Bob.address);
-    await createItemExpectSuccess(Bob, collectionId, 'NFT', Bob.address);
+    await enableWhiteListExpectSuccess(alice, collectionId);
+    await setMintPermissionExpectSuccess(alice, collectionId, true);
+    await addToWhiteListExpectSuccess(alice, collectionId, bob.address);
+    await createItemExpectSuccess(bob, collectionId, 'NFT', bob.address);
   });
 });
-