@orca-so/whirlpools-sdk
Version:
Typescript SDK to interact with Orca's Whirlpool program.
46 lines • 2.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.batchBuildSwapQuoteParams = batchBuildSwapQuoteParams;
const common_sdk_1 = require("@orca-so/common-sdk");
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
const public_1 = require("../utils/public");
const token_extension_util_1 = require("../utils/public/token-extension-util");
async function batchBuildSwapQuoteParams(quoteRequests, programId, fetcher, opts) {
const whirlpools = await fetcher.getPools(quoteRequests.map((req) => req.whirlpool), opts);
const program = common_sdk_1.AddressUtil.toPubKey(programId);
const tickArrayRequests = quoteRequests.map((quoteReq) => {
const { whirlpool, tokenAmount, tradeTokenMint, amountSpecifiedIsInput } = quoteReq;
const whirlpoolData = whirlpools.get(common_sdk_1.AddressUtil.toString(whirlpool));
const swapMintKey = common_sdk_1.AddressUtil.toPubKey(tradeTokenMint);
const swapTokenType = public_1.PoolUtil.getTokenType(whirlpoolData, swapMintKey);
(0, tiny_invariant_1.default)(!!swapTokenType, "swapTokenMint does not match any tokens on this pool");
const aToB = public_1.SwapUtils.getSwapDirection(whirlpoolData, swapMintKey, amountSpecifiedIsInput) === public_1.SwapDirection.AtoB;
return {
whirlpoolData,
tokenAmount,
aToB,
tickCurrentIndex: whirlpoolData.tickCurrentIndex,
tickSpacing: whirlpoolData.tickSpacing,
whirlpoolAddress: common_sdk_1.AddressUtil.toPubKey(whirlpool),
amountSpecifiedIsInput,
};
});
const tickArrays = await public_1.SwapUtils.getBatchTickArrays(program, fetcher, tickArrayRequests, opts);
return tickArrayRequests.map((req, index) => {
const { whirlpoolData, tokenAmount, aToB, amountSpecifiedIsInput } = req;
return {
whirlpoolData,
tokenAmount,
aToB,
amountSpecifiedIsInput,
sqrtPriceLimit: public_1.SwapUtils.getDefaultSqrtPriceLimit(aToB),
otherAmountThreshold: public_1.SwapUtils.getDefaultOtherAmountThreshold(amountSpecifiedIsInput),
tickArrays: tickArrays[index],
tokenExtensionCtx: token_extension_util_1.NO_TOKEN_EXTENSION_CONTEXT,
};
});
}
//# sourceMappingURL=batch-swap-quote.js.map