UNPKG

@bbachain/spl-token-swap

Version:

JavaScript/TypeScript bindings for the Solana Program Library (SPL) Token Swap program.

113 lines (112 loc) 3.72 kB
"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;