dotbit-sdk-allin
Version:
A complete .bit SDK and utilities in TypeScript
26 lines (21 loc) • 1.13 kB
text/typescript
import { ethers } from 'ethers'
import { ExternalProvider } from '@ethersproject/providers'
import { MessageTypes, TypedMessage } from '@metamask/eth-sig-util'
import { BitSigner, SendTransactionParam } from './BitSigner'
export class ProviderSigner extends BitSigner {
constructor (public provider: ExternalProvider) {
super()
this.signer = new ethers.providers.Web3Provider(provider).getSigner()
}
private request (method: string, params?: any[]) {
return this.provider.request({ method, params })
}
async signTypedData (data: TypedMessage<MessageTypes>) {
// ethers signTypedData behave differently from metamask's, we had to figure it out why
// return await this.signer._signTypedData(data.domain as any, data.types, data.message)
return await this.request('eth_signTypedData_v4', [await this.signer.getAddress(), JSON.stringify(data)])
}
async sendTransaction (sendTransactionParam: SendTransactionParam): Promise<string> {
return await this.request('eth_sendTransaction', [await this.signer.getAddress(), JSON.stringify(sendTransactionParam)])
}
}