@keccak256-evg/passport-sdk
Version:
T-REX Passport SDK for interacting with Passport and Registry contracts
63 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createViemPublicClient = createViemPublicClient;
exports.createViemWalletClient = createViemWalletClient;
exports.getPendingBindWalletsWithViem = getPendingBindWalletsWithViem;
exports.createViemClientWithCustomChain = createViemClientWithCustomChain;
const viem_1 = require("viem");
const abi_1 = require("../abi");
const chains_1 = require("../constants/chains");
/**
* 创建 Public Client
*/
function createViemPublicClient(options) {
const chain = options.chain || chains_1.tRexTestnet;
return (0, viem_1.createPublicClient)({
chain,
transport: (0, viem_1.http)(options.rpcUrl),
});
}
/**
* 创建 Wallet Client
*/
function createViemWalletClient(options) {
const chain = options.chain || chains_1.tRexTestnet;
return (0, viem_1.createWalletClient)({
chain,
transport: (0, viem_1.http)(options.rpcUrl),
account: options.account,
});
}
/**
* 使用 viem 调用 getPendingBindWallets 方法(需要 msg.sender 验证)
*/
async function getPendingBindWalletsWithViem(publicClient, passportAddress, account) {
try {
const result = await publicClient.readContract({
address: passportAddress,
abi: abi_1.PASSPORT_ABI,
functionName: 'getPendingBindWallets',
account,
});
return result;
}
catch (error) {
console.error('Viem getPendingBindWallets error:', error);
throw error;
}
}
/**
* 创建带有自定义链的 Public Client
*/
function createViemClientWithCustomChain(rpcUrl, chainConfig) {
const defaultChain = chains_1.tRexTestnet;
const customChain = chainConfig ? (0, viem_1.defineChain)({
...defaultChain,
...chainConfig,
}) : defaultChain;
return (0, viem_1.createPublicClient)({
chain: customChain,
transport: (0, viem_1.http)(rpcUrl),
});
}
//# sourceMappingURL=viem.js.map