UNPKG

@etherspot/prime-sdk

Version:

Etherspot Prime (Account Abstraction) SDK

75 lines (74 loc) 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WalletConnectWalletProvider = void 0; const ethers_1 = require("ethers"); const common_1 = require("../../common"); const dynamic_wallet_provider_1 = require("./dynamic.wallet-provider"); class WalletConnectWalletProvider extends dynamic_wallet_provider_1.DynamicWalletProvider { static connect(connector) { return new WalletConnectWalletProvider(connector); } constructor(connector) { super('WalletConnect'); this.connector = connector; try { const { accounts: [address], chainId, } = connector; this.setAddress(address); this.setNetworkName(chainId); } catch (err) { } this.updateSessionHandler = this.updateSessionHandler.bind(this); connector.on('connect', this.updateSessionHandler); connector.on('session_update', this.updateSessionHandler); connector.on('disconnect', () => { this.setAddress(null); this.setNetworkName(null); }); } async signMessage(message) { const response = await this.connector.signPersonalMessage([ (0, common_1.toHex)(message), this.address, ]); return response || null; } async signTypedData(typedData, message, factoryAddress, initCode) { const signature = await this.connector.request({ method: 'eth_signTypedData_v4', params: [ this.address, { domain: typedData.domain, message, primaryType: typedData.primaryType, types: typedData.types, } ] }); if (initCode !== '0x') { const abiCoderResult = ethers_1.utils.defaultAbiCoder.encode(['address', 'bytes', 'bytes'], [factoryAddress, initCode, signature]); return abiCoderResult + '6492649264926492649264926492649264926492649264926492649264926492'; } return signature; } updateSessionHandler(error, payload) { let address = null; let chainId = null; if (!error) { try { ({ accounts: [address], chainId, } = payload.params[0]); } catch (err) { address = null; chainId = null; } } this.setAddress(address); this.setNetworkName(chainId); } } exports.WalletConnectWalletProvider = WalletConnectWalletProvider;