PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-oas/dist/test/unit

Просмотр файла: oas.js

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const should = __importStar(require("should"));
const sdk_test_1 = require("@bitgo/sdk-test");
const sdk_api_1 = require("@bitgo/sdk-api");
const index_1 = require("../../src/index");
const resources_1 = require("../resources");
const nock_1 = __importDefault(require("nock"));
const sdk_core_1 = require("@bitgo/sdk-core");
const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
describe('OASYS chain', function () {
    before(function () {
        bitgo.safeRegister('oas', index_1.Oas.createInstance);
        bitgo.safeRegister('toas', index_1.Toas.createInstance);
        bitgo.initializeTestVars();
    });
    describe('Basic Coin Info', function () {
        it('should return the right info for oas', function () {
            const oas = bitgo.coin('oas');
            oas.should.be.an.instanceof(index_1.Oas);
            oas.getChain().should.equal('oas');
            oas.getFamily().should.equal('oas');
            oas.getFullName().should.equal('Oasys');
            oas.getBaseFactor().should.equal(1e18);
            oas.supportsTss().should.equal(true);
            oas.allowsAccountConsolidations().should.equal(false);
        });
        it('should return the right info for toas', function () {
            const toas = bitgo.coin('toas');
            toas.should.be.an.instanceof(index_1.Toas);
            toas.getChain().should.equal('toas');
            toas.getFamily().should.equal('oas');
            toas.getFullName().should.equal('Testnet Oasys');
            toas.getBaseFactor().should.equal(1e18);
            toas.supportsTss().should.equal(true);
            toas.allowsAccountConsolidations().should.equal(false);
        });
    });
});
describe('Build Unsigned Sweep for Self-Custody Cold Wallets - (MPCv2)', function () {
    const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
    const explorerUrl = sdk_core_1.common.Environments[bitgo.getEnv()].oasExplorerBaseUrl;
    const maxFeePerGasvalue = 20000000000;
    const maxPriorityFeePerGasValue = 10000000000;
    const chain_id = 9372;
    const gasLimitvalue = 500000;
    it('should generate an unsigned sweep without derivation path', async () => {
        (0, nock_1.default)(explorerUrl)
            .get('/api')
            .twice()
            .query(resources_1.mockDataUnsignedSweep.getTxListRequest)
            .reply(200, resources_1.mockDataUnsignedSweep.getTxListResponse);
        (0, nock_1.default)(explorerUrl)
            .get('/api')
            .query(resources_1.mockDataUnsignedSweep.getBalanceRequest)
            .reply(200, resources_1.mockDataUnsignedSweep.getBalanceResponse);
        const baseCoin = bitgo.coin('toas');
        const transaction = (await baseCoin.recover({
            userKey: resources_1.mockDataUnsignedSweep.userKey,
            backupKey: resources_1.mockDataUnsignedSweep.backupKey,
            walletContractAddress: resources_1.mockDataUnsignedSweep.walletBaseAddress,
            recoveryDestination: resources_1.mockDataUnsignedSweep.recoveryDestination,
            isTss: true,
            eip1559: { maxFeePerGas: maxFeePerGasvalue, maxPriorityFeePerGas: maxPriorityFeePerGasValue },
            gasLimit: gasLimitvalue,
            replayProtectionOptions: {
                chain: chain_id,
                hardfork: 'london',
            },
        }));
        should.exist(transaction);
        transaction.should.have.property('txRequests');
        transaction.txRequests.length.should.equal(1);
        const txRequest = transaction.txRequests[0];
        txRequest.should.have.property('walletCoin');
        txRequest.walletCoin.should.equal('toas');
        txRequest.should.have.property('transactions');
        txRequest.transactions.length.should.equal(1);
        const tx = txRequest.transactions[0];
        tx.should.have.property('nonce');
        tx.should.have.property('unsignedTx');
        tx.unsignedTx.should.have.property('serializedTxHex');
        tx.unsignedTx.should.have.property('signableHex');
        tx.unsignedTx.should.have.property('derivationPath');
        tx.unsignedTx.should.have.property('feeInfo');
        tx.unsignedTx.feeInfo?.should.have.property('fee');
        tx.unsignedTx.feeInfo?.should.have.property('feeString');
        tx.unsignedTx.should.have.property('parsedTx');
        tx.unsignedTx.parsedTx?.should.have.property('spendAmount');
        tx.unsignedTx.parsedTx?.should.have.property('outputs');
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L29hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBRTFDLDJDQUE0QztBQUU1Qyw0Q0FBcUQ7QUFDckQsZ0RBQXdCO0FBQ3hCLDhDQUF5QztBQUV6QyxNQUFNLEtBQUssR0FBaUIsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFFLFFBQVEsQ0FBQyxhQUFhLEVBQUU7SUFDdEIsTUFBTSxDQUFDO1FBQ0wsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFlBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtRQUMxQixFQUFFLENBQUMsc0NBQXNDLEVBQUU7WUFDekMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5QixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQUcsQ0FBQyxDQUFDO1lBQ2pDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FB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LGlCQUFpQixDQUFDLENBQUM7UUFDdEQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuXG5pbXBvcnQgeyBPYXMsIFRvYXMgfSBmcm9tICcuLi8uLi9zcmMvaW5kZXgnO1xuaW1wb3J0IHsgVW5zaWduZWRTd2VlcFR4TVBDdjIgfSBmcm9tICdAYml0Z28vYWJzdHJhY3QtZXRoJztcbmltcG9ydCB7IG1vY2tEYXRhVW5zaWduZWRTd2VlcCB9IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB7IGNvbW1vbiB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmNvbnN0IGJpdGdvOiBUZXN0Qml0R29BUEkgPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG5cbmRlc2NyaWJlKCdPQVNZUyBjaGFpbicsIGZ1bmN0aW9uICgpIHtcbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ29hcycsIE9hcy5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0b2FzJywgVG9hcy5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCYXNpYyBDb2luIEluZm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHJpZ2h0IGluZm8gZm9yIG9hcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9hcyA9IGJpdGdvLmNvaW4oJ29hcycpO1xuXG4gICAgICBvYXMuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoT2FzKTtcbiAgICAgIG9hcy5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgnb2FzJyk7XG4gICAgICBvYXMuZ2V0RmFtaWx5KCkuc2hvdWxkLmVxdWFsKCdvYXMnKTtcbiAgICAgIG9hcy5nZXRGdWxsTmFtZSgpLnNob3VsZC5lcXVhbCgnT2FzeXMnKTtcbiAgICAgIG9hcy5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlMTgpO1xuICAgICAgb2FzLnN1cHBvcnRzVHNzKCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgb2FzLmFsbG93c0FjY291bnRDb25zb2xpZGF0aW9ucygpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbyBmb3IgdG9hcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRvYXMgPSBiaXRnby5jb2luKCd0b2FzJyk7XG5cbiAgICAgIHRvYXMuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoVG9hcyk7XG4gICAgICB0b2FzLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0b2FzJyk7XG4gICAgICB0b2FzLmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnb2FzJyk7XG4gICAgICB0b2FzLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IE9hc3lzJyk7XG4gICAgICB0b2FzLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWUxOCk7XG4gICAgICB0b2FzLnN1cHBvcnRzVHNzKCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgdG9hcy5hbGxvd3NBY2NvdW50Q29uc29saWRhdGlvbnMoKS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQnVpbGQgVW5zaWduZWQgU3dlZXAgZm9yIFNlbGYtQ3VzdG9keSBDb2xkIFdhbGxldHMgLSAoTVBDdjIpJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgY29uc3QgZXhwbG9yZXJVcmwgPSBjb21tb24uRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS5vYXNFeHBsb3JlckJhc2VVcmwgYXMgc3RyaW5nO1xuICBjb25zdCBtYXhGZWVQZXJHYXN2YWx1ZSA9IDIwMDAwMDAwMDAwO1xuICBjb25zdCBtYXhQcmlvcml0eUZlZVBlckdhc1ZhbHVlID0gMTAwMDAwMDAwMDA7XG4gIGNvbnN0IGNoYWluX2lkID0gOTM3MjtcbiAgY29uc3QgZ2FzTGltaXR2YWx1ZSA9IDUwMDAwMDtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGFuIHVuc2lnbmVkIHN3ZWVwIHdpdGhvdXQgZGVyaXZhdGlvbiBwYXRoJywgYXN5bmMgKCkgPT4ge1xuICAgIG5vY2soZXhwbG9yZXJVcmwpXG4gICAgICAuZ2V0KCcvYXBpJylcbiAgICAgIC50d2ljZSgpXG4gICAgICAucXVlcnkobW9ja0RhdGFVbnNpZ25lZFN3ZWVwLmdldFR4TGlzdFJlcXVlc3QpXG4gICAgICAucmVwbHkoMjAwLCBtb2NrRGF0YVVuc2lnbmVkU3dlZXAuZ2V0VHhMaXN0UmVzcG9uc2UpO1xuICAgIG5vY2soZXhwbG9yZXJVcmwpXG4gICAgICAuZ2V0KCcvYXBpJylcbiAgICAgIC5xdWVyeShtb2NrRGF0YVVuc2lnbmVkU3dlZXAuZ2V0QmFsYW5jZVJlcXVlc3QpXG4gICAgICAucmVwbHkoMjAwLCBtb2NrRGF0YVVuc2lnbmVkU3dlZXAuZ2V0QmFsYW5jZVJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGJhc2VDb2luOiBhbnkgPSBiaXRnby5jb2luKCd0b2FzJyk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSAoYXdhaXQgYmFzZUNvaW4ucmVjb3Zlcih7XG4gICAgICB1c2VyS2V5OiBtb2NrRGF0YVVuc2lnbmVkU3dlZXAudXNlcktleSxcbiAgICAgIGJhY2t1cEtleTogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLmJhY2t1cEtleSxcbiAgICAgIHdhbGxldENvbnRyYWN0QWRkcmVzczogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLndhbGxldEJhc2VBZGRyZXNzLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogbW9ja0RhdGFVbnNpZ25lZFN3ZWVwLnJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICBpc1RzczogdHJ1ZSxcbiAgICAgIGVpcDE1NTk6IHsgbWF4RmVlUGVyR2FzOiBtYXhGZWVQZXJHYXN2YWx1ZSwgbWF4UHJpb3JpdHlGZWVQZXJHYXM6IG1heFByaW9yaXR5RmVlUGVyR2FzVmFsdWUgfSxcbiAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdHZhbHVlLFxuICAgICAgcmVwbGF5UHJvdGVjdGlvbk9wdGlvbnM6IHtcbiAgICAgICAgY2hhaW46IGNoYWluX2lkLFxuICAgICAgICBoYXJkZm9yazogJ2xvbmRvbicsXG4gICAgICB9LFxuICAgIH0pKSBhcyBVbnNpZ25lZFN3ZWVwVHhNUEN2MjtcbiAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgIHRyYW5zYWN0aW9uLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eFJlcXVlc3RzJyk7XG4gICAgdHJhbnNhY3Rpb24udHhSZXF1ZXN0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGNvbnN0IHR4UmVxdWVzdCA9IHRyYW5zYWN0aW9uLnR4UmVxdWVzdHNbMF07XG4gICAgdHhSZXF1ZXN0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd3YWxsZXRDb2luJyk7XG4gICAgdHhSZXF1ZXN0LndhbGxldENvaW4uc2hvdWxkLmVxdWFsKCd0b2FzJyk7XG4gICAgdHhSZXF1ZXN0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0cmFuc2FjdGlvbnMnKTtcbiAgICB0eFJlcXVlc3QudHJhbnNhY3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgY29uc3QgdHggPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdO1xuICAgIHR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdub25jZScpO1xuICAgIHR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCd1bnNpZ25lZFR4Jyk7XG4gICAgdHgudW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2VyaWFsaXplZFR4SGV4Jyk7XG4gICAgdHgudW5zaWduZWRUeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc2lnbmFibGVIZXgnKTtcbiAgICB0eC51bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdkZXJpdmF0aW9uUGF0aCcpO1xuICAgIHR4LnVuc2lnbmVkVHguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2ZlZUluZm8nKTtcbiAgICB0eC51bnNpZ25lZFR4LmZlZUluZm8/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWUnKTtcbiAgICB0eC51bnNpZ25lZFR4LmZlZUluZm8/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmZWVTdHJpbmcnKTtcbiAgICB0eC51bnNpZ25lZFR4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdwYXJzZWRUeCcpO1xuICAgIHR4LnVuc2lnbmVkVHgucGFyc2VkVHg/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcGVuZEFtb3VudCcpO1xuICAgIHR4LnVuc2lnbmVkVHgucGFyc2VkVHg/LnNob3VsZC5oYXZlLnByb3BlcnR5KCdvdXRwdXRzJyk7XG4gIH0pO1xufSk7XG4iXX0=

Выполнить команду


Для локальной разработки. Не используйте в интернете!