@bbachain/spl-token-swap
Version:
JavaScript/TypeScript bindings for the Solana Program Library (SPL) Token Swap program.
113 lines (112 loc) • 3.72 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createOffsetCurve = exports.createStableCurve = exports.createConstantPriceCurve = exports.createCustomFees = exports.createZeroFees = exports.createDefaultFees = exports.createConstantProductCurve = void 0;
const bn_js_1 = __importDefault(require("bn.js"));
const types_1 = require("../types");
/**
* Helper function to create a ConstantProduct swap curve
*
* @category helpers
*/
function createConstantProductCurve() {
return {
curveType: types_1.CurveType.ConstantProduct,
calculator: new Array(32).fill(0),
};
}
exports.createConstantProductCurve = createConstantProductCurve;
/**
* Helper function to create default fees (0.25% trade fee, 0.05% owner fee)
*
* @category helpers
*/
function createDefaultFees() {
return {
tradeFeeNumerator: new bn_js_1.default(25),
tradeFeeDenominator: new bn_js_1.default(10000),
ownerTradeFeeNumerator: new bn_js_1.default(5),
ownerTradeFeeDenominator: new bn_js_1.default(10000),
ownerWithdrawFeeNumerator: new bn_js_1.default(0),
ownerWithdrawFeeDenominator: new bn_js_1.default(0),
hostFeeNumerator: new bn_js_1.default(0),
hostFeeDenominator: new bn_js_1.default(0),
};
}
exports.createDefaultFees = createDefaultFees;
/**
* Helper function to create zero fees
*
* @category helpers
*/
function createZeroFees() {
return {
tradeFeeNumerator: new bn_js_1.default(0),
tradeFeeDenominator: new bn_js_1.default(1),
ownerTradeFeeNumerator: new bn_js_1.default(0),
ownerTradeFeeDenominator: new bn_js_1.default(1),
ownerWithdrawFeeNumerator: new bn_js_1.default(0),
ownerWithdrawFeeDenominator: new bn_js_1.default(1),
hostFeeNumerator: new bn_js_1.default(0),
hostFeeDenominator: new bn_js_1.default(1),
};
}
exports.createZeroFees = createZeroFees;
/**
* Helper function to create fees with custom trade fee percentage
*
* @param tradeFeePercentage - Fee percentage (e.g., 0.3 for 0.3%)
* @category helpers
*/
function createCustomFees(tradeFeePercentage) {
const tradeFeeNumerator = Math.floor(tradeFeePercentage * 100);
return {
tradeFeeNumerator: new bn_js_1.default(tradeFeeNumerator),
tradeFeeDenominator: new bn_js_1.default(10000),
ownerTradeFeeNumerator: new bn_js_1.default(0),
ownerTradeFeeDenominator: new bn_js_1.default(1),
ownerWithdrawFeeNumerator: new bn_js_1.default(0),
ownerWithdrawFeeDenominator: new bn_js_1.default(1),
hostFeeNumerator: new bn_js_1.default(0),
hostFeeDenominator: new bn_js_1.default(1),
};
}
exports.createCustomFees = createCustomFees;
/**
* Helper function to create ConstantPrice curve
*
* @category helpers
*/
function createConstantPriceCurve() {
return {
curveType: types_1.CurveType.ConstantPrice,
calculator: new Array(32).fill(0),
};
}
exports.createConstantPriceCurve = createConstantPriceCurve;
/**
* Helper function to create Stable curve
*
* @category helpers
*/
function createStableCurve() {
return {
curveType: types_1.CurveType.Stable,
calculator: new Array(32).fill(0),
};
}
exports.createStableCurve = createStableCurve;
/**
* Helper function to create Offset curve
*
* @category helpers
*/
function createOffsetCurve() {
return {
curveType: types_1.CurveType.Offset,
calculator: new Array(32).fill(0),
};
}
exports.createOffsetCurve = createOffsetCurve;