@bagsfm/bags-sdk
Version:
TypeScript SDK for Bags
38 lines • 1.64 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TradeService = void 0;
const web3_js_1 = require("@solana/web3.js");
const bs58_1 = __importDefault(require("bs58"));
const base_1 = require("./base");
const validations_1 = require("../utils/validations");
class TradeService extends base_1.BaseService {
constructor(apiKey, connection, commitment = 'processed') {
super(apiKey, connection, commitment);
}
async getQuote(params) {
const normalizedParams = (0, validations_1.validateAndNormalizeGetTradeQuoteParams)(params);
const response = await this.bagsApiClient.get('/trade/quote', {
params: normalizedParams,
});
return response;
}
async createSwapTransaction(params) {
const response = await this.bagsApiClient.post('/trade/swap', params);
if (!response.swapTransaction) {
throw new Error('Invalid swap transaction response from Bags API');
}
const decodedTransaction = bs58_1.default.decode(response.swapTransaction);
const transaction = web3_js_1.VersionedTransaction.deserialize(decodedTransaction);
return {
transaction,
computeUnitLimit: response.computeUnitLimit,
lastValidBlockHeight: response.lastValidBlockHeight,
prioritizationFeeLamports: response.prioritizationFeeLamports,
};
}
}
exports.TradeService = TradeService;
//# sourceMappingURL=trade.js.map