UNPKG

@rainfi/sdk

Version:

This package is used to interact with Rain.fi protocol on Solana

73 lines 4.6 kB
"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.buyHadeswap = void 0; const tools_utils_1 = require("../../tools.utils"); const buyNftFromPair_1 = require("./generatedHades/instructions/buyNftFromPair"); const constant_1 = require("../../constant"); const web3_js_1 = require("@solana/web3.js"); const liquidityProvisionOrder_1 = require("./generatedHades/accounts/liquidityProvisionOrder"); function buyHadeswap(args) { return __awaiter(this, void 0, void 0, function* () { const [fundsSolVault] = yield web3_js_1.PublicKey.findProgramAddress([constant_1.ENCODER.encode(constant_1.SOL_FUNDS_PREFIX), args.pair.toBuffer()], constant_1.HADESWAP_PROGRAM_ID); const [nftsOwner] = yield web3_js_1.PublicKey.findProgramAddress([constant_1.ENCODER.encode(constant_1.NFTS_OWNER_PREFIX), args.pair.toBuffer()], constant_1.HADESWAP_PROGRAM_ID); const [feeSolVault] = yield web3_js_1.PublicKey.findProgramAddress([constant_1.ENCODER.encode(constant_1.FEE_PREFIX), args.pair.toBuffer()], constant_1.HADESWAP_PROGRAM_ID); const liquidityProvisionOrder = yield findLiquidityProvisionOrder(args.connection, args.pair, args.hadesPoolData); const vaultTokenAccount = yield (0, tools_utils_1.getAtaForMint)(args.nftMint, args.signer); const accounts = { nftPairBox: args.nftPairBox, pair: args.pair, user: args.signer, fundsSolVault, nftsOwner, feeSolVault, nftMint: args.nftMint, vaultNftTokenAccount: args.vaultNftTokenAccount, nftUserTokenAccount: vaultTokenAccount, assetReceiver: args.assetReceiver, protocolFeeReceiver: args.protocolFeeReceiver, associatedTokenProgram: constant_1.ASSOCIATED_TOKEN_PROGRAM_ID, // liquidityProvisionOrder: liquidityProvisionOrder || nftsOwner, // pNFT editionInfo: args.editionInfo, metadataInfo: args.metadataInfo, ownerTokenRecord: args.ownerTokenRecord, destTokenRecord: args.destTokenRecord, instructions: args.instructions, authorizationRulesProgram: args.authorizationRulesProgram, metadataProgram: args.metadataProgram }; return (0, buyNftFromPair_1.createBuyNftFromPairInstruction)(accounts, { maxAmountToPay: args.maxAmountToPay, skipFailed: args.skipFailed, authorizationData: null, payRoyalty: args.payRoyalty, }); }); } exports.buyHadeswap = buyHadeswap; function findLiquidityProvisionOrder(connection, pair, hadesPoolData) { return __awaiter(this, void 0, void 0, function* () { const liquidityProvisionOrders = (yield (connection.getProgramAccounts(new web3_js_1.PublicKey('hadeK9DLv9eA7ya5KCTqSvSvRZeJC3JgD5a9Y3CNbvu'), { filters: [{ dataSize: 112 }, { memcmp: { offset: 8, bytes: pair.toBase58() } }] }))); //{memcmp: {offset: 41, bytes: base58.encode(new BN(0).toArrayLike(Buffer, 'le', 1))}} let provisionOrder; const isLiquidityProvision = hadesPoolData.pretty().pairType === 'PairType.LiquidityProvision'; const liquidityProvisionOrdersParsed = liquidityProvisionOrders.map(x => (Object.assign(Object.assign({}, liquidityProvisionOrder_1.LiquidityProvisionOrder.fromAccountInfo(x.account)[0].pretty()), { address: x.pubkey }))); if (isLiquidityProvision) { provisionOrder = liquidityProvisionOrdersParsed.find((provisionOrder) => { const sellMathCounter = parseInt(hadesPoolData.mathCounter.toString()) + 1; return (provisionOrder.orderACounter === sellMathCounter || provisionOrder.orderBCounter === sellMathCounter); }); } return provisionOrder ? provisionOrder.address : null; }); } //# sourceMappingURL=hadeswap.js.map