difftreelog
test fix eslint warnings
in: master
4 files changed
tests/src/createItem.test.tsdiffbeforeafterboth--- a/tests/src/createItem.test.ts
+++ b/tests/src/createItem.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {default as usingApi, executeTransaction} 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';
@@ -125,7 +125,7 @@
});
it('No editing rights', async () => {
- await usingApi(async api => {
+ await usingApi(async () => {
const createMode = 'NFT';
const newCollectionID = await createCollectionWithPropsExpectSuccess({mode: {type: createMode},
propPerm: [{key: 'key1', permission: {mutable: false, collectionAdmin: false, tokenOwner: false}}]});
@@ -136,14 +136,14 @@
});
it('User doesnt have editing rights', async () => {
- await usingApi(async api => {
+ await usingApi(async () => {
const newCollectionID = await createCollectionWithPropsExpectSuccess({propPerm: [{key: 'key1', permission: {mutable: true, collectionAdmin: false, tokenOwner: false}}]});
await createItemWithPropsExpectFailure(bob, newCollectionID, 'NFT', [{key: 'key1', value: 'v'}]);
});
});
it('Adding property without access rights', async () => {
- await usingApi(async api => {
+ await usingApi(async () => {
const newCollectionID = await createCollectionWithPropsExpectSuccess();
await addCollectionAdminExpectSuccess(alice, newCollectionID, bob.address);
@@ -152,7 +152,7 @@
});
it('Adding more than 64 prps', async () => {
- await usingApi(async api => {
+ await usingApi(async () => {
const prps = [];
for (let i = 0; i < 65; i++) {
@@ -166,7 +166,7 @@
});
it('Trying to add bigger property than allowed', async () => {
- await usingApi(async api => {
+ await usingApi(async () => {
const newCollectionID = await createCollectionWithPropsExpectSuccess();
createItemWithPropsExpectFailure(alice, newCollectionID, 'NFT', [{key: 'k', value: 'vvvvvv'.repeat(5000)}, {key: 'k2', value: 'vvv'.repeat(5000)}]);
tests/src/createMultipleItems.test.tsdiffbeforeafterboth--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -49,13 +49,13 @@
const alice = privateKey('//Alice');
await submitTransactionAsync(
alice,
- api.tx.unique.setPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}])
+ api.tx.unique.setPropertyPermissions(collectionId, [{key: 'data', permission: {tokenOwner: true}}]),
);
const args = [
{NFT: {properties: [{key: 'data', value: '1'}]}},
{NFT: {properties: [{key: 'data', value: '2'}]}},
- {NFT: {properties: [{key: 'data', value: '3'}]}}
+ {NFT: {properties: [{key: 'data', value: '3'}]}},
];
const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -143,7 +143,7 @@
const args = [
{NFT: {properties: [{key: 'k', value: 'v1'}]}},
{NFT: {properties: [{key: 'k', value: 'v2'}]}},
- {NFT: {properties: [{key: 'k', value: 'v3'}]}}
+ {NFT: {properties: [{key: 'k', value: 'v3'}]}},
];
await createMultipleItemsWithPropsExpectSuccess(alice, collectionId, args);
@@ -171,7 +171,7 @@
const args = [
{NFT: {properties: [{key: 'k', value: 'v1'}]}},
{NFT: {properties: [{key: 'k', value: 'v2'}]}},
- {NFT: {properties: [{key: 'k', value: 'v3'}]}}
+ {NFT: {properties: [{key: 'k', value: 'v3'}]}},
];
await createMultipleItemsWithPropsExpectSuccess(alice, collectionId, args);
@@ -190,16 +190,14 @@
it('Create 0x31, 0x32, 0x33 items in active NFT with property itemOwnerOrAdmin', async () => {
await usingApi(async (api: ApiPromise) => {
- const collectionId = await createCollectionWithPropsExpectSuccess(
- {propPerm: [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]}
- );
+ const collectionId = await createCollectionWithPropsExpectSuccess({propPerm: [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]});
const itemsListIndexBefore = await getLastTokenId(api, collectionId);
expect(itemsListIndexBefore).to.be.equal(0);
const alice = privateKey('//Alice');
const args = [
{NFT: {properties: [{key: 'k', value: 'v1'}]}},
{NFT: {properties: [{key: 'k', value: 'v2'}]}},
- {NFT: {properties: [{key: 'k', value: 'v3'}]}}
+ {NFT: {properties: [{key: 'k', value: 'v3'}]}},
];
await createMultipleItemsWithPropsExpectSuccess(alice, collectionId, args);
@@ -230,16 +228,14 @@
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 createCollectionWithPropsExpectSuccess(
- {propPerm: [{key: 'data', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]}
- );
+ const collectionId = await createCollectionWithPropsExpectSuccess({propPerm: [{key: 'data', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]});
const itemsListIndexBefore = await getLastTokenId(api, collectionId);
expect(itemsListIndexBefore).to.be.equal(0);
await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
const args = [
{NFT: {properties: [{key: 'data', value: 'v1'}]}},
{NFT: {properties: [{key: 'data', value: 'v2'}]}},
- {NFT: {properties: [{key: 'data', value: 'v3'}]}}
+ {NFT: {properties: [{key: 'data', value: 'v3'}]}},
];
const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
@@ -358,9 +354,7 @@
it('Create token in not existing collection', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionId = await getCreatedCollectionCount(api) + 1;
- const createMultipleItemsTx = api.tx.unique.createMultipleItems(
- collectionId, normalizeAccountId(alice.address), ['NFT', 'NFT', 'NFT']
- );
+ const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), ['NFT', 'NFT', 'NFT']);
await expect(executeTransaction(api, alice, createMultipleItemsTx)).to.be.rejectedWith(/common\.CollectionNotFound/);
});
});
@@ -369,7 +363,7 @@
await usingApi(async (api: ApiPromise) => {
// NFT
const collectionId = await createCollectionWithPropsExpectSuccess({
- propPerm: [{key: 'key', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]
+ propPerm: [{key: 'key', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}],
});
const alice = privateKey('//Alice');
const args = [
@@ -399,11 +393,7 @@
const collectionId = await createCollectionExpectSuccess();
const createMultipleItemsTx = api.tx.unique
.createMultipleItems(collectionId, normalizeAccountId(alice.address), ['NFT', 'Fungible', 'ReFungible']);
- await expect(
- executeTransaction(api, alice, createMultipleItemsTx)
- ).to.be.rejectedWith(
- /nonfungible\.NotNonfungibleDataUsedToMintFungibleCollectionToken/
- );
+ await expect(executeTransaction(api, alice, createMultipleItemsTx)).to.be.rejectedWith(/nonfungible\.NotNonfungibleDataUsedToMintFungibleCollectionToken/);
// garbage collection :-D // lol
await destroyCollectionExpectSuccess(collectionId);
});
@@ -412,7 +402,7 @@
it('Create tokens with different data limits <> maximum data limit', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionId = await createCollectionWithPropsExpectSuccess({
- propPerm: [{key: 'key', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]
+ propPerm: [{key: 'key', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}],
});
const args = [
{NFT: {properties: [{key: 'key', value: 'A'}]}},
@@ -441,7 +431,7 @@
it('User doesnt have editing rights', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionId = await createCollectionWithPropsExpectSuccess({
- propPerm: [{key: 'key1', permission: {mutable: true, collectionAdmin: false, tokenOwner: false}}]
+ propPerm: [{key: 'key1', permission: {mutable: true, collectionAdmin: false, tokenOwner: false}}],
});
const itemsListIndexBefore = await getLastTokenId(api, collectionId);
expect(itemsListIndexBefore).to.be.equal(0);
@@ -449,7 +439,7 @@
const args = [
{NFT: {properties: [{key: 'key1', value: 'v2'}]}},
{NFT: {}},
- {NFT: {}}
+ {NFT: {}},
];
const tx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
@@ -497,11 +487,11 @@
const args = [
{NFT: {properties: prps}},
{NFT: {properties: prps}},
- {NFT: {properties: prps}}
+ {NFT: {properties: prps}},
];
// there are no permissions, but will fail anyway because of too much weight for a block
- const tx2 = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);;
+ const tx2 = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
await expect(submitTransactionExpectFailAsync(alice, tx2)).to.be.rejected;
});
});
@@ -509,7 +499,7 @@
it('Trying to add bigger property than allowed', async () => {
await usingApi(async (api: ApiPromise) => {
const collectionId = await createCollectionWithPropsExpectSuccess({
- propPerm: [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]
+ propPerm: [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}],
});
const itemsListIndexBefore = await getLastTokenId(api, collectionId);
expect(itemsListIndexBefore).to.be.equal(0);
tests/src/createMultipleItemsEx.test.tsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import {expect} from 'chai';18import privateKey from './substrate/privateKey';19import usingApi, {executeTransaction, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';20import {createCollectionExpectSuccess, createCollectionWithPropsExpectSuccess, addCollectionAdminExpectSuccess, getCreateItemsResult} from './util/helpers';2122describe('createMultipleItemsEx', () => {23 it('can initialize multiple NFT with different owners', async () => {24 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});25 const alice = privateKey('//Alice');26 const bob = privateKey('//Bob');27 const charlie = privateKey('//Charlie');28 await usingApi(async (api) => {29 const data = [30 {31 owner: {substrate: alice.address},32 // constData: '0x0000',33 }, {34 owner: {substrate: bob.address},35 // constData: '0x2222',36 }, {37 owner: {substrate: charlie.address},38 // constData: '0x4444',39 },40 ];4142 await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {43 NFT: data,44 }));45 const tokens = await api.query.nonfungible.tokenData.entries(collection);46 const json = tokens.map(([, token]) => token.toJSON());47 expect(json).to.be.deep.equal(data);48 });49 });5051 it('createMultipleItemsEx with property Admin', async () => {52 const collection = await createCollectionWithPropsExpectSuccess({mode: {type: 'NFT'}, propPerm: [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: false}}]});53 const alice = privateKey('//Alice');54 const bob = privateKey('//Bob');55 const charlie = privateKey('//Charlie');56 await usingApi(async (api) => {57 const data = [58 {59 owner: {substrate: alice.address},60 // constData: '0x1111',61 properties: [{key: 'k', value: 'v1'}],62 }, {63 owner: {substrate: bob.address},64 // constData: '0x2222',65 properties: [{key: 'k', value: 'v2'}],66 }, {67 owner: {substrate: charlie.address},68 // constData: '0x4444',69 properties: [{key: 'k', value: 'v3'}],70 },71 ];7273 await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {74 NFT: data,75 }));76 for (let i = 1; i < 4; i++) {77 expect(await api.rpc.unique.tokenProperties(collection, i)).not.to.be.empty;78 }79 });80 });8182 it('createMultipleItemsEx with property AdminConst', async () => {83 const collection = await createCollectionWithPropsExpectSuccess({mode: {type: 'NFT'}, propPerm: [{key: 'k', permission: {mutable: false, collectionAdmin: true, tokenOwner: false}}]});84 const alice = privateKey('//Alice');85 const bob = privateKey('//Bob');86 const charlie = privateKey('//Charlie');87 await usingApi(async (api) => {88 const data = [89 {90 owner: {substrate: alice.address},91 // constData: '0x0000',92 properties: [{key: 'k', value: 'v1'}],93 }, {94 owner: {substrate: bob.address},95 // constData: '0x2222',96 properties: [{key: 'k', value: 'v2'}],97 }, {98 owner: {substrate: charlie.address},99 // constData: '0x4444',100 properties: [{key: 'k', value: 'v3'}],101 },102 ];103104 await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {105 NFT: data,106 }));107 for (let i = 1; i < 4; i++) {108 expect(await api.rpc.unique.tokenProperties(collection, i)).not.to.be.empty;109 }110 });111 });112113 it('createMultipleItemsEx with property itemOwnerOrAdmin', async () => {114 const collection = await createCollectionWithPropsExpectSuccess({mode: {type: 'NFT'}, propPerm: [{key: 'k', permission: {mutable: false, collectionAdmin: true, tokenOwner: true}}]});115 const alice = privateKey('//Alice');116 const bob = privateKey('//Bob');117 const charlie = privateKey('//Charlie');118 await usingApi(async (api) => {119 const data = [120 {121 owner: {substrate: alice.address},122 // constData: '0x0000',123 properties: [{key: 'k', value: 'v1'}],124 }, {125 owner: {substrate: bob.address},126 // constData: '0x2222',127 properties: [{key: 'k', value: 'v2'}],128 }, {129 owner: {substrate: charlie.address},130 // constData: '0x4444',131 properties: [{key: 'k', value: 'v3'}],132 },133 ];134135 await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {136 NFT: data,137 }));138 for (let i = 1; i < 4; i++) {139 expect(await api.rpc.unique.tokenProperties(collection, i)).not.to.be.empty;140 }141 });142 });143144 it('No editing rights', async () => {145 const collection = await createCollectionWithPropsExpectSuccess({properties: [{key: 'key1', value: 'v'}],146 propPerm: [{key: 'key1', permission: {mutable: true, collectionAdmin: false, tokenOwner: false}}]});147 const alice = privateKey('//Alice');148 const bob = privateKey('//Bob');149 const charlie = privateKey('//Charlie');150 await addCollectionAdminExpectSuccess(alice, collection, bob.address);151 await usingApi(async (api) => {152 const data = [153 {154 owner: {substrate: alice.address},155 properties: [{key: 'key1', value: 'v2'}],156 }, {157 owner: {substrate: bob.address},158 properties: [{key: 'key1', value: 'v2'}],159 }, {160 owner: {substrate: charlie.address},161 properties: [{key: 'key1', value: 'v2'}],162 },163 ];164165 const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});166 // await executeTransaction(api, alice, tx);167168 //await submitTransactionExpectFailAsync(alice, tx);169 await expect(executeTransaction(api, alice, tx)).to.be.rejectedWith(/common\.NoPermission/);170 });171 });172173 it('User doesnt have editing rights', async () => {174 const collection = await createCollectionWithPropsExpectSuccess({properties: [{key: 'key1', value: 'v'}],175 propPerm: [{key: 'key1', permission: {mutable: false, collectionAdmin: false, tokenOwner: false}}]});176 const alice = privateKey('//Alice');177 const bob = privateKey('//Bob');178 const charlie = privateKey('//Charlie');179 await addCollectionAdminExpectSuccess(alice, collection, bob.address);180 await usingApi(async (api) => {181 const data = [182 {183 owner: {substrate: alice.address},184 properties: [{key: 'key1', value: 'v2'}],185 }, {186 owner: {substrate: alice.address},187 properties: [{key: 'key1', value: 'v2'}],188 }, {189 owner: {substrate: alice.address},190 properties: [{key: 'key1', value: 'v2'}],191 },192 ];193194 const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});195 // await executeTransaction(api, alice, tx);196197 //await submitTransactionExpectFailAsync(alice, tx);198 await expect(executeTransaction(api, alice, tx)).to.be.rejectedWith(/common\.NoPermission/);199 });200 });201202 it('Adding property without access rights', async () => {203 const collection = await createCollectionWithPropsExpectSuccess({properties: [{key: 'key1', value: 'v'}]});204 const alice = privateKey('//Alice');205 const bob = privateKey('//Bob');206 const charlie = privateKey('//Charlie');207 await addCollectionAdminExpectSuccess(alice, collection, bob.address);208 await usingApi(async (api) => {209 const data = [210 {211 owner: {substrate: alice.address},212 properties: [{key: 'key1', value: 'v2'}],213 }, {214 owner: {substrate: bob.address},215 properties: [{key: 'key1', value: 'v2'}],216 }, {217 owner: {substrate: charlie.address},218 properties: [{key: 'key1', value: 'v2'}],219 },220 ];221222 const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});223224 await expect(executeTransaction(api, alice, tx)).to.be.rejectedWith(/common\.NoPermission/);225 //await submitTransactionExpectFailAsync(alice, tx);226 });227 });228229 it('Adding more than 64 properties', async () => {230 const propPerms = [{key: 'key', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}];231232 for (let i = 0; i < 65; i++) {233 propPerms.push({key: `key${i}`, permission: {mutable: true, collectionAdmin: true, tokenOwner: true}});234 }235236 const alice = privateKey('//Alice');237 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});238 await usingApi(async (api) => {239 await expect(240 executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, propPerms))241 ).to.be.rejectedWith(/common\.PropertyLimitReached/);242 });243 });244245 it('Trying to add bigger property than allowed', async () => {246 const collection = await createCollectionWithPropsExpectSuccess({propPerm: [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]});247 const alice = privateKey('//Alice');248 const bob = privateKey('//Bob');249 const charlie = privateKey('//Charlie');250 await addCollectionAdminExpectSuccess(alice, collection, bob.address);251 await usingApi(async (api) => {252 const data = [253 {254 owner: {substrate: alice.address}, properties: [{key: 'k', value: 'vvvvvv'.repeat(5000)}, {key: 'k2', value: 'vvv'.repeat(5000)}],255 }, {256 owner: {substrate: bob.address}, properties: [{key: 'k', value: 'vvvvvv'.repeat(5000)}, {key: 'k2', value: 'vvv'.repeat(5000)}],257 }, {258 owner: {substrate: charlie.address}, properties: [{key: 'k', value: 'vvvvvv'.repeat(5000)}, {key: 'k2', value: 'vvv'.repeat(5000)}],259 },260 ];261262 const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});263264 //await submitTransactionExpectFailAsync(alice, tx);265 await expect(executeTransaction(api, alice, tx)).to.be.rejectedWith(/common\.NoPermission/);266 });267 });268269 it('can initialize multiple NFT with different owners', async () => {270 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});271 const alice = privateKey('//Alice');272 const bob = privateKey('//Bob');273 const charlie = privateKey('//Charlie');274 await usingApi(async (api) => {275 const data = [276 {277 owner: {substrate: alice.address},278 // constData: '0x0000',279 }, {280 owner: {substrate: bob.address},281 // constData: '0x2222',282 }, {283 owner: {substrate: charlie.address},284 // constData: '0x4444',285 },286 ];287288 await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {289 NFT: data,290 }));291 const tokens = await api.query.nonfungible.tokenData.entries(collection);292 const json = tokens.map(([, token]) => token.toJSON());293 expect(json).to.be.deep.equal(data);294 });295 });296297 it('can initialize multiple NFT with different owners', async () => {298 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});299 const alice = privateKey('//Alice');300 const bob = privateKey('//Bob');301 const charlie = privateKey('//Charlie');302 await usingApi(async (api) => {303 const data = [304 {305 owner: {substrate: alice.address},306 // constData: '0x0000',307 }, {308 owner: {substrate: bob.address},309 // constData: '0x2222',310 }, {311 owner: {substrate: charlie.address},312 // constData: '0x4444',313 },314 ];315316 await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {317 NFT: data,318 }));319 const tokens = await api.query.nonfungible.tokenData.entries(collection);320 const json = tokens.map(([, token]) => token.toJSON());321 expect(json).to.be.deep.equal(data);322 });323 });324325 it('fails when trying to set multiple owners when creating multiple refungibles', async () => {326 const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});327 const alice = privateKey('//Alice');328 const bob = privateKey('//Bob');329330 await usingApi(async (api) => {331 // Polkadot requires map, and yet requires keys to be JSON encoded332 const users = new Map();333 users.set(JSON.stringify({substrate: alice.address}), 1);334 users.set(JSON.stringify({substrate: bob.address}), 1);335336 // TODO: better error message?337 await expect(executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {338 RefungibleMultipleItems: [339 {users},340 {users},341 ],342 }))).to.be.rejectedWith(/^refungible\.NotRefungibleDataUsedToMintFungibleCollectionToken$/);343 });344 });345});346'';tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -347,7 +347,7 @@
name: strToUTF16(name),
description: strToUTF16(description),
tokenPrefix: strToUTF16(tokenPrefix),
- mode: modeprm as any
+ mode: modeprm as any,
});
const events = await submitTransactionAsync(alicePrivateKey, tx);
const result = getCreateCollectionResult(events);
@@ -561,7 +561,7 @@
expect(result.success).to.be.true;
});
-}
+};
export async function setCollectionLimitsExpectFailure(sender: IKeyringPair, collectionId: number, limits: any) {
await usingApi(async (api) => {