@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
83 lines (76 loc) • 2.59 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var evm_wallets_abstract_dist_thirdwebDevWalletsEvmWalletsAbstract = require('../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.cjs.dev.js');
var ethers = require('ethers');
var ethersAwsKmsSigner = require('ethers-aws-kms-signer');
require('../../../../dist/defineProperty-9051a5d3.cjs.dev.js');
require('eventemitter3');
require('@thirdweb-dev/sdk');
class AwsSigner extends ethersAwsKmsSigner.AwsKmsSigner {
constructor(options, provider) {
super(options);
// @ts-expect-error Allow passing null
ethers.ethers.utils.defineReadOnly(this, "provider", provider || null);
this._options = options;
}
async _signTypedData(domain, types, value) {
const hash = ethers.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 evm_wallets_abstract_dist_thirdwebDevWalletsEvmWalletsAbstract.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;
}
}
exports.AwsKmsWallet = AwsKmsWallet;
exports.AwsSigner = AwsSigner;