@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
JavaScript
;
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