@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
348 lines • 21.4 kB
JavaScript
;
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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