escrow-market-sdk
Version:
SDK for Escrow Market Solana Program
100 lines • 4.05 kB
JavaScript
;
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