@bagsfm/bags-sdk
Version:
TypeScript SDK for Bags
79 lines • 3.46 kB
JavaScript
;
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