@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
218 lines • 24.3 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const blockchain_1 = require("../blockchain");
const token_bytecode_1 = __importDefault(require("../contracts/trc20/token_bytecode"));
const model_1 = require("../model");
const tron_1 = require("./tron");
const IS_TESTNET = true;
const API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const PRIVATE_KEY = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
const RECEIVER_ADDR = 'TYMwiDu22V6XG3yk6W9cTVBz48okKLRczh';
const SENDER_ADDR = 'TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW';
const TRC20_TOKEN = 'TWgHeettKLgq1hCdEUPaZNCM6hPg8JkG2X';
process.env.TATUM_API_KEY = API_KEY;
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
describe('Tron transactions', () => {
jest.setTimeout(9999);
it('should test valid transaction data', async () => {
const body = new model_1.TransferTron();
body.fromPrivateKey = PRIVATE_KEY;
body.amount = '0.000001';
body.to = RECEIVER_ADDR;
const txData = await tron_1.prepareTronSignedTransaction(IS_TESTNET, body);
expect(JSON.parse(txData).raw_data.contract[0].parameter.value.amount).toBe(1);
});
it('should test valid freeze transaction data', async () => {
const body = new model_1.FreezeTron();
body.fromPrivateKey = PRIVATE_KEY;
body.amount = '1';
body.resource = 'ENERGY';
body.duration = 3;
body.receiver = SENDER_ADDR;
const txData = await tron_1.prepareTronFreezeTransaction(IS_TESTNET, body);
expect(JSON.parse(txData).raw_data.contract[0].parameter.value.frozen_balance).toBe(1000000);
});
it('should test valid TRC20 create transaction data', async () => {
const body = new model_1.CreateTronTrc20();
body.fromPrivateKey = PRIVATE_KEY;
body.decimals = 18;
body.symbol = 'TTM';
body.recipient = RECEIVER_ADDR;
body.name = 'TatumToken';
body.totalSupply = 10;
const txData = await tron_1.prepareTronCreateTrc20SignedTransaction(IS_TESTNET, body);
expect(JSON.parse(txData).raw_data.contract[0].parameter.value.new_contract.bytecode).toContain(token_bytecode_1.default);
});
it.skip('should test valid TRC10 transaction data', async () => {
const body = new model_1.TransferTronTrc10();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.amount = '0.000001';
body.tokenId = '1000538';
body.to = 'TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW';
const txData = await tron_1.prepareTronTrc10SignedTransaction(true, body);
expect(JSON.parse(txData).raw_data.contract[0].parameter.value.amount).toBe(1);
});
it('should test valid TRC20 transaction data', async () => {
const body = new model_1.TransferTronTrc20();
body.tokenAddress = TRC20_TOKEN;
body.fromPrivateKey = PRIVATE_KEY;
body.amount = '1';
body.feeLimit = 100;
body.to = RECEIVER_ADDR;
const txData = await tron_1.prepareTronTrc20SignedTransaction(IS_TESTNET, body);
expect(JSON.parse(txData).raw_data.contract[0].parameter.value.data).toBe('a9059cbb000000000000000000000000f4a376310e3b26a57b30d5ff230dcbc8758b84bc00000000000000000000000000000000000000000000000000000000000f4240');
});
it.skip('should test valid trc10 create data', async () => {
const body = new model_1.CreateTronTrc10();
// 1 account can issue only 1 asset
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.totalSupply = 1000000;
body.abbreviation = 'TTM';
body.url = 'TTM';
body.name = 'TTM';
body.description = 'TTM';
body.decimals = 5;
const txData = await tron_1.prepareTronCreateTrc10SignedTransaction(true, body);
expect(JSON.parse(txData).raw_data.contract[0].parameter.value.amount).toBe(1);
});
it('should not test valid transaction data, to private key assigned', async () => {
const body = new model_1.TransferTron();
// body.amount = '0';
body.amount = '1';
body.to = 'TFnpwE8jCgtq3QpAhFfF2QpXzdBGmKvKMe';
try {
await tron_1.prepareTronSignedTransaction(IS_TESTNET, body);
fail('Validation did not pass.');
}
catch (e) {
// console.error(e);
}
});
// ERC-721 tests
it.skip('should test valid deploy 721 transaction', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronDeployTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.name = 'Tatum';
body.symbol = 'TTM';
body.feeLimit = 600;
try {
const txData = await tron_1.prepareTronDeployTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
}
catch (e) {
console.error(e);
}
});
it.skip('should test valid mint 721 transaction', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronMintTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.to = 'TFnpwE8jCgtq3QpAhFfF2QpXzdBGmKvKMe';
body.contractAddress = 'TCrmdJmvDUPy8qSTgoVStF51yWm6VUh5yQ';
body.tokenId = '3';
body.url = 'https://google.com';
body.feeLimit = 50;
const txData = await tron_1.prepareTronMintTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
});
it.skip('should test valid mint 721 with cashback transaction', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronMintTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.to = 'TYMwiDu22V6XG3yk6W9cTVBz48okKLRczh';
body.contractAddress = 'TCrmdJmvDUPy8qSTgoVStF51yWm6VUh5yQ';
body.cashbackValues = ['3'];
body.authorAddresses = ['TFnpwE8jCgtq3QpAhFfF2QpXzdBGmKvKMe'];
body.tokenId = '3000';
body.url = 'https://google.com';
body.feeLimit = 50;
const txData = await tron_1.prepareTronMintCashbackTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
});
it.skip('should test valid mint multiple 721 transaction', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronMintMultipleTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.to = ['TFnpwE8jCgtq3QpAhFfF2QpXzdBGmKvKMe', 'TYMwiDu22V6XG3yk6W9cTVBz48okKLRczh'];
body.contractAddress = 'TCrmdJmvDUPy8qSTgoVStF51yWm6VUh5yQ';
body.tokenId = ['40', '50'];
body.url = ['https://google.com', 'https://google.com'];
body.feeLimit = 50;
const txData = await tron_1.prepareTronMintMultipleTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
});
it.skip('should test valid update 721 cashback transaction', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronUpdateCashbackTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.contractAddress = 'TCrmdJmvDUPy8qSTgoVStF51yWm6VUh5yQ';
body.cashbackValue = '0';
body.tokenId = '11';
body.feeLimit = 50;
const txData = await tron_1.prepareTronUpdateCashbackForAuthorTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
});
it.skip('should test valid burn 721 transaction', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronBurnTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.contractAddress = 'TCrmdJmvDUPy8qSTgoVStF51yWm6VUh5yQ';
body.tokenId = '3';
body.feeLimit = 50;
const txData = await tron_1.prepareTronBurnTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
});
it.skip('should test valid transfer 721 transaction without cashback', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronTransferTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.contractAddress = 'TCrmdJmvDUPy8qSTgoVStF51yWm6VUh5yQ';
body.to = 'TFnpwE8jCgtq3QpAhFfF2QpXzdBGmKvKMe';
body.tokenId = '50';
body.value = '0';
body.feeLimit = 50;
const txData = await tron_1.prepareTronTransferTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
});
it.skip('should test valid transfer 721 transaction with cashback', async () => {
process.env.TRON_PRO_API_KEY = 'b35409b4-7d11-491e-8760-32d2506a90b5';
process.env.TATUM_API_KEY = '4966d428-9507-45cb-9f90-02cca00674bd';
const body = new model_1.TronTransferTrc721();
body.fromPrivateKey = '842E09EB40D8175979EFB0071B28163E11AED0F14BDD84090A4CEFB936EF5701';
body.chain = model_1.Currency.TRON;
body.contractAddress = 'TCrmdJmvDUPy8qSTgoVStF51yWm6VUh5yQ';
body.to = 'TFnpwE8jCgtq3QpAhFfF2QpXzdBGmKvKMe';
body.tokenId = '3000';
body.value = '30';
body.feeLimit = 50;
const txData = await tron_1.prepareTronTransferTrc721SignedTransaction(true, body);
expect(JSON.parse(txData).txID).toBeDefined();
console.log(await blockchain_1.tronBroadcast(txData));
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJvbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3Ryb24uc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUEyQztBQUUzQyx1RkFBOEQ7QUFDOUQsb0NBY2lCO0FBQ2pCLGlDQWNlO0FBRWYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFBO0FBQ3ZCLE1BQU0sT0FBTyxHQUFHLHNDQUFzQyxDQUFBO0FBQ3RELE1BQU0sV0FBVyxHQUFHLGtFQUFrRSxDQUFBO0FBQ3RGLE1BQU0sYUFBYSxHQUFHLG9DQUFvQyxDQUFBO0FBQzFELE1BQU0sV0FBVyxHQUFHLG9DQUFvQyxDQUFBO0FBQ3hELE1BQU0sV0FBVyxHQUFHLG9DQUFvQyxDQUFBO0FBRXhELE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQTtBQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLHNDQUFzQyxDQUFBO0FBRXJFLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQixFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxvQkFBWSxFQUFFLENBQUE7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUE7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxtQ0FBNEIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbkUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENB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