UNPKG

@muirglacier/jellyfish-transaction

Version:

A collection of TypeScript + JavaScript tools and libraries for DeFi Blockchain developers to build decentralized finance for Bitcoin

165 lines 10.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CDfTx = void 0; const jellyfish_buffer_1 = require("@muirglacier/jellyfish-buffer"); const dftx_account_1 = require("./dftx_account"); const dftx_masternode_1 = require("./dftx_masternode"); const dftx_misc_1 = require("./dftx_misc"); const dftx_pool_1 = require("./dftx_pool"); const dftx_token_1 = require("./dftx_token"); const dftx_oracles_1 = require("./dftx_oracles"); const dftx_unmapped_1 = require("./dftx_unmapped"); const dftx_icxorderbook_1 = require("./dftx_icxorderbook"); const dftx_governance_1 = require("./dftx_governance"); const dftx_loans_1 = require("./dftx_loans"); /** * Composable DfTx, C stands for Composable. * Immutable by design, bi-directional fromBuffer, toBuffer deep composer. */ class CDfTx extends jellyfish_buffer_1.ComposableBuffer { composers(dftx) { return [ CDfTx.signature(dftx), jellyfish_buffer_1.ComposableBuffer.uInt8(() => dftx.type, v => dftx.type = v), { // This is not exactly an performant design, but it is succinct fromBuffer(buffer) { return CDfTx.data(dftx).fromBuffer(buffer); }, toBuffer(buffer) { return CDfTx.data(dftx).toBuffer(buffer); } } ]; } /** * Signature read/write with error handling if not recognized */ static signature(dftx) { return { fromBuffer(buffer) { const signature = buffer.readUInt32BE(); if (signature !== CDfTx.SIGNATURE) { throw new Error(`CDfTx attempt to read a signature that is not recognized: ${signature}`); } dftx.signature = signature; }, toBuffer(buffer) { if (dftx.signature !== CDfTx.SIGNATURE) { throw new Error(`CDfTx attempt to write a signature that is not recognized: ${dftx.signature}`); } buffer.writeUInt32BE(dftx.signature); } }; } /** * Operation data read/write composing */ static data(dftx) { function compose(name, asC) { dftx.name = name; return jellyfish_buffer_1.ComposableBuffer.single(() => dftx.data, v => dftx.data = v, asC); } switch (dftx.type) { case dftx_pool_1.CPoolSwap.OP_CODE: return compose(dftx_pool_1.CPoolSwap.OP_NAME, d => new dftx_pool_1.CPoolSwap(d)); case dftx_pool_1.CCompositeSwap.OP_CODE: return compose(dftx_pool_1.CCompositeSwap.OP_NAME, d => new dftx_pool_1.CCompositeSwap(d)); case dftx_pool_1.CPoolAddLiquidity.OP_CODE: return compose(dftx_pool_1.CPoolAddLiquidity.OP_NAME, d => new dftx_pool_1.CPoolAddLiquidity(d)); case dftx_pool_1.CPoolRemoveLiquidity.OP_CODE: return compose(dftx_pool_1.CPoolRemoveLiquidity.OP_NAME, d => new dftx_pool_1.CPoolRemoveLiquidity(d)); case dftx_pool_1.CPoolCreatePair.OP_CODE: return compose(dftx_pool_1.CPoolCreatePair.OP_NAME, d => new dftx_pool_1.CPoolCreatePair(d)); case dftx_pool_1.CPoolUpdatePair.OP_CODE: return compose(dftx_pool_1.CPoolUpdatePair.OP_NAME, d => new dftx_pool_1.CPoolUpdatePair(d)); case dftx_token_1.CTokenMint.OP_CODE: return compose(dftx_token_1.CTokenMint.OP_NAME, d => new dftx_token_1.CTokenMint(d)); case dftx_token_1.CTokenCreate.OP_CODE: return compose(dftx_token_1.CTokenCreate.OP_NAME, d => new dftx_token_1.CTokenCreate(d)); case dftx_token_1.CTokenUpdate.OP_CODE: return compose(dftx_token_1.CTokenUpdate.OP_NAME, d => new dftx_token_1.CTokenUpdate(d)); case dftx_token_1.CTokenUpdateAny.OP_CODE: return compose(dftx_token_1.CTokenUpdateAny.OP_NAME, d => new dftx_token_1.CTokenUpdateAny(d)); case dftx_account_1.CUtxosToAccount.OP_CODE: return compose(dftx_account_1.CUtxosToAccount.OP_NAME, d => new dftx_account_1.CUtxosToAccount(d)); case dftx_account_1.CAccountToUtxos.OP_CODE: return compose(dftx_account_1.CAccountToUtxos.OP_NAME, d => new dftx_account_1.CAccountToUtxos(d)); case dftx_account_1.CAccountToAccount.OP_CODE: return compose(dftx_account_1.CAccountToAccount.OP_NAME, d => new dftx_account_1.CAccountToAccount(d)); case dftx_account_1.CAnyAccountToAccount.OP_CODE: return compose(dftx_account_1.CAnyAccountToAccount.OP_NAME, d => new dftx_account_1.CAnyAccountToAccount(d)); case dftx_oracles_1.CAppointOracle.OP_CODE: return compose(dftx_oracles_1.CAppointOracle.OP_NAME, d => new dftx_oracles_1.CAppointOracle(d)); case dftx_oracles_1.CRemoveOracle.OP_CODE: return compose(dftx_oracles_1.CRemoveOracle.OP_NAME, d => new dftx_oracles_1.CRemoveOracle(d)); case dftx_oracles_1.CUpdateOracle.OP_CODE: return compose(dftx_oracles_1.CUpdateOracle.OP_NAME, d => new dftx_oracles_1.CUpdateOracle(d)); case dftx_oracles_1.CSetOracleData.OP_CODE: return compose(dftx_oracles_1.CSetOracleData.OP_NAME, d => new dftx_oracles_1.CSetOracleData(d)); case dftx_misc_1.CAutoAuthPrep.OP_CODE: return compose(dftx_misc_1.CAutoAuthPrep.OP_NAME, () => new dftx_misc_1.CAutoAuthPrep()); case dftx_masternode_1.CCreateMasternode.OP_CODE: return compose(dftx_masternode_1.CCreateMasternode.OP_NAME, d => new dftx_masternode_1.CCreateMasternode(d)); case dftx_masternode_1.CResignMasternode.OP_CODE: return compose(dftx_masternode_1.CResignMasternode.OP_NAME, d => new dftx_masternode_1.CResignMasternode(d)); case dftx_governance_1.CSetGovernance.OP_CODE: return compose(dftx_governance_1.CSetGovernance.OP_NAME, d => new dftx_governance_1.CSetGovernance(d)); case dftx_governance_1.CSetGovernanceHeight.OP_CODE: return compose(dftx_governance_1.CSetGovernanceHeight.OP_NAME, d => new dftx_governance_1.CSetGovernanceHeight(d)); case dftx_icxorderbook_1.CICXCreateOrder.OP_CODE: return compose(dftx_icxorderbook_1.CICXCreateOrder.OP_NAME, d => new dftx_icxorderbook_1.CICXCreateOrder(d)); case dftx_icxorderbook_1.CICXMakeOffer.OP_CODE: return compose(dftx_icxorderbook_1.CICXMakeOffer.OP_NAME, d => new dftx_icxorderbook_1.CICXMakeOffer(d)); case dftx_icxorderbook_1.CICXCloseOrder.OP_CODE: return compose(dftx_icxorderbook_1.CICXCloseOrder.OP_NAME, d => new dftx_icxorderbook_1.CICXCloseOrder(d)); case dftx_icxorderbook_1.CICXCloseOffer.OP_CODE: return compose(dftx_icxorderbook_1.CICXCloseOffer.OP_NAME, d => new dftx_icxorderbook_1.CICXCloseOffer(d)); case dftx_governance_1.CCreateCfp.OP_CODE: return compose(dftx_governance_1.CCreateCfp.OP_NAME, d => new dftx_governance_1.CCreateCfp(d)); case dftx_governance_1.CCreateVoc.OP_CODE: return compose(dftx_governance_1.CCreateVoc.OP_NAME, d => new dftx_governance_1.CCreateVoc(d)); case dftx_governance_1.CVote.OP_CODE: return compose(dftx_governance_1.CVote.OP_NAME, d => new dftx_governance_1.CVote(d)); case dftx_icxorderbook_1.CICXSubmitDFCHTLC.OP_CODE: return compose(dftx_icxorderbook_1.CICXSubmitDFCHTLC.OP_NAME, d => new dftx_icxorderbook_1.CICXSubmitDFCHTLC(d)); case dftx_icxorderbook_1.CICXSubmitEXTHTLC.OP_CODE: return compose(dftx_icxorderbook_1.CICXSubmitEXTHTLC.OP_NAME, d => new dftx_icxorderbook_1.CICXSubmitEXTHTLC(d)); case dftx_icxorderbook_1.CICXClaimDFCHTLC.OP_CODE: return compose(dftx_icxorderbook_1.CICXClaimDFCHTLC.OP_NAME, d => new dftx_icxorderbook_1.CICXClaimDFCHTLC(d)); case dftx_loans_1.CSetLoanScheme.OP_CODE: return compose(dftx_loans_1.CSetLoanScheme.OP_NAME, d => new dftx_loans_1.CSetLoanScheme(d)); case dftx_loans_1.CDestroyLoanScheme.OP_CODE: return compose(dftx_loans_1.CDestroyLoanScheme.OP_NAME, d => new dftx_loans_1.CDestroyLoanScheme(d)); case dftx_loans_1.CSetDefaultLoanScheme.OP_CODE: return compose(dftx_loans_1.CSetDefaultLoanScheme.OP_NAME, d => new dftx_loans_1.CSetDefaultLoanScheme(d)); case dftx_loans_1.CSetCollateralToken.OP_CODE: return compose(dftx_loans_1.CSetCollateralToken.OP_NAME, d => new dftx_loans_1.CSetCollateralToken(d)); case dftx_loans_1.CSetLoanToken.OP_CODE: return compose(dftx_loans_1.CSetLoanToken.OP_NAME, d => new dftx_loans_1.CSetLoanToken(d)); case dftx_loans_1.CUpdateLoanToken.OP_CODE: return compose(dftx_loans_1.CUpdateLoanToken.OP_NAME, d => new dftx_loans_1.CUpdateLoanToken(d)); case dftx_loans_1.CCreateVault.OP_CODE: return compose(dftx_loans_1.CCreateVault.OP_NAME, d => new dftx_loans_1.CCreateVault(d)); case dftx_loans_1.CUpdateVault.OP_CODE: return compose(dftx_loans_1.CUpdateVault.OP_NAME, d => new dftx_loans_1.CUpdateVault(d)); case dftx_loans_1.CDepositToVault.OP_CODE: return compose(dftx_loans_1.CDepositToVault.OP_NAME, d => new dftx_loans_1.CDepositToVault(d)); case dftx_loans_1.CWithdrawFromVault.OP_CODE: return compose(dftx_loans_1.CWithdrawFromVault.OP_NAME, d => new dftx_loans_1.CWithdrawFromVault(d)); case dftx_loans_1.CCloseVault.OP_CODE: return compose(dftx_loans_1.CCloseVault.OP_NAME, d => new dftx_loans_1.CCloseVault(d)); case dftx_loans_1.CTakeLoan.OP_CODE: return compose(dftx_loans_1.CTakeLoan.OP_NAME, d => new dftx_loans_1.CTakeLoan(d)); case dftx_loans_1.CPaybackLoan.OP_CODE: return compose(dftx_loans_1.CPaybackLoan.OP_NAME, d => new dftx_loans_1.CPaybackLoan(d)); case dftx_loans_1.CPlaceAuctionBid.OP_CODE: return compose(dftx_loans_1.CPlaceAuctionBid.OP_NAME, d => new dftx_loans_1.CPlaceAuctionBid(d)); default: return compose(dftx_unmapped_1.CDeFiOpUnmapped.OP_NAME, d => new dftx_unmapped_1.CDeFiOpUnmapped(d)); } } } exports.CDfTx = CDfTx; CDfTx.SIGNATURE = 0x44665478; //# sourceMappingURL=dftx.js.map