UNPKG

@thirdweb-dev/wallets

Version:

<p align="center"> <br /> <a href="https://thirdweb.com"><img src="https://github.com/thirdweb-dev/js/blob/main/legacy_packages/sdk/logo.svg?raw=true" width="200" alt=""/></a> <br /> </p> <h1 align="center">thirdweb Wallet SDK</h1> <p align="center"> <a h

78 lines (73 loc) 2.32 kB
import { AbstractWallet } from '../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.esm.js'; import { ethers } from 'ethers'; import { AwsKmsSigner } from 'ethers-aws-kms-signer'; import '../../../../dist/defineProperty-7303a112.esm.js'; import 'eventemitter3'; import '@thirdweb-dev/sdk'; class AwsSigner extends AwsKmsSigner { constructor(options, provider) { super(options); // @ts-expect-error Allow passing null ethers.utils.defineReadOnly(this, "provider", provider || null); this._options = options; } async _signTypedData(domain, types, value) { const hash = ethers.utils._TypedDataEncoder.hash(domain, types, value); return this._signDigest(hash); } connect(provider) { const newSigner = super.connect(provider); newSigner._signTypedData = this._signTypedData; return newSigner; } } /** * Connect to a custodial wallet with a signing key in [AWS Key Management Service](https://aws.amazon.com/kms/). * * In order to instantiate an AWS KMS wallet, you need to get the relevant credentials for the AWS KMS key that you want to use. * * @example * ```js * import { AwsKmsWallet } from "@thirdweb-dev/wallets/evm/wallets/aws-kms"; * * const wallet = new AwsKmsWallet({ * region: "us-east-1", * accessKeyId: process.env.AWS_ACCESS_KEY_ID, * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, * sessionToken: process.env.AWS_SESSION_TOKEN, * keyId: process.env.AWS_KEY_ID, * }); * ``` * * @wallet */ class AwsKmsWallet extends AbstractWallet { /** * Create instance of `AwsKmsWallet` * @param options - * The `options` object of type `AwsKmsSignerCredentials` from `ethers-aws-kms-signer` package */ constructor(options) { super(); this._options = options; } /** * Get [ethers signer](https://docs.ethers.io/v5/api/signer/) of the connected wallet */ async getSigner() { if (!this._signer) { this._signer = new Promise(async (resolve, reject) => { try { const signer = new AwsSigner(this._options); resolve(signer); } catch (err) { // remove the cached promise so we can try again this._signer = undefined; reject(err); } }); } return this._signer; } } export { AwsKmsWallet, AwsSigner };