@rainfi/sdk
Version:
This package is used to interact with Rain.fi protocol on Solana
224 lines • 9.02 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 (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__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.MORTGAGE_ACCOUNT_LAYOUT = exports.RAIN_CUSTOM_MORTGAGE_LAYOUT = exports.RAIN_CUSTOM_LOAN_LAYOUT = exports.COLLECTION_GLOBAL_OFFER_LAYOUT = exports.GLOBAL_OFFER_WHITELIST_LAYOUT = exports.COLLECTION_ACCOUNT_LAYOUT = exports.POOL_ACCOUNT_LAYOUT = exports.LOAN_ACCOUNT_LAYOUT = exports.ESCROW_ACCOUNT_DATA_LAYOUT = exports.uint32 = exports.publicKey = void 0;
const web3_js_1 = require("@solana/web3.js");
const BufferLayout = __importStar(require("buffer-layout"));
const bn_js_1 = __importDefault(require("bn.js"));
/**
* Layout for a public key
*/
const publicKey = (property = 'publicKey') => {
const publicKeyLayout = BufferLayout.blob(32, property);
const _decode = publicKeyLayout.decode.bind(publicKeyLayout);
const _encode = publicKeyLayout.encode.bind(publicKeyLayout);
publicKeyLayout.decode = (buffer, offset) => {
const data = _decode(buffer, offset);
return new web3_js_1.PublicKey(data);
};
publicKeyLayout.encode = (key, buffer, offset) => {
return _encode(key.toBuffer(), buffer, offset);
};
return publicKeyLayout;
};
exports.publicKey = publicKey;
/**
* Layout for a 64bit unsigned value
*/
const uint32 = (property = 'uint32') => {
const layout = BufferLayout.blob(4, property);
const _decode = layout.decode.bind(layout);
const _encode = layout.encode.bind(layout);
layout.decode = (buffer, offset) => {
const data = _decode(buffer, offset);
return new bn_js_1.default([...data]
.reverse()
.map(i => `00${i.toString(16)}`.slice(-2))
.join(''), 16);
};
layout.encode = (num, buffer, offset) => {
const a = num.toArray().reverse();
let b = Buffer.from(a);
if (b.length !== 8) {
const zeroPad = Buffer.alloc(8);
b.copy(zeroPad);
b = zeroPad;
}
return _encode(b, buffer, offset);
};
return layout;
};
exports.uint32 = uint32;
exports.ESCROW_ACCOUNT_DATA_LAYOUT = BufferLayout.struct([
BufferLayout.u8("isInitialized"),
BufferLayout.blob(32, "initializerPubkey"),
BufferLayout.blob(32, "initializerTempTokenAccountPubkey"),
BufferLayout.blob(8, "expectedAmount"),
]);
exports.LOAN_ACCOUNT_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(1, "status"),
BufferLayout.blob(32, "borrower"),
BufferLayout.blob(32, "lender"),
BufferLayout.blob(32, "pool"),
BufferLayout.blob(32, "mint"),
BufferLayout.blob(32, "currency"),
BufferLayout.blob(1, "is_custom"),
BufferLayout.blob(8, "interest"),
BufferLayout.blob(8, "amount"),
BufferLayout.blob(8, "duration"),
BufferLayout.blob(4, "collection"),
BufferLayout.blob(2, "liquidation"),
BufferLayout.blob(8, "created_at"),
BufferLayout.blob(8, "expired_at"),
BufferLayout.blob(8, "repaid_at"),
BufferLayout.blob(8, "liquidated_at"),
BufferLayout.blob(64, "padding"),
]);
exports.POOL_ACCOUNT_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(1, "bump"),
BufferLayout.blob(32, "owner"),
BufferLayout.blob(32, "mint"),
BufferLayout.blob(32, "oracle_pool_usd"),
BufferLayout.blob(32, "oracle_sol_usd"),
BufferLayout.blob(1, "status"),
BufferLayout.blob(8, "deposited_amount"),
BufferLayout.blob(8, "total_amount"),
BufferLayout.blob(8, "borrowed_amount"),
BufferLayout.blob(8, "available_amount"),
BufferLayout.blob(8, "usable_amount"),
BufferLayout.blob(8, "max_amount"),
BufferLayout.blob(8, "interest_curve"),
BufferLayout.blob(8, "interest_gap"),
BufferLayout.blob(8, "max_duration"),
BufferLayout.blob(2, "loan_to_value"),
BufferLayout.blob(1, "interest_type"),
BufferLayout.blob(8, "interest_rate"),
BufferLayout.blob(1, "compound"),
BufferLayout.blob(1, "is_mortgage_enabled"),
BufferLayout.blob(8, "mortgage_interest_curve"),
BufferLayout.blob(8, "mortgage_interest_gap"),
BufferLayout.blob(8, "mortgage_fixed_interest"),
BufferLayout.blob(8, "mortgage_max_duration"),
BufferLayout.blob(8, "nft_locked"),
BufferLayout.blob(8, "total_liquidations"),
BufferLayout.blob(8, "total_loans"),
BufferLayout.blob(8, "total_mortgage"),
BufferLayout.blob(8, "total_interest"),
BufferLayout.blob(8, "deposited_at"),
BufferLayout.blob(8, "created_at"),
BufferLayout.blob(8, "updated_at"),
BufferLayout.blob(8, "last_loan_at"),
BufferLayout.blob(8, "last_mortgage_at"),
BufferLayout.blob(2, "loan_liquidation"),
BufferLayout.blob(2, "mortgage_liquidation"),
BufferLayout.blob(4, "padding3"),
BufferLayout.blob((19 * 8), "padding1"),
BufferLayout.blob(6 * 50, "collections"),
]);
exports.COLLECTION_ACCOUNT_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(4, "collection_id"),
BufferLayout.blob(128, "name"),
BufferLayout.blob(1, "risk"),
BufferLayout.blob(32, "creator"),
BufferLayout.blob(32, "collection"),
BufferLayout.blob(8, "floor_price"),
BufferLayout.blob(8, "supply"),
BufferLayout.blob(8, "nft_locked"),
BufferLayout.blob(1, "is_locked"),
BufferLayout.blob(8, "created_at"),
BufferLayout.blob(8, "updated_at"),
]);
exports.GLOBAL_OFFER_WHITELIST_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(4, "collection_id"),
]);
exports.COLLECTION_GLOBAL_OFFER_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(128, "name"),
BufferLayout.blob(32, "authority"),
BufferLayout.blob(32, "creator"),
BufferLayout.blob(32, "collection"),
BufferLayout.blob(4, "collection_id"),
BufferLayout.blob(8 + 8 + 8 + 8 + 1 + 1 + 8 + 8 + 8, "rest"),
]);
exports.RAIN_CUSTOM_LOAN_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(1, "status"),
BufferLayout.blob(32, "borrower"),
BufferLayout.blob(32, "mint"),
BufferLayout.blob(32, "pool"),
BufferLayout.blob(8, "amount"),
BufferLayout.blob(8, "duration"),
BufferLayout.blob(4, "collection"),
BufferLayout.blob(8, "created_at"),
BufferLayout.blob(73, "rest"),
]);
exports.RAIN_CUSTOM_MORTGAGE_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(1, "status"),
BufferLayout.blob(32, "borrower"),
BufferLayout.blob(32, "mint"),
BufferLayout.blob(32, "escrow_address"),
BufferLayout.blob(32, "seller"),
BufferLayout.blob(32, "pool"),
BufferLayout.blob(1, "marketplace"),
BufferLayout.blob(8, "amount"),
BufferLayout.blob(8, "price"),
BufferLayout.blob(8, "duration"),
BufferLayout.blob(4, "collection"),
BufferLayout.blob(8, "created_at"),
BufferLayout.blob(64, "rest"),
]);
exports.MORTGAGE_ACCOUNT_LAYOUT = BufferLayout.struct([
BufferLayout.blob(8, "padding"),
BufferLayout.blob(1, "status"),
BufferLayout.blob(32, "borrower"),
BufferLayout.blob(32, "pool"),
BufferLayout.blob(32, "mint"),
BufferLayout.blob(1, "marketplace"),
BufferLayout.blob(1, "is_for_sale"),
BufferLayout.blob(8, "sale_price"),
BufferLayout.blob(8, "loan_to_value"),
BufferLayout.blob(1, "is_frozen"),
BufferLayout.blob(8, "interest"),
BufferLayout.blob(8, "repaid"),
BufferLayout.blob(8, "amount"),
BufferLayout.blob(8, "price"),
BufferLayout.blob(8, "duration"),
BufferLayout.blob(4, "collection"),
BufferLayout.blob(2, "liquidation"),
BufferLayout.blob(8, "created_at"),
BufferLayout.blob(8, "expired_at"),
BufferLayout.blob(8, "sold_at"),
BufferLayout.blob(8, "repaid_at"),
BufferLayout.blob(8, "liquidated_at"),
]);
//# sourceMappingURL=layout.utils.js.map