@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
351 lines • 38.2 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 model_1 = require("../model");
const one_1 = require("./one");
const erc721Provenance_abi_1 = __importDefault(require("../contracts/erc721Provenance/erc721Provenance_abi"));
const PROVIDER = 'https://api.s0.b.hmny.io';
describe('ONE transactions', () => {
jest.setTimeout(99999);
async function processTx(txData) {
const client = one_1.prepareOneClient(true, PROVIDER, '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1');
const signedTxn = await client.eth.sendSignedTransaction(txData);
console.log(signedTxn.transactionHash);
}
describe('Regular TX', () => {
it('should test valid transaction ONE', async () => {
const body = new model_1.OneTransfer();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.amount = '1';
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid transaction ONE KMS', async () => {
const body = new model_1.OneTransfer();
body.signatureId = 'cf5abf42-1d3b-48c7-b761-4571c46dd45f';
body.amount = '1';
body.fromShardID = 0;
body.toShardID = 0;
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneSignedTransaction(true, body, PROVIDER);
console.log(txData);
expect(txData).toContain('0x');
});
});
describe('HRM20 TX', () => {
it('should test valid Deploy 20', async () => {
const body = new model_1.OneDeploy20();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.name = 'Tatum';
body.digits = 14;
body.totalCap = '1000';
body.supply = '100';
body.symbol = 'TTM';
body.address = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
const txData = await one_1.prepareOneDeploy20SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 20 transaction', async () => {
const body = new model_1.OneTransfer20();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.amount = '1.564';
body.contractAddress = '0xF60dE853111e0E3A1fB3E703D9Bed83b470c73D5';
body.digits = 14;
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneTransfer20SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 20 burn', async () => {
const body = new model_1.OneBurn20();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.amount = '1.564';
body.contractAddress = '0xF60dE853111e0E3A1fB3E703D9Bed83b470c73D5';
const txData = await one_1.prepareOneBurn20SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
});
describe('HRM 721 Provenance', () => {
it('should test valid Deploy 721', async () => {
const body = new model_1.OneDeploy721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.name = 'Tatum';
body.symbol = 'TTM';
body.chain = model_1.Currency.ONE;
body.provenance = true;
const txData = await one_1.prepareOneDeploy721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 provenance mint', async () => {
const body = new model_1.OneMint721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '1';
body.contractAddress = '0xf12178ba442f1035eb86777d1bebba8fcc50ee8a';
body.url = '14';
body.chain = model_1.Currency.ONE;
body.to = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
body.provenance = true;
const txData = await one_1.prepareOneMint721ProvenanceSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 provenance mint with cashback', async () => {
const body = new model_1.OneMint721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '10211';
body.contractAddress = '0x27c133a613f11870fa935ecbb03c0cf55f93e5de';
body.url = '14';
body.chain = model_1.Currency.ONE;
body.to = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
body.authorAddresses = ['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc'];
body.provenance = true;
body.cashbackValues = ['1'];
body.fixedValues = ['1'];
body.provenance = true;
const txData = await one_1.prepareOneMint721ProvenanceSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 transaction', async () => {
const body = new model_1.OneTransfer721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '1021';
body.contractAddress = '0x27c133a613f11870fa935ecbb03c0cf55f93e5de';
body.chain = model_1.Currency.ONE;
body.provenance = true;
body.provenanceData = "test this";
body.tokenPrice = "10";
body.value = "10";
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneTransfer721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid transfer data 721 transaction', async () => {
const body = new model_1.SmartContractReadMethodInvocation();
body.contractAddress = '0x27c133a613f11870fa935ecbb03c0cf55f93e5de';
body.params = ['100'];
body.methodName = 'getTokenData';
body.methodABI = erc721Provenance_abi_1.default.find((a) => a.name === 'getTokenData');
const response = await one_1.sendOneSmartContractReadMethodInvocationTransaction(true, body, PROVIDER);
// @ts-ignore
console.log(JSON.stringify(response));
});
it('should test valid 721 mint with cashback multiple', async () => {
const body = new model_1.OneMintMultiple721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = ['103212'];
body.contractAddress = '0x27c133a613f11870fa935ecbb03c0cf55f93e5de';
body.url = ['14'];
body.chain = model_1.Currency.ONE;
body.to = ['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc'];
body.authorAddresses = [['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc']];
body.cashbackValues = [['1']];
body.provenance = true;
body.fixedValues = [['1']];
const txData = await one_1.prepareOneMintMultiple721ProvenanceSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 mint without cashback multiple', async () => {
const body = new model_1.OneMintMultiple721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = ['1032121', '1032122'];
body.contractAddress = '0x27c133a613f11870fa935ecbb03c0cf55f93e5de';
body.url = ['test.com', 'test1.com'];
body.chain = model_1.Currency.ONE;
body.to = ['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc', 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc'];
body.provenance = true;
const txData = await one_1.prepareOneMintMultiple721ProvenanceSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
});
describe('HRM 721', () => {
it('should test valid Deploy 721', async () => {
const body = new model_1.OneDeploy721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.name = 'Tatum';
body.symbol = 'TTM';
body.chain = model_1.Currency.ONE;
const txData = await one_1.prepareOneDeploy721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 mint', async () => {
const body = new model_1.OneMint721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '100';
body.contractAddress = '0x3a45a4E2441a4A53e5A10bE3A15EC7Dc9eb902B7';
body.url = '14';
body.chain = model_1.Currency.ONE;
body.to = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
const txData = await one_1.prepareOneMint721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 transaction', async () => {
const body = new model_1.OneTransfer721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '10';
body.contractAddress = '0x3a45a4E2441a4A53e5A10bE3A15EC7Dc9eb902B7';
body.chain = model_1.Currency.ONE;
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneTransfer721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 mint with cashback', async () => {
const body = new model_1.OneMint721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '1021';
body.contractAddress = '0xeDB704d5d5940559C53FfB5CBCC38E6b0AdA3Bc3';
body.url = '14';
body.chain = model_1.Currency.ONE;
body.to = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
body.authorAddresses = ['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc'];
body.cashbackValues = ['1'];
const txData = await one_1.prepareOneMintCashback721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 mint with cashback multiple', async () => {
const body = new model_1.OneMintMultiple721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = ['1031'];
body.contractAddress = '0x3a45a4E2441a4A53e5A10bE3A15EC7Dc9eb902B7';
body.url = ['14'];
body.chain = model_1.Currency.ONE;
body.to = ['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc'];
body.authorAddresses = [['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc']];
body.cashbackValues = [['1']];
const txData = await one_1.prepareOneMintMultipleCashback721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 cashback transaction', async () => {
const body = new model_1.OneTransfer721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '1021';
body.contractAddress = '0xeDB704d5d5940559C53FfB5CBCC38E6b0AdA3Bc3';
body.chain = model_1.Currency.ONE;
body.value = '1';
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneTransfer721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 cashback update', async () => {
const body = new model_1.OneUpdateCashback721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '1021';
body.contractAddress = '0xeDB704d5d5940559C53FfB5CBCC38E6b0AdA3Bc3';
body.chain = model_1.Currency.ONE;
body.cashbackValue = '2';
const txData = await one_1.prepareOneUpdateCashbackForAuthor721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 721 burn', async () => {
const body = new model_1.OneBurn721();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '100';
body.contractAddress = '0x3a45a4E2441a4A53e5A10bE3A15EC7Dc9eb902B7';
body.chain = model_1.Currency.ONE;
const txData = await one_1.prepareOneBurn721SignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
});
describe('HRM 1155', () => {
it('should test valid Deploy 1155', async () => {
const body = new model_1.OneDeployMultiToken();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.uri = 'Tatum';
body.chain = model_1.Currency.ONE;
const txData = await one_1.prepareOneDeployMultiTokenSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 1155 mint', async () => {
const body = new model_1.OneMintMultiToken();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '100';
body.contractAddress = '0x3b0b77e149aF684a1a4636eb1cffEeF910845D24';
body.chain = model_1.Currency.ONE;
body.amount = '100';
body.to = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
const txData = await one_1.prepareOneMintMultiTokenSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 1155 mint batch', async () => {
const body = new model_1.OneMintMultiTokenBatch();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = [['100']];
body.contractAddress = '0x3b0b77e149aF684a1a4636eb1cffEeF910845D24';
body.chain = model_1.Currency.ONE;
body.amounts = [['100']];
body.to = ['one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc'];
const txData = await one_1.prepareOneMintMultiTokenBatchSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 1155 transaction', async () => {
const body = new model_1.OneTransferMultiToken();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '100';
body.amount = '10';
body.contractAddress = '0x3b0b77e149aF684a1a4636eb1cffEeF910845D24';
body.chain = model_1.Currency.ONE;
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneTransferMultiTokenSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 1155 batch transaction', async () => {
const body = new model_1.OneTransferMultiTokenBatch();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = ['100'];
body.amounts = ['10'];
body.contractAddress = '0x3b0b77e149aF684a1a4636eb1cffEeF910845D24';
body.chain = model_1.Currency.ONE;
body.to = 'one1yvph79875pj0pmgpxzmve87ks4sxer5u3jyfde';
const txData = await one_1.prepareOneBatchTransferMultiTokenSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 1155 burn', async () => {
const body = new model_1.OneBurnMultiToken();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = '100';
body.amount = '10';
body.account = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
body.contractAddress = '0x3b0b77e149aF684a1a4636eb1cffEeF910845D24';
body.chain = model_1.Currency.ONE;
const txData = await one_1.prepareOneBurnMultiTokenSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
it('should test valid 1155 burn batch', async () => {
const body = new model_1.OneBurnMultiTokenBatch();
body.fromPrivateKey = '0x4cda6d2c33b0f9a041e46474a638ac59aee0734cf208aa9aa2f05ef887bd09e1';
body.tokenId = ['100'];
body.amounts = ['10'];
body.account = 'one13t9ul0yvudlk7e60fwvxr5l0azfg3kyl474xmc';
body.contractAddress = '0x3b0b77e149aF684a1a4636eb1cffEeF910845D24';
body.chain = model_1.Currency.ONE;
const txData = await one_1.prepareOneBurnMultiTokenBatchSignedTransaction(true, body, PROVIDER);
expect(txData).toContain('0x');
// await processTx(txData)
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vb25lLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvQ0FvQmlCO0FBQ2pCLCtCQXVCYztBQUNkLDhHQUFzRjtBQUV0RixNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQTtBQUUzQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFdEIsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFjO1FBQ25DLE1BQU0sTUFBTSxHQUFHLHNCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsb0VBQW9FLENBQUMsQ0FBQTtRQUNySCxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1FBQ3hCLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFXLEVBQUUsQ0FBQTtZQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLG9FQUFvRSxDQUFBO1lBQzFGLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1lBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsNENBQTRDLENBQUE7WUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxpQ0FBMkIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ3RFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFOUIsMEJBQTBCO1FBQzlCLENBQUMs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