kamino-sdk-beta
Version:
Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol
143 lines • 5.98 kB
JavaScript
;
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 });
exports.Bin = void 0;
const bn_js_1 = __importDefault(require("bn.js")); // eslint-disable-line @typescript-eslint/no-unused-vars
const borsh = __importStar(require("@coral-xyz/borsh"));
class Bin {
/** Amount of token X in the bin. This already excluded protocol fees. */
amountX;
/** Amount of token Y in the bin. This already excluded protocol fees. */
amountY;
/** Bin price */
price;
/** Liquidities of the bin. This is the same as LP mint supply. q-number */
liquiditySupply;
/** reward_a_per_token_stored */
rewardPerTokenStored;
/** Swap fee amount of token X per liquidity deposited. */
feeAmountXPerTokenStored;
/** Swap fee amount of token Y per liquidity deposited. */
feeAmountYPerTokenStored;
/** Total token X swap into the bin. Only used for tracking purpose. */
amountXIn;
/** Total token Y swap into he bin. Only used for tracking purpose. */
amountYIn;
constructor(fields) {
this.amountX = fields.amountX;
this.amountY = fields.amountY;
this.price = fields.price;
this.liquiditySupply = fields.liquiditySupply;
this.rewardPerTokenStored = fields.rewardPerTokenStored;
this.feeAmountXPerTokenStored = fields.feeAmountXPerTokenStored;
this.feeAmountYPerTokenStored = fields.feeAmountYPerTokenStored;
this.amountXIn = fields.amountXIn;
this.amountYIn = fields.amountYIn;
}
static layout(property) {
return borsh.struct([
borsh.u64("amountX"),
borsh.u64("amountY"),
borsh.u128("price"),
borsh.u128("liquiditySupply"),
borsh.array(borsh.u128(), 2, "rewardPerTokenStored"),
borsh.u128("feeAmountXPerTokenStored"),
borsh.u128("feeAmountYPerTokenStored"),
borsh.u128("amountXIn"),
borsh.u128("amountYIn"),
], property);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
static fromDecoded(obj) {
return new Bin({
amountX: obj.amountX,
amountY: obj.amountY,
price: obj.price,
liquiditySupply: obj.liquiditySupply,
rewardPerTokenStored: obj.rewardPerTokenStored,
feeAmountXPerTokenStored: obj.feeAmountXPerTokenStored,
feeAmountYPerTokenStored: obj.feeAmountYPerTokenStored,
amountXIn: obj.amountXIn,
amountYIn: obj.amountYIn,
});
}
static toEncodable(fields) {
return {
amountX: fields.amountX,
amountY: fields.amountY,
price: fields.price,
liquiditySupply: fields.liquiditySupply,
rewardPerTokenStored: fields.rewardPerTokenStored,
feeAmountXPerTokenStored: fields.feeAmountXPerTokenStored,
feeAmountYPerTokenStored: fields.feeAmountYPerTokenStored,
amountXIn: fields.amountXIn,
amountYIn: fields.amountYIn,
};
}
toJSON() {
return {
amountX: this.amountX.toString(),
amountY: this.amountY.toString(),
price: this.price.toString(),
liquiditySupply: this.liquiditySupply.toString(),
rewardPerTokenStored: this.rewardPerTokenStored.map((item) => item.toString()),
feeAmountXPerTokenStored: this.feeAmountXPerTokenStored.toString(),
feeAmountYPerTokenStored: this.feeAmountYPerTokenStored.toString(),
amountXIn: this.amountXIn.toString(),
amountYIn: this.amountYIn.toString(),
};
}
static fromJSON(obj) {
return new Bin({
amountX: new bn_js_1.default(obj.amountX),
amountY: new bn_js_1.default(obj.amountY),
price: new bn_js_1.default(obj.price),
liquiditySupply: new bn_js_1.default(obj.liquiditySupply),
rewardPerTokenStored: obj.rewardPerTokenStored.map((item) => new bn_js_1.default(item)),
feeAmountXPerTokenStored: new bn_js_1.default(obj.feeAmountXPerTokenStored),
feeAmountYPerTokenStored: new bn_js_1.default(obj.feeAmountYPerTokenStored),
amountXIn: new bn_js_1.default(obj.amountXIn),
amountYIn: new bn_js_1.default(obj.amountYIn),
});
}
toEncodable() {
return Bin.toEncodable(this);
}
}
exports.Bin = Bin;
//# sourceMappingURL=Bin.js.map