@reservoir0x/relay-sui-wallet-adapter
Version:
A Sui wallet adapter for use in @reservoir0x/relay-sdk
50 lines • 1.9 kB
JavaScript
;
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