@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
407 lines • 39.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const model_1 = require("../model");
const index_1 = require("./index");
describe('NFT tests', () => {
jest.setTimeout(99999);
describe('NFT MultiToken transactions', () => {
it('should test eth 1155 deploy transaction', async () => {
const deployMultiTokenToken = await index_1.deployMultiToken(true, {
chain: model_1.Currency.ETH,
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
uri: 'tatum',
fee: {
gasLimit: '5000000',
gasPrice: '150',
}
});
expect(deployMultiTokenToken).not.toBeNull();
console.log('response::', deployMultiTokenToken);
});
it('should test eth 1155 mint transaction', async () => {
const tokenId = '1';
const mintedToken = await index_1.mintMultiToken(true, {
to: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
chain: model_1.Currency.ETH,
tokenId,
data: '0x1234',
amount: '1000',
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xf659eb344f8226331a7c85778c4d02847e120d96',
fee: {
gasLimit: '5000000',
gasPrice: '150',
}
});
console.log(tokenId);
expect(mintedToken).not.toBeNull();
});
it('should test eth 1155 send batch transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiTokenBatch(true, {
to: '0x6c4A48886b77D1197eCFBDaA3D3f35d81d584342',
chain: model_1.Currency.ETH,
tokenId: ['12101', '12102'],
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xf659eb344f8226331a7c85778c4d02847e120d96',
amounts: ['10', '10'],
data: '0x1234',
fee: {
gasLimit: '7000000',
gasPrice: '100'
},
});
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
it('should test eth 1155 burn transaction', async () => {
const burnMultiTokenToken = await index_1.burnMultiToken(true, {
account: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
tokenId: '12101',
amount: '1',
chain: model_1.Currency.ETH,
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xf659eb344f8226331a7c85778c4d02847e120d96'
});
console.log(burnMultiTokenToken);
expect(burnMultiTokenToken).not.toBeNull();
});
it('should test eth 1155 burn batch transaction', async () => {
const burnMultiTokenToken = await index_1.burnMultiTokenBatch(true, {
account: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
tokenId: ['1', '2'],
amounts: ['1', '1'],
chain: model_1.Currency.ETH,
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xf659eb344f8226331a7c85778c4d02847e120d96',
});
expect(burnMultiTokenToken).not.toBeNull();
});
it('should test eth 1155 mint batch transaction', async () => {
const tokenId = [['12101', '12102'], ['12101', '12102']];
const mintedToken = await index_1.mintMultiTokenBatch(true, {
to: ['0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f', '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f'],
chain: model_1.Currency.ETH,
tokenId,
data: '0x1234',
amounts: [['100', '100'], ['100', '100']],
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xf659eb344f8226331a7c85778c4d02847e120d96',
fee: {
gasLimit: '5000000',
gasPrice: '150',
}
});
console.log(mintedToken);
expect(mintedToken).not.toBeNull();
});
it('should test eth 1155 send transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiToken(true, {
to: '0x31a19a9E4BDd33982188BCb058a7E2a3515a8136',
chain: model_1.Currency.ETH,
tokenId: '12101',
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xf659eb344f8226331a7c85778c4d02847e120d96',
amount: '1',
data: '0x1234',
});
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
});
describe('NFT BSC 1155 transactions', () => {
it('should test bsc 1155 deploy transaction', async () => {
const deployMultiTokenToken = await index_1.deployMultiToken(true, {
chain: model_1.Currency.BSC,
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
uri: 'tatum',
});
expect(deployMultiTokenToken).not.toBeNull();
console.log('response::', deployMultiTokenToken);
});
it('should test bsc 1155 mint transaction', async () => {
const tokenId = '2';
const mintedToken = await index_1.mintMultiToken(true, {
to: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
chain: model_1.Currency.BSC,
tokenId,
data: '0x1234',
amount: '1000',
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49'
});
console.log(tokenId);
expect(mintedToken).not.toBeNull();
});
it('should test bsc 1155 add minter transaction', async () => {
const tx = await index_1.sendAddMultiTokenMinter(true, {
minter: '0x80d8bac9a6901698b3749fe336bbd1385c1f98f2',
chain: model_1.Currency.BSC,
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0x2c77a428b01e6403f237b7417a7091a3a5179f14'
});
console.log(tx);
expect(tx).not.toBeNull();
const mintedToken = await index_1.mintMultiToken(true, {
to: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
chain: model_1.Currency.BSC,
tokenId: `${Date.now()}`,
data: '0x1234',
amount: '1000',
fromPrivateKey: '0x37b091fc4ce46a56da643f021254612551dbe0944679a6e09cb5724d3085c9ab',
contractAddress: '0x2c77a428b01e6403f237b7417a7091a3a5179f14'
});
expect(mintedToken).not.toBeNull();
});
it('should test bsc 1155 mint batch transaction', async () => {
const tokenId = [['12101', '12102'], ['12101', '12102']];
const mintedToken = await index_1.mintMultiTokenBatch(true, {
to: ['0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f', '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f'],
chain: model_1.Currency.BSC,
tokenId,
data: '0x1234',
amounts: [['100', '100'], ['100', '100']],
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49'
});
console.log(mintedToken);
expect(mintedToken).not.toBeNull();
});
it('should test bsc 1155 send batch transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiTokenBatch(true, {
to: '0x6c4A48886b77D1197eCFBDaA3D3f35d81d584342',
chain: model_1.Currency.BSC,
tokenId: ['1', '2'],
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49',
amounts: ['10', '10'],
data: '0x1234',
fee: {
gasLimit: '7000000',
gasPrice: '100'
},
});
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
it('should test bsc 1155 burn transaction', async () => {
const burnMultiTokenToken = await index_1.burnMultiToken(true, {
account: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
tokenId: '2',
amount: '1',
chain: model_1.Currency.BSC,
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49'
});
console.log(burnMultiTokenToken);
expect(burnMultiTokenToken).not.toBeNull();
});
it('should test bsc 1155 burn batch transaction', async () => {
const burnMultiTokenToken = await index_1.burnMultiTokenBatch(true, {
account: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
tokenId: ['12101', '12102'],
amounts: ['1', '1'],
chain: model_1.Currency.BSC,
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49',
});
expect(burnMultiTokenToken).not.toBeNull();
});
it('should test bsc 1155 send transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiToken(true, {
to: '0x31a19a9E4BDd33982188BCb058a7E2a3515a8136',
chain: model_1.Currency.BSC,
tokenId: '12101',
fromPrivateKey: '0xc313f7e1303ce1c344df819d1d48c79a834c493c73e12b4389bfb50127c8aaa7',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49',
amount: '1',
data: '0x1234',
});
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
});
describe('NFT POLYGON 1155 transactions', () => {
it('should test polygon 1155 deploy transaction', async () => {
const deployMultiTokenToken = await index_1.deployMultiToken(true, {
chain: model_1.Currency.MATIC,
fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29',
uri: 'tatum',
}, 'https://rpc-mumbai.matic.today');
expect(deployMultiTokenToken).not.toBeNull();
console.log('response::', deployMultiTokenToken);
});
it('should test polygon 1155 mint transaction', async () => {
const tokenId = '2';
const mintedToken = await index_1.mintMultiToken(true, {
to: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
chain: model_1.Currency.MATIC,
tokenId,
data: '0x1234',
amount: '1000',
fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49'
}, 'https://rpc-mumbai.matic.today');
console.log(tokenId);
expect(mintedToken).not.toBeNull();
});
it('should test polygon 1155 mint batch transaction', async () => {
const tokenId = [['12101', '12102'], ['12101', '12102']];
const mintedToken = await index_1.mintMultiTokenBatch(true, {
to: ['0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f', '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f'],
chain: model_1.Currency.MATIC,
tokenId,
data: '0x1234',
amounts: [['100', '100'], ['100', '100']],
fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49'
}, 'https://rpc-mumbai.matic.today');
console.log(mintedToken);
expect(mintedToken).not.toBeNull();
});
it('should test polygon 1155 send batch transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiTokenBatch(true, {
to: '0x6c4A48886b77D1197eCFBDaA3D3f35d81d584342',
chain: model_1.Currency.MATIC,
tokenId: ['1', '2'],
fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49',
amounts: ['10', '10'],
data: '0x1234',
fee: {
gasLimit: '7000000',
gasPrice: '100'
},
}, 'https://rpc-mumbai.matic.today');
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
it('should test polygon 1155 burn transaction', async () => {
const burnMultiTokenToken = await index_1.burnMultiToken(true, {
account: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
tokenId: '2',
amount: '1',
chain: model_1.Currency.MATIC,
fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49'
}, 'https://rpc-mumbai.matic.today');
console.log(burnMultiTokenToken);
expect(burnMultiTokenToken).not.toBeNull();
});
it('should test polygon 1155 burn batch transaction', async () => {
const burnMultiTokenToken = await index_1.burnMultiTokenBatch(true, {
account: '0x4b812a77b109A150C2Fc89eD133EaBC78bC9EC8f',
tokenId: ['12101', '12102'],
amounts: ['1', '1'],
chain: model_1.Currency.MATIC,
fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49',
}, 'https://rpc-mumbai.matic.today');
expect(burnMultiTokenToken).not.toBeNull();
});
it('should test polygon 1155 send transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiToken(true, {
to: '0x31a19a9E4BDd33982188BCb058a7E2a3515a8136',
chain: model_1.Currency.MATIC,
tokenId: '12101',
fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29',
contractAddress: '0xe2a8d7c5b2b4acad7e5b9aec0998cdbbeed45e49',
amount: '1',
data: '0x1234',
}, 'https://rpc-mumbai.matic.today');
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
});
describe('NFT CELO 1155 transactions', () => {
it('should test valid deploy 1155 transaction', async () => {
const body = new model_1.CeloDeployMultiToken();
body.fromPrivateKey = '0xa488a82b8b57c3ece4307525741fd8256781906c5fad948b85f1d63000948236';
body.uri = 'Tatum';
body.feeCurrency = model_1.Currency.CUSD;
body.chain = model_1.Currency.CELO;
const test = await index_1.deployMultiToken(true, body, 'https://alfajores-forno.celo-testnet.org');
console.log(test);
expect(test).toBeDefined();
});
it('should test celo 1155 mint transaction with', async () => {
const mintedTokens = await index_1.mintMultiToken(true, {
to: '0x48d4bA7B2698A4b89635b9a2E391152350DB740f',
chain: model_1.Currency.CELO,
tokenId: '2',
fromPrivateKey: '0xa488a82b8b57c3ece4307525741fd8256781906c5fad948b85f1d63000948236',
contractAddress: '0x8B98400E45288bDF05A39Ec791C09CBcd57c31F3',
data: '0x1234',
amount: '1000',
feeCurrency: model_1.Currency.CUSD
});
console.log(mintedTokens);
expect(mintedTokens).not.toBeNull();
});
it('should test valid burn 1155 transaction', async () => {
const body = new model_1.CeloBurnMultiToken();
body.fromPrivateKey = '0xa488a82b8b57c3ece4307525741fd8256781906c5fad948b85f1d63000948236';
body.contractAddress = '0x8B98400E45288bDF05A39Ec791C09CBcd57c31F3';
body.account = '0x48d4bA7B2698A4b89635b9a2E391152350DB740f';
body.tokenId = '2';
body.feeCurrency = model_1.Currency.CUSD;
body.chain = model_1.Currency.CELO;
body.amount = '1';
expect(await index_1.burnMultiToken(true, body, 'https://alfajores-forno.celo-testnet.org')).toBeDefined();
});
it('should test CELO MultiToken mint batch transaction', async () => {
const tokenId = [['1', '2'], ['3', '4']];
const mintedToken = await index_1.mintMultiTokenBatch(true, {
to: ['0x48d4bA7B2698A4b89635b9a2E391152350DB740f', '0x6c4A48886b77D1197eCFBDaA3D3f35d81d584342'],
chain: model_1.Currency.CELO,
tokenId,
data: '0x1234',
amounts: [['100', '100'], ['100', '100']],
fromPrivateKey: '0xa488a82b8b57c3ece4307525741fd8256781906c5fad948b85f1d63000948236',
contractAddress: '0x8B98400E45288bDF05A39Ec791C09CBcd57c31F3',
feeCurrency: model_1.Currency.CUSD
});
console.log(mintedToken);
expect(mintedToken).not.toBeNull();
});
it('should test valid burn batch 1155 transaction', async () => {
const body = new model_1.CeloBurnMultiTokenBatch();
body.fromPrivateKey = '0x4874827a55d87f2309c55b835af509e3427aa4d52321eeb49a2b93b5c0f8edfb';
body.contractAddress = '0x8B98400E45288bDF05A39Ec791C09CBcd57c31F3';
body.account = '0x48d4bA7B2698A4b89635b9a2E391152350DB740f';
body.tokenId = ['1', '2'];
body.feeCurrency = model_1.Currency.CUSD;
body.chain = model_1.Currency.CELO;
body.amounts = ['1', '1'];
expect(await index_1.burnMultiTokenBatch(true, body, 'https://alfajores-forno.celo-testnet.org')).toBeDefined();
});
it('should test celo 1155 send batch transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiTokenBatch(true, {
to: '0x31a19a9E4BDd33982188BCb058a7E2a3515a8136',
chain: model_1.Currency.CELO,
tokenId: ['1', '2'],
fromPrivateKey: '0xa488a82b8b57c3ece4307525741fd8256781906c5fad948b85f1d63000948236',
contractAddress: '0x8B98400E45288bDF05A39Ec791C09CBcd57c31F3',
amounts: ['1', '1'],
data: '0x1234',
feeCurrency: model_1.Currency.CUSD
});
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
it('should test celo 1155 send transaction', async () => {
const sendMultiTokenToken = await index_1.transferMultiToken(true, {
to: '0x31a19a9E4BDd33982188BCb058a7E2a3515a8136',
chain: model_1.Currency.CELO,
tokenId: '1',
fromPrivateKey: '0xa488a82b8b57c3ece4307525741fd8256781906c5fad948b85f1d63000948236',
contractAddress: '0x8B98400E45288bDF05A39Ec791C09CBcd57c31F3',
amount: '1',
feeCurrency: model_1.Currency.CUSD,
data: '0x1234',
});
console.log('Result::', sendMultiTokenToken);
expect(sendMultiTokenToken).not.toBeNull();
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlUb2tlbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL211bHRpVG9rZW4vbXVsdGlUb2tlbi5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFHO0FBQ3JHLG1DQVNpQjtBQUVqQixRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtJQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7UUFDekMsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELE1BQU0scUJBQXFCLEdBQUcsTUFBTSx3QkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZELEtBQUssRUFBRSxnQkFBUSxDQUFDLEdBQUc7Z0JBQ25CLGNBQWMsRUFBRSxvRUFBb0U7Z0JBQ3BGLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEdBQUcsRUFBRTtvQkFDRCxRQUFRLEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLEtBQUs7aUJBQ2xCO2FBQ0osQ0FBQyxDQUFBO1lBQ0YsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDLENBQUE7UUFDcEQsQ0FBQyxDQUFDLENBQUE7UUFDRixFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbkQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFBO1lBQ25CLE1BQU0sV0FBVyxHQUFHLE1BQU0sc0JBQWMsQ0FBQyxJQUFJLEVBQUU7Z0JBQzNDLEVBQUUsRUFBRSw0Q0FBNEM7Z0JBQ2hELEtBQUssRUFBRSxnQkFBUSxDQUFDLEdBQUc7Z0JBQ25CLE9BQU87Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFLE1BQU07Z0JBQ2Qs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