Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/wallet-manager-evm.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import SeedSignerEvm from './signers/seed-signer-evm.js'
/** @typedef {import('ethers').Provider} Provider */

/** @typedef {import("@tetherto/wdk-wallet").FeeRates} FeeRates */
/** @typedef {import("@tetherto/wdk-wallet").ISigner} ISigner */
/** @typedef {import("@tetherto/wdk-wallet").SignerError} SignerError */

/** @typedef {import('./wallet-account-evm.js').EvmWalletConfig} EvmWalletConfig */
Expand Down Expand Up @@ -56,7 +57,7 @@ export default class WalletManagerEvm extends WalletManager {
* derive child accounts); non-derivable signers (e.g. private-key signers) are not allowed
* as the default but may be registered by name via {@link addSigner} - If not adding to your global account managment for using just one non derivable signer create a standalone account.
*
* @param {string|Uint8Array|ISignerEvm} seedOrSigner - A BIP-39 seed phrase, seed bytes, or a root signer.
* @param {string|Uint8Array|ISigner} seedOrSigner - A BIP-39 seed phrase, seed bytes, or a root signer. Root signers must be derivable — non-derivable signers (e.g. private-key signers) can only be registered by name via {@link addSigner}.
* @param {EvmWalletConfig} [config] - The configuration object.
*/
constructor (seedOrSigner, config = {}) {
Expand Down
7 changes: 7 additions & 0 deletions tests/wallet-manager-evm.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@ describe('WalletManagerEvm', () => {
expect(() => new WalletManagerEvm(new PrivateKeySignerEvm(PRIVATE_KEY))) // eslint-disable-line no-new
.toThrow('The default signer must be derivable.')
})

test('should throw if the default signer is a bare ISigner without isDerivable', () => {
const bareSigner = { derive: async () => {}, signTransaction: async () => {}, getAddress: async () => '0x0', dispose: () => {} }

expect(() => new WalletManagerEvm(bareSigner)) // eslint-disable-line no-new
.toThrow('The default signer must be derivable.')
})
})

describe('getAccount', () => {
Expand Down
6 changes: 4 additions & 2 deletions types/src/wallet-manager-evm.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/** @typedef {import('ethers').Provider} Provider */
/** @typedef {import("@tetherto/wdk-wallet").FeeRates} FeeRates */
/** @typedef {import("@tetherto/wdk-wallet").ISigner} ISigner */
/** @typedef {import('./wallet-account-evm.js').EvmWalletConfig} EvmWalletConfig */
export default class WalletManagerEvm extends WalletManager {
/**
Expand All @@ -24,10 +25,10 @@ export default class WalletManagerEvm extends WalletManager {
* derive child accounts); non-derivable signers (e.g. private-key signers) are not allowed
* as the default but may be registered by name via {@link addSigner} - If not adding to your global account managment for using just one non derivable signer create a standalone account.
*
* @param {string|Uint8Array|ISignerEvm} seedOrSigner - A BIP-39 seed phrase, seed bytes, or a root signer.
* @param {string|Uint8Array|ISigner} seedOrSigner - A BIP-39 seed phrase, seed bytes, or a root signer. Root signers must be derivable — non-derivable signers (e.g. private-key signers) can only be registered by name via {@link addSigner}.
* @param {EvmWalletConfig} [config] - The configuration object.
*/
constructor(seedOrSigner: string | Uint8Array | ISignerEvm, config?: EvmWalletConfig);
constructor(seedOrSigner: string | Uint8Array | ISigner, config?: EvmWalletConfig);
/**
* An ethers provider to interact with a node of the blockchain.
*
Expand Down Expand Up @@ -81,6 +82,7 @@ export default class WalletManagerEvm extends WalletManager {
export type ISignerEvm = import("./signers/seed-signer-evm.js").ISignerEvm;
export type Provider = import("ethers").Provider;
export type FeeRates = import("@tetherto/wdk-wallet").FeeRates;
export type ISigner = import("@tetherto/wdk-wallet").ISigner;
export type EvmWalletConfig = import("./wallet-account-evm.js").EvmWalletConfig;
import WalletManager from '@tetherto/wdk-wallet';
import WalletAccountEvm from './wallet-account-evm.js';