@symmetry-hq/baskets-v2-sdk
Version:
Symmetry Baskets V2 SDK
159 lines (158 loc) • 7.75 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createBasketHandler = createBasketHandler;
exports.editBasketSettingsHandler = editBasketSettingsHandler;
exports.addLamportsForAutomationHandler = addLamportsForAutomationHandler;
exports.addNewTokenHandler = addNewTokenHandler;
exports.removeTokenHandler = removeTokenHandler;
exports.updateTokenWeightsHandler = updateTokenWeightsHandler;
exports.createPythSponsoredFeedsHandler = createPythSponsoredFeedsHandler;
exports.updatePythSponsoredFeedsHandler = updatePythSponsoredFeedsHandler;
const web3_js_1 = require("@solana/web3.js");
const createBasket_1 = require("./instructions/creator/createBasket");
const programAccounts_1 = require("./utils/programAccounts");
const txUtils_1 = require("./utils/txUtils");
const editBasket_1 = require("./instructions/creator/editBasket");
const oracle_1 = require("./utils/oracle");
const addNewToken_1 = require("./instructions/manager/addNewToken");
const removeToken_1 = require("./instructions/manager/removeToken");
const updateTokenWeights_1 = require("./instructions/manager/updateTokenWeights");
const updatePythSponsoredFeeds_1 = require("./instructions/oracleUpdate/updatePythSponsoredFeeds");
const createPythSponsoredFeeds_1 = require("./instructions/oracleUpdate/createPythSponsoredFeeds");
const addLamportsForAutomation_1 = require("./instructions/manager/addLamportsForAutomation");
function createBasketHandler(sdkParams, params, basketKeypair) {
return __awaiter(this, void 0, void 0, function* () {
const ixs = yield (0, createBasket_1.createBasketIxs)(Object.assign(Object.assign({}, params), { basketKeypair: basketKeypair, creator: sdkParams.payer, program: sdkParams.program }));
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [ixs],
multipleLookupTableAddresses: [[]],
signers: [[basketKeypair]],
batches: [1],
});
});
}
function editBasketSettingsHandler(sdkParams, params) {
return __awaiter(this, void 0, void 0, function* () {
const ix = yield (0, editBasket_1.editBasketIx)(Object.assign(Object.assign({}, params), { creator: sdkParams.payer, program: sdkParams.program }));
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [[ix]],
multipleLookupTableAddresses: [[]],
signers: [[]],
batches: [1],
});
});
}
function addLamportsForAutomationHandler(sdkParams, params) {
return __awaiter(this, void 0, void 0, function* () {
const ix = yield (0, addLamportsForAutomation_1.addLamportsForAutomationIx)({
program: sdkParams.program,
basket: params.basket,
manager: sdkParams.payer,
amount: params.amount,
});
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [[ix]],
multipleLookupTableAddresses: [[]],
signers: [[]],
batches: [1],
});
});
}
function addNewTokenHandler(sdkParams, params) {
return __awaiter(this, void 0, void 0, function* () {
const accountInfos = yield (0, programAccounts_1.getAccountInfos)(sdkParams.connection, [params.token, params.oraclePool]);
const validation = (0, oracle_1.validateOracle)(sdkParams.program, params.token, //@ts-ignore
accountInfos[0], accountInfos[1], params.oracleType, params.oracle1, params.oracle2);
if (validation != "OK")
throw new Error("Error: " + validation);
const ix = yield (0, addNewToken_1.addNewTokenIx)(Object.assign({ program: sdkParams.program, manager: sdkParams.payer }, params));
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [[ix]],
multipleLookupTableAddresses: [[]],
signers: [[]],
batches: [1],
});
});
}
function removeTokenHandler(sdkParams, params) {
return __awaiter(this, void 0, void 0, function* () {
const ix = yield (0, removeToken_1.removeTokenIx)(Object.assign({ program: sdkParams.program, manager: sdkParams.payer }, params));
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [[ix]],
multipleLookupTableAddresses: [[]],
signers: [[]],
batches: [1],
});
});
}
function updateTokenWeightsHandler(sdkParams, params) {
return __awaiter(this, void 0, void 0, function* () {
const ix = yield (0, updateTokenWeights_1.updateTokenWeightsIx)(Object.assign({ program: sdkParams.program, manager: sdkParams.payer }, params));
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [[ix]],
multipleLookupTableAddresses: [[]],
signers: [[]],
batches: [1],
});
});
}
function createPythSponsoredFeedsHandler(sdkParams) {
return __awaiter(this, void 0, void 0, function* () {
const pythSponsoredFeedsKeypair = web3_js_1.Keypair.generate();
const ixs = yield (0, createPythSponsoredFeeds_1.createPythSponsoredFeedsIxs)({
program: sdkParams.program,
payer: sdkParams.payer,
pythSponsoredFeeds: pythSponsoredFeedsKeypair.publicKey,
});
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [ixs],
multipleLookupTableAddresses: [[]],
signers: [[pythSponsoredFeedsKeypair]],
batches: [1],
});
});
}
function updatePythSponsoredFeedsHandler(sdkParams, params) {
return __awaiter(this, void 0, void 0, function* () {
const ix = yield (0, updatePythSponsoredFeeds_1.updatePythSponsoredFeedsIx)(Object.assign({ program: sdkParams.program, payer: sdkParams.payer }, params));
return yield (0, txUtils_1.prepareV0Transactions)({
connection: sdkParams.connection,
payer: sdkParams.payer,
priorityFee: sdkParams.priorityFee,
multipleIxs: [[ix]],
multipleLookupTableAddresses: [[]],
signers: [[]],
batches: [1],
});
});
}