UNPKG

@tatumio/tatum-v1

Version:

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

348 lines 21.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const model_1 = require("../model"); const eth_1 = require("./eth"); process.env.TATUM_API_KEY = '13320948-488c-4963-8eb4-e4a1d541a559'; describe('ETH transactions', () => { // it('should test valid transaction ETH data', async () => { // const body = new TransferErc20(); // body.fromPrivateKey = '0x2dedb85f2a87f17e143dbd5e51a589f27b4c6acf6bf29ebff8eb5c32b5e9de05' // body.amount = '0' // body.currency = Currency.ETH // body.to = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // const txData = await prepareEthOrErc20SignedTransaction(body) // expect(txData).toContain('0x') // }) // it('should test valid transaction ERC20 data', async () => { // const body = new TransferErc20(); // body.fromPrivateKey = '0x2dedb85f2a87f17e143dbd5e51a589f27b4c6acf6bf29ebff8eb5c32b5e9de05' // body.amount = '0' // body.currency = Currency.PLTC // body.to = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // const txData = await prepareEthOrErc20SignedTransaction(body) // expect(txData).toContain('0x') // }) // it('should test valid custom transaction ERC20 data', async () => { // const body = new TransferErc20(); // body.fromPrivateKey = '0x37b091fc4ce46a56da643f021254612551dbe0944679a6e09cb5724d3085c9ab'; // body.amount = '3'; // body.contractAddress = '0xa089e2375e315a911816dcf9ad482bd3bfc8ec11'; // body.to = '0xfb99F8aE9b70A0C8Cd96aE665BBaf85A7E01a2ef'; // body.digits = 18; // const txData = await prepareCustomErc20SignedTransaction(body); // expect(txData).toContain('0x'); // }) // it('should test valid custom deployment ERC20', async () => { // const body = new DeployErc20() // body.fromPrivateKey = '0xd71444acde61b56af4df1d9154cd2c83a8111f8a40c4fcc54a8ffceebcafacb8' // body.symbol = 'SYMBOL' // body.name = 'Test_ERC20' // body.supply = '1000000000' // body.totalCap = '100000000000000' // body.address = '0x2AC0ee886dBC16e423b90381aF71293bbAecc0d0' // body.digits = 10 // const txData = await sendDeployErc20Transaction(body) // console.log(txData) // expect(txData).toContain('0x') // }) // it('should test valid mint ERC20', async () => { // const body = new MintErc20() // body.fromPrivateKey = '0x2dedb85f2a87f17e143dbd5e51a589f27b4c6acf6bf29ebff8eb5c32b5e9de05' // body.amount = '0' // body.contractAddress = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // body.to = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // const txData = await prepareEthMintErc20SignedTransaction(body) // expect(txData).toContain('0x') // }) // it('should test valid burn ERC20', async () => { // const body = new BurnErc20() // body.fromPrivateKey = '0x2dedb85f2a87f17e143dbd5e51a589f27b4c6acf6bf29ebff8eb5c32b5e9de05' // body.amount = '0' // body.contractAddress = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // const txData = await prepareEthBurnErc20SignedTransaction(body) // expect(txData).toContain('0x') // }) // it('should test invalid custom deployment ERC20, missing supply', async () => { // const body = new DeployErc20() // body.fromPrivateKey = '0x4874827a55d87f2309c55b835af509e3427aa4d52321eeb49a2b93b5c0f8edfb' // body.symbol = 'SYMBOL' // body.name = 'Test_ERC20' // body.address = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // body.digits = 10 // try { // await prepareDeployErc20SignedTransaction(body) // fail('Validation did not pass.') // } catch (e) { // console.error(e) // } // }) // it('should test invalid custom transaction ERC20 data, missing digits', async () => { // const body = new TransferErc20(); // body.fromPrivateKey = '0x4874827a55d87f2309c55b835af509e3427aa4d52321eeb49a2b93b5c0f8edfb' // body.amount = '0' // body.contractAddress = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // body.to = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // try { // await prepareCustomErc20SignedTransaction(body) // fail('Validation did not pass.') // } catch (e) { // console.error(e) // } // }) // it('should not test valid transaction data, missing currency', async () => { // const body = new TransferErc20(); // body.fromPrivateKey = '0x4874827a55d87f2309c55b835af509e3427aa4d52321eeb49a2b93b5c0f8edfb' // body.amount = '0' // body.to = '0x8cb76aed9c5e336ef961265c6079c14e9cd3d2ea' // try { // await prepareEthOrErc20SignedTransaction(body) // fail('Validation did not pass.') // } catch (e) { // console.error(e) // } // }) // it('should test ethGetGasPriceInWei', async () => { // const gasPrice = await ethGetGasPriceInWei() // expect(gasPrice).not.toBeNull() // }) // it('should test ethEstimateGas', async () => { // const ethGas = await ethEstimateGas({ // from: '0x11bb089914dd9bfba33b8dc83a95d368afeb1553', // to: '0x9b85c57222826d82dd106e8455d3918846b507d5', // amount: '10', // }) // expect(ethGas).not.toBeNull() // }) // it('should test read smart contract method invocation', async () => { // const result = await sendSmartContractMethodInvocationTransaction({ // contractAddress: '0x595bad1621784e9b0161d909be0117f17a5d37ca', // methodName: 'balanceOf', // methodABI: { // constant: true, // inputs: [ // { // name: 'owner', // type: 'address', // }, // ], // name: 'balanceOf', // outputs: [ // { // name: '', // type: 'uint256', // }, // ], // payable: false, // stateMutability: 'view', // type: 'function', // }, // params: ['0x8c76887d2e738371bd750362fb55887343472346'], // }) // console.log(result) // expect(result).not.toBeNull() // }) // it('should test write smart contract method invocation', async () => { // const result = await sendSmartContractMethodInvocationTransaction({ // fromPrivateKey: '0xd71444acde61b56af4df1d9154cd2c83a8111f8a40c4fcc54a8ffceebcafacb8', // contractAddress: '0x7b2ecd15798beb486848c0aa172833215617764d', // fee: { gasLimit: '40000', gasPrice: '200' }, // methodName: 'transferFrom', // methodABI: { // constant: false, // inputs: [ // { // name: 'from', // type: 'address', // }, // { // name: 'to', // type: 'address', // }, // { // name: 'value', // type: 'uint256', // }, // ], // name: 'transferFrom', // outputs: [ // { // name: '', // type: 'bool', // }, // ], // payable: false, // stateMutability: 'nonpayable', // type: 'function', // }, // params: ['0x811dfbff13adfbc3cf653dcc373c03616d3471c9', '0x8c76887d2e738371bd750362fb55887343472346', '1'], // }) // expect(result).not.toBeNull() // }) // it('should test eth 721 mint transaction', async () => { // try { // const tokenId = new Date().getTime().toString() // const mintedToken = await sendMintErc721Transaction({ // to: '0x811dfbff13adfbc3cf653dcc373c03616d3471c9', // tokenId, // url: 'https://www.seznam.cz', // fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29', // chain: Currency.ETH, // contractAddress: '0x687422eEA2cB73B5d3e242bA5456b782919AFc85', // fee: { // gasLimit: '50000', // gasPrice: '110' // } // }) // console.log(tokenId) // expect(mintedToken).not.toBeNull() // } catch (e) { // console.log(e) // } // }) // it('should test eth 721 mint multiple transaction', async () => { // const firstTokenId = new Date().getTime() // const secondTokenId = firstTokenId + 1 // const mintedTokens = await sendMintMultipleErc721Transaction({ // to: ['0x811dfbff13adfbc3cf653dcc373c03616d3471c9', '0x811dfbff13adfbc3cf653dcc373c03616d3471c9'], // tokenId: [firstTokenId.toString(), secondTokenId.toString()], // url: ['https://www.seznam.cz', 'https://www.seznam.cz'], // fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29', // chain: Currency.ETH, // contractAddress: '0x687422eEA2cB73B5d3e242bA5456b782919AFc85', // fee: { // gasLimit: '50000', // gasPrice: '100' // } // }) // expect(mintedTokens).not.toBeNull() // }) // it('should test eth 721 burn transaction', async () => { // const burnErc721Token = await sendBurnErc721Transaction({ // tokenId: '1615552558810', // fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29', // chain: Currency.ETH, // contractAddress: '0x687422eEA2cB73B5d3e242bA5456b782919AFc85', // fee: { // gasLimit: '5000000', // gasPrice: '110' // }, // }) // expect(burnErc721Token).not.toBeNull() // }) // it('should test eth 721 send transaction', async () => { // const sendErc721Token = await sendErc721Transaction({ // to: '0x811dfbff13adfbc3cf653dcc373c03616d3471c9', // tokenId: '1615546122766', // fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29', // chain: Currency.ETH, // contractAddress: '0x687422eEA2cB73B5d3e242bA5456b782919AFc85', // fee: { // gasLimit: '5000000', // gasPrice: '100' // } // }) // expect(sendErc721Token).not.toBeNull() // }) // it('should test eth 721 deploy transaction', async () => { // const deployErc721Token = await sendDeployErc721Transaction({ // symbol: '1oido3id3', // fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29', // chain: Currency.ETH, // name: '2123kd', // }) // expect(deployErc721Token).not.toBeNull() // }) // ERC-721 Provenance // it('should test eth 721 deploy transaction', async () => { // const deployErc721Token = await sendDeployErc721Transaction({ // symbol: 'test', // fromPrivateKey: '0xd71444acde61b56af4df1d9154cd2c83a8111f8a40c4fcc54a8ffceebcafacb8', // chain: Currency.ETH, // provenance: true, // name: 'test', // }) // expect(deployErc721Token).not.toBeNull() // console.log(deployErc721Token) // }) // it('should test eth 721 mint multiple transaction', async () => { // const mintedTokens = await prepareEthMintMultipleErc721ProvenanceSignedTransaction({ // to: ['0x75Bd6dFA13C0086b9C8C4b510b1F758c720B79BF', '0x75Bd6dFA13C0086b9C8C4b510b1F758c720B79BF'], // tokenId: ['1765', '2231'], // url: ['https://www.seznam.cz', 'https://www.seznam.cz'], // fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29', // chain: Currency.ETH, // contractAddress: '0xc788be3b6e035f2f8e56662540f5bb8c8b3e98b7', // }) // console.log(mintedTokens) // expect(mintedTokens).not.toBeNull() // }) // it('should test eth 721 mint multiple transaction with cashback', async () => { // const mintedTokens = await sendMintErc721ProvenanceTransaction({ // to: '0x2AC0ee886dBC16e423b90381aF71293bbAecc0d0', // tokenId: '1', // url: 'https://www.seznam.cz', // authorAddresses: ['0xD25031B1aB4D82e5fDFb700234b2a22e272232Be'], // cashbackValues: ['0.05'], // fixedValues: ['0.5'], // fromPrivateKey: '0xd71444acde61b56af4df1d9154cd2c83a8111f8a40c4fcc54a8ffceebcafacb8', // chain: Currency.ETH, // contractAddress: '0x7b2ecd15798beb486848c0aa172833215617764d', // }) // console.log(mintedTokens) // expect(mintedTokens).not.toBeNull() // }) // it('should test eth 721 mint transaction', async () => { // const mintedTokens = await sendMintErc721ProvenanceTransaction({ // to: '0x2AC0ee886dBC16e423b90381aF71293bbAecc0d0', // tokenId: '2', // url: 'https://www.seznam.cz', // authorAddresses: ['0xD25031B1aB4D82e5fDFb700234b2a22e272232Be'], // cashbackValues: ['0.05'], // fixedValues: ['0.01'], // fromPrivateKey: '0xd71444acde61b56af4df1d9154cd2c83a8111f8a40c4fcc54a8ffceebcafacb8', // chain: Currency.ETH, // contractAddress: '0xf79656021abc06d6d7a9a23319510f08b370ea10' // }) // console.log(mintedTokens) // expect(mintedTokens).not.toBeNull() // }) // it('should test eth 721 burn transaction', async () => { // const burnErc721Token = await prepareEthBurnErc721SignedTransaction({ // tokenId: '12312', // fromPrivateKey: '0x1a4344e55c562db08700dd32e52e62e7c40b1ef5e27c6ddd969de9891a899b29', // chain: Currency.ETH, // contractAddress: '0x5ef08fba01e8d80ff18f4d98e31a43fbb01e7f8a', // fee: { // gasLimit: '5000000', // gasPrice: '110' // }, // }) // expect(burnErc721Token).not.toBeNull() // }) it('should test eth 721 send transaction', async () => { const sendErc721Token = await eth_1.sendErc721Transaction({ to: '0x6597da6f497c74118929d93311daa6533f00f196', tokenId: '1', provenance: true, fromPrivateKey: '0xd71444acde61b56af4df1d9154cd2c83a8111f8a40c4fcc54a8ffceebcafacb8', provenanceData: "CUSTOMTOKEN0xd15d2f98708e55ecac9c3da5aad64cd8eef6d6af", tokenPrice: '1000', value: '2', chain: model_1.Currency.ETH, contractAddress: '0xf79656021abc06d6d7a9a23319510f08b370ea10', }); console.log(sendErc721Token); expect(sendErc721Token).not.toBeNull(); }); // it('should test valid transfer data 721 transaction', async () => { // const body = new SmartContractReadMethodInvocation() // body.contractAddress = '0x5ef08fba01e8d80ff18f4d98e31a43fbb01e7f8a' // body.params = ['10'] // body.methodName = 'getTokenData' // body.methodABI = erc721Provenance_abi.find((a: any) => a.name === 'getTokenData') // const response = await sendSmartContractReadMethodInvocationTransaction(body); // // @ts-ignore // console.log(JSON.stringify(response)) // }) }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZXRoLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxvQ0FBc0Y7QUFJdEYsK0JBaUJlO0FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUMsc0NBQXNDLENBQUE7QUFDaEUsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyw2REFBNkQ7SUFDN0Qsc0NBQXNDO0lBQ3RDLCtGQUErRjtJQUMvRixzQkFBc0I7SUFDdEIsaUNBQWlDO0lBQ2pDLDJEQUEyRDtJQUMzRCxrRUFBa0U7SUFDbEUsbUNBQW1DO0lBQ25DLEtBQUs7SUFFTCwrREFBK0Q7SUFDL0Qsc0NBQXNDO0lBQ3RDLCtGQUErRjtJQUMvRixzQkFBc0I7SUFDdEIsa0NBQWtDO0lBQ2xDLDJEQUEyRDtJQUMzRCxrRUFBa0U7SUFDbEUsbUNBQW1DO0lBQ25DLEtBQUs7SUFFTCxzRUFBc0U7SUFDdEUsc0NBQXNDO0lBQ3RDLGdHQUFnRztJQUNoRyx1QkFBdUI7SUFDdkIseUVBQXlFO0lBQ3pFLDREQUE0RDtJQUM1RCxzQkFBc0I7SUFDdEIsb0VBQW9FO0lBQ3BFLG9DQUFvQztJQUNwQyxLQUFLO0lBRUwsZ0VBQWdFO0lBQ2hFLG1DQUFtQztJQUNuQywrRkFBK0Y7SUFDL0YsMkJBQTJCO0lBQzNCLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0Isc0NBQXNDO0lBQ3RDLGdFQUFnRTtJQUNoRSxxQkFBcUI7SUFDckIsMERBQTBEO0lBQzFELHdCQUF3QjtJQUN4QixtQ0FBbUM7SUFDbkMsS0FBSztJQUVMLG1EQUFtRDtJQUNuRCxpQ0FBaUM7SUFDakMsK0ZBQStGO0lBQy9GLHNCQUFzQjtJQUN0Qix3RUFBd0U7SUFDeEUsMkRBQTJEO0lBQzNELG9FQUFvRTtJQUNwRSxtQ0FBbUM7SUFDbkMsS0FBSztJQUVMLG1EQUFtRDtJQUNuRCxpQ0FBaUM7SUFD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