UNPKG

@reservoir0x/relay-sui-wallet-adapter

Version:

A Sui wallet adapter for use in @reservoir0x/relay-sdk

50 lines 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.adaptSuiWallet = void 0; const relay_sdk_1 = require("@reservoir0x/relay-sdk"); const transactions_1 = require("@mysten/sui/transactions"); const adaptSuiWallet = (walletAddress, chainId, client, signAndExecuteTransactionBlock) => { let _chainId = chainId; const getChainId = async () => { return _chainId; }; return { vmType: 'suivm', getChainId, address: async () => { return walletAddress; }, handleSignMessageStep: async () => { throw new Error('Message signing not implemented for Sui'); }, handleSendTransactionStep: async (_chainId, stepItem) => { const client = (0, relay_sdk_1.getClient)(); const txData = stepItem.data.data; if (!txData) { throw new Error('Transaction data not found'); } const tx = transactions_1.Transaction.from(txData); const result = await signAndExecuteTransactionBlock(tx); client.log(['Transaction digest obtained', result.digest], relay_sdk_1.LogLevel.Verbose); return result.digest; }, handleConfirmTransactionStep: async (txHash) => { const result = await client.waitForTransaction({ digest: txHash, options: { showEffects: true } }); if (result.errors && result.errors.length > 0) { throw new Error(`Transaction failed: ${result.errors.join(', ')}`); } return { digest: result.digest }; }, switchChain: (chainId) => { _chainId = chainId; return Promise.resolve(); } }; }; exports.adaptSuiWallet = adaptSuiWallet; //# sourceMappingURL=adapter.js.map