@muirglacier/jellyfish-transaction
Version:
A collection of TypeScript + JavaScript tools and libraries for DeFi Blockchain developers to build decentralized finance for Bitcoin
161 lines • 8.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CPoolUpdatePair = exports.CPoolCreatePair = exports.CPoolRemoveLiquidity = exports.CPoolAddLiquidity = exports.CCompositeSwap = exports.CPoolId = exports.CPoolSwap = void 0;
const jellyfish_buffer_1 = require("@muirglacier/jellyfish-buffer");
const tx_composer_1 = require("../../tx_composer");
const dftx_balance_1 = require("./dftx_balance");
/**
* Composable PoolSwap, C stands for Composable.
* Immutable by design, bi-directional fromBuffer, toBuffer deep composer.
* @throws Error if more than 8 decimals
*/
class CPoolSwap extends jellyfish_buffer_1.ComposableBuffer {
composers(ps) {
return [
jellyfish_buffer_1.ComposableBuffer.single(() => ps.fromScript, v => ps.fromScript = v, v => new tx_composer_1.CScript(v)),
jellyfish_buffer_1.ComposableBuffer.varUInt(() => ps.fromTokenId, v => ps.fromTokenId = v),
jellyfish_buffer_1.ComposableBuffer.satoshiAsBigNumber(() => ps.fromAmount, v => ps.fromAmount = v),
jellyfish_buffer_1.ComposableBuffer.single(() => ps.toScript, v => ps.toScript = v, v => new tx_composer_1.CScript(v)),
jellyfish_buffer_1.ComposableBuffer.varUInt(() => ps.toTokenId, v => ps.toTokenId = v),
jellyfish_buffer_1.ComposableBuffer.maxPriceAsBigNumber(() => ps.maxPrice, v => ps.maxPrice = v)
];
}
}
exports.CPoolSwap = CPoolSwap;
CPoolSwap.OP_CODE = 0x73;
CPoolSwap.OP_NAME = 'OP_DEFI_TX_POOL_SWAP';
/**
* Composable PoolId, C stands for Composable.
* Immutable by design, bi-directional fromBuffer, toBuffer deep composer.
*/
class CPoolId extends jellyfish_buffer_1.ComposableBuffer {
composers(pi) {
return [
jellyfish_buffer_1.ComposableBuffer.varUInt(() => pi.id, v => pi.id = v)
];
}
}
exports.CPoolId = CPoolId;
/**
* Composable CompositeSwap, C stands for Composable.
* Extends from CPoolSwap as it contains same data structure but with different DfTx OP_CODE.
* Immutable by design, bi-directional fromBuffer, toBuffer deep composer.
* @throws Error if more than 8 decimals
*/
class CCompositeSwap extends jellyfish_buffer_1.ComposableBuffer {
composers(cs) {
return [
jellyfish_buffer_1.ComposableBuffer.single(() => cs.poolSwap, v => cs.poolSwap = v, v => new CPoolSwap(v)),
jellyfish_buffer_1.ComposableBuffer.varUIntArray(() => cs.pools, v => cs.pools = v, v => new CPoolId(v))
];
}
}
exports.CCompositeSwap = CCompositeSwap;
CCompositeSwap.OP_CODE = 0x69; // 'i'
CCompositeSwap.OP_NAME = 'OP_DEFI_TX_COMPOSITE_SWAP';
/**
* Composable PoolAddLiquidity, C stands for Composable.
* Immutable by design, bi-directional fromBuffer, toBuffer deep composer.
*/
class CPoolAddLiquidity extends jellyfish_buffer_1.ComposableBuffer {
composers(p) {
return [
jellyfish_buffer_1.ComposableBuffer.varUIntArray(() => p.from, v => p.from = v, v => new dftx_balance_1.CScriptBalances(v)),
jellyfish_buffer_1.ComposableBuffer.single(() => p.shareAddress, v => p.shareAddress = v, v => new tx_composer_1.CScript(v))
];
}
}
exports.CPoolAddLiquidity = CPoolAddLiquidity;
CPoolAddLiquidity.OP_CODE = 0x6c;
CPoolAddLiquidity.OP_NAME = 'OP_DEFI_TX_POOL_ADD_LIQUIDITY';
/**
* Composable PoolRemoveLiquidity, C stands for Composable.
* Immutable by design, bi-directional fromBuffer, toBuffer deep composer.
*/
class CPoolRemoveLiquidity extends jellyfish_buffer_1.ComposableBuffer {
composers(p) {
return [
jellyfish_buffer_1.ComposableBuffer.single(() => p.script, v => p.script = v, v => new tx_composer_1.CScript(v)),
jellyfish_buffer_1.ComposableBuffer.varUInt(() => p.tokenId, v => p.tokenId = v),
jellyfish_buffer_1.ComposableBuffer.satoshiAsBigNumber(() => p.amount, v => p.amount = v)
];
}
}
exports.CPoolRemoveLiquidity = CPoolRemoveLiquidity;
CPoolRemoveLiquidity.OP_CODE = 0x72;
CPoolRemoveLiquidity.OP_NAME = 'OP_DEFI_TX_POOL_REMOVE_LIQUIDITY';
/**
* Composable PoolCreatePair, C stands for Composable.
* Immutable by design, bi-directional fromBuffer, toBuffer deep composer.
*/
class CPoolCreatePair extends jellyfish_buffer_1.ComposableBuffer {
composers(p) {
return [
jellyfish_buffer_1.ComposableBuffer.varUInt(() => p.tokenA, v => p.tokenA = v),
jellyfish_buffer_1.ComposableBuffer.varUInt(() => p.tokenB, v => p.tokenB = v),
jellyfish_buffer_1.ComposableBuffer.satoshiAsBigNumber(() => p.commission, v => p.commission = v),
jellyfish_buffer_1.ComposableBuffer.single(() => p.ownerAddress, v => p.ownerAddress = v, v => new tx_composer_1.CScript(v)),
jellyfish_buffer_1.ComposableBuffer.uBool8(() => p.status, v => p.status = v),
jellyfish_buffer_1.ComposableBuffer.varUIntUtf8BE(() => p.pairSymbol, v => p.pairSymbol = v),
// Note(canonbrother): special fix for inconsistent bytes in "block height >= ClarkeQuayHeight" condition
// https://github.com/DeFiCh/ain/blob/4b70ecd8ee32d00c75be04a786dc75ec4a3c91dd/src/masternodes/rpc_poolpair.cpp#L571-L573
{
fromBuffer: (buffer) => {
if (buffer.remaining() > 0) {
const length = jellyfish_buffer_1.readVarUInt(buffer);
p.customRewards = [];
for (let i = 0; i < length; i++) {
p.customRewards.push(new dftx_balance_1.CTokenBalance(buffer).toObject());
}
}
},
toBuffer: (buffer) => {
if (p.customRewards !== undefined) {
jellyfish_buffer_1.writeVarUInt(p.customRewards.length, buffer);
p.customRewards.forEach(data => new dftx_balance_1.CTokenBalance(data).toBuffer(buffer));
}
}
}
];
}
}
exports.CPoolCreatePair = CPoolCreatePair;
CPoolCreatePair.OP_CODE = 0x70;
CPoolCreatePair.OP_NAME = 'OP_DEFI_TX_POOL_CREATE_PAIR';
/**
* Composable PoolUpdatePair, C stands for Composable.
* Immutable by design, bi-directional fromBuffer, toBuffer deep composer.
*/
class CPoolUpdatePair extends jellyfish_buffer_1.ComposableBuffer {
composers(p) {
return [
jellyfish_buffer_1.ComposableBuffer.varUInt(() => p.poolId, v => p.poolId = v),
jellyfish_buffer_1.ComposableBuffer.uBool32(() => p.status, v => p.status = v),
jellyfish_buffer_1.ComposableBuffer.satoshiAsBigNumber(() => p.commission, v => p.commission = v),
jellyfish_buffer_1.ComposableBuffer.single(() => p.ownerAddress, v => p.ownerAddress = v, v => new tx_composer_1.CScript(v)),
// Note(canonbrother): special fix for inconsistent bytes in "block height >= ClarkeQuayHeight" condition
// https://github.com/DeFiCh/ain/blob/4b70ecd8ee32d00c75be04a786dc75ec4a3c91dd/src/masternodes/rpc_poolpair.cpp#L719-721
{
fromBuffer: (buffer) => {
if (buffer.remaining() > 0) {
const length = jellyfish_buffer_1.readVarUInt(buffer);
p.customRewards = [];
for (let i = 0; i < length; i++) {
p.customRewards.push(new dftx_balance_1.CTokenBalance(buffer).toObject());
}
}
},
toBuffer: (buffer) => {
if (p.customRewards !== undefined) {
jellyfish_buffer_1.writeVarUInt(p.customRewards.length, buffer);
p.customRewards.forEach(data => new dftx_balance_1.CTokenBalance(data).toBuffer(buffer));
}
}
}
];
}
}
exports.CPoolUpdatePair = CPoolUpdatePair;
CPoolUpdatePair.OP_CODE = 0x75;
CPoolUpdatePair.OP_NAME = 'OP_DEFI_TX_POOL_UPDATE_PAIR';
//# sourceMappingURL=dftx_pool.js.map