diff --git a/src/coinbase/wallet.ts b/src/coinbase/wallet.ts index b23f3c3f..cd78ed11 100644 --- a/src/coinbase/wallet.ts +++ b/src/coinbase/wallet.ts @@ -143,12 +143,16 @@ export class Wallet { * Allows for the loading of an existing CDP wallet into CDP. * - If MnemonicSeedPhrase: Must contain a valid BIP-39 mnemonic phrase (12, 15, 18, 21, or 24 words). * Allows for the import of an external wallet into CDP as a 1-of-1 wallet. + * @param networkId - the ID of the blockchain network. Defaults to 'base-sepolia'. * @returns A Promise that resolves to the loaded Wallet instance * @throws {ArgumentError} If the data format is invalid. * @throws {ArgumentError} If the seed is not provided. * @throws {ArgumentError} If the mnemonic seed phrase is invalid. */ - public static async import(data: WalletData | MnemonicSeedPhrase): Promise { + public static async import( + data: WalletData | MnemonicSeedPhrase, + networkId: string = Coinbase.networks.BaseSepolia, + ): Promise { // Check if data is a mnemonic seed phrase object if (isMnemonicSeedPhrase(data)) { // Handle mnemonic seed phrase object import @@ -168,7 +172,7 @@ export class Wallet { // Create wallet using the provided seed const wallet = await Wallet.createWithSeed({ seed: seed, - networkId: Coinbase.networks.BaseSepolia, + networkId, }); // Ensure the wallet is created diff --git a/src/tests/wallet_test.ts b/src/tests/wallet_test.ts index e09a8fad..67b97a20 100644 --- a/src/tests/wallet_test.ts +++ b/src/tests/wallet_test.ts @@ -1101,6 +1101,18 @@ describe("Wallet Class", () => { expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledTimes(1); }); + it("successfully imports a wallet from a valid 24-word mnemonic on base-mainnet", async () => { + const wallet = await Wallet.import( + { mnemonicPhrase: validMnemonic }, + Coinbase.networks.BaseMainnet, + ); + expect(wallet).toBeInstanceOf(Wallet); + expect(wallet.getNetworkId()).toEqual(Coinbase.networks.BaseMainnet); + expect(Coinbase.apiClients.wallet!.createWallet).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.address!.createAddress).toHaveBeenCalledTimes(1); + expect(Coinbase.apiClients.address!.listAddresses).toHaveBeenCalledTimes(1); + }); + it("throws an error when mnemonic is empty", async () => { await expect(Wallet.import({ mnemonicPhrase: "" })).rejects.toThrow( "BIP-39 mnemonic seed phrase must be provided",