UNPKG

@tatumio/tatum-v1

Version:

Tatum API client allows browsers and Node.js clients to interact with Tatum API.

407 lines 39.4 kB
"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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