UNPKG

escrow-market-sdk

Version:
100 lines 4.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.estimateFee = exports.buildAndSignTransaction = exports.toBN = exports.createAssociatedTokenAccountIfNotExist = exports.findDealAddress = exports.findWithdrawNonceAddress = exports.findVaultTokenAccountAddress = exports.findVaultAuthorityAddress = exports.findConfigAddress = void 0; const web3_js_1 = require("@solana/web3.js"); const spl_token_1 = require("@solana/spl-token"); const bn_js_1 = __importDefault(require("bn.js")); const constants_1 = require("../constants"); /** * Tìm PDA cho Config account */ const findConfigAddress = async (programId) => { return await web3_js_1.PublicKey.findProgramAddress([constants_1.CONFIG_SEED], programId); }; exports.findConfigAddress = findConfigAddress; /** * Tìm PDA cho Vault authority */ const findVaultAuthorityAddress = async (mint, programId) => { return await web3_js_1.PublicKey.findProgramAddress([constants_1.VAULT_SEED, mint.toBuffer()], programId); }; exports.findVaultAuthorityAddress = findVaultAuthorityAddress; /** * Tìm PDA cho Vault token account */ const findVaultTokenAccountAddress = async (mint, programId) => { return await web3_js_1.PublicKey.findProgramAddress([constants_1.VAULT_TOKEN_ACCOUNT_SEED, mint.toBuffer()], programId); }; exports.findVaultTokenAccountAddress = findVaultTokenAccountAddress; /** * Tìm PDA cho WithdrawNonce account */ const findWithdrawNonceAddress = async (user, nonce, programId) => { return await web3_js_1.PublicKey.findProgramAddress([constants_1.WITHDRAW_NONCE_SEED, user.toBuffer(), nonce.toArrayLike(Buffer, 'le', 8)], programId); }; exports.findWithdrawNonceAddress = findWithdrawNonceAddress; /** * Tìm PDA cho Deal account */ const findDealAddress = async (dealId, programId) => { return await web3_js_1.PublicKey.findProgramAddress([constants_1.DEAL_SEED, Buffer.from(dealId)], programId); }; exports.findDealAddress = findDealAddress; /** * Tạo Associated Token Account nếu chưa tồn tại */ const createAssociatedTokenAccountIfNotExist = async (connection, payer, mint, owner) => { const associatedTokenAddress = await (0, spl_token_1.getAssociatedTokenAddress)(mint, owner, true); // Kiểm tra xem account đã tồn tại chưa const tokenAccount = await connection.getAccountInfo(associatedTokenAddress); if (!tokenAccount) { // Nếu chưa tồn tại, tạo mới // Code để tạo ATA sẽ được triển khai ở đây } return associatedTokenAddress; }; exports.createAssociatedTokenAccountIfNotExist = createAssociatedTokenAccountIfNotExist; /** * Chuyển đổi số lượng thành BN */ const toBN = (amount) => { if (typeof amount === 'number') { return new bn_js_1.default(amount); } else if (typeof amount === 'bigint') { return new bn_js_1.default(amount.toString()); } else { return new bn_js_1.default(amount); } }; exports.toBN = toBN; /** * Xây dựng và ký transaction */ const buildAndSignTransaction = async (connection, payer, instructions, signers = []) => { const tx = new web3_js_1.Transaction(); tx.add(...instructions); tx.feePayer = payer; tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; if (signers.length > 0) { tx.partialSign(...signers); } return tx; }; exports.buildAndSignTransaction = buildAndSignTransaction; /** * Ước tính phí giao dịch */ const estimateFee = async (connection, instructions, payer) => { const tx = new web3_js_1.Transaction().add(...instructions); tx.feePayer = payer; tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; const response = await connection.getFeeForMessage(tx.compileMessage(), 'confirmed'); return response.value; }; exports.estimateFee = estimateFee; //# sourceMappingURL=index.js.map