UNPKG

@bagsfm/bags-sdk

Version:

TypeScript SDK for Bags

79 lines 3.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigService = void 0; const web3_js_1 = require("@solana/web3.js"); const base_1 = require("./base"); const config_1 = require("../utils/config"); const bs58_1 = __importDefault(require("bs58")); const constants_1 = require("../constants"); const fee_share_1 = require("../utils/fee-share"); class ConfigService extends base_1.BaseService { constructor(apiKey, connection, commitment = 'processed') { super(apiKey, connection, commitment); } async getOrCreateConfig(wallet) { const existingConfig = await (0, config_1.getExistingConfig)(wallet, this.connection, this.commitment); if (existingConfig != null) { return { configKey: existingConfig, transaction: null, }; } const response = await this.bagsApiClient.post('/token-launch/create-config', { launchWallet: wallet.toBase58(), }); if (response.tx == null) { return { configKey: new web3_js_1.PublicKey(response.configKey), transaction: null, }; } else { const decodedTransaction = bs58_1.default.decode(response.tx); const transaction = web3_js_1.VersionedTransaction.deserialize(decodedTransaction); return { transaction, configKey: new web3_js_1.PublicKey(response.configKey), }; } } async createFeeShareConfig(params) { if (params.users.length !== 2) { throw new Error('Only exactly 2 users are supported'); } if (params.users.reduce((acc, user) => acc + user.bps, 0) !== 10000) { throw new Error('Users basis points must sum to 10000'); } if (params.quoteMint.toBase58() != constants_1.WRAPPED_SOL_MINT.toBase58()) { throw new Error('Non-wSOL quote mint not supported'); } if (!params.baseMint.toBase58().endsWith('BAGS')) { throw new Error('Non-BAGS base mint not supported'); } const sortedKeys = (0, fee_share_1.sortKeys)(params.users[0].wallet, params.users[1].wallet); const walletA = sortedKeys.sortedA; const walletB = sortedKeys.sortedB; const walletABps = params.users.find((user) => user.wallet.toBase58() === walletA.toBase58()).bps; const walletBBps = params.users.find((user) => user.wallet.toBase58() === walletB.toBase58()).bps; const response = await this.bagsApiClient.post('/token-launch/fee-share/create-config', { walletA: walletA.toBase58(), walletB: walletB.toBase58(), walletABps: walletABps, walletBBps: walletBBps, payer: params.payer.toBase58(), baseMint: params.baseMint.toBase58(), quoteMint: params.quoteMint.toBase58(), }); const decodedTransaction = bs58_1.default.decode(response.tx); const transaction = web3_js_1.VersionedTransaction.deserialize(decodedTransaction); return { transaction, configKey: new web3_js_1.PublicKey(response.configKey), }; } } exports.ConfigService = ConfigService; //# sourceMappingURL=config.js.map