import { Database } from '../database'
import { _load } from './load'
import { Wallet } from '.'
+import { WorkerQueue } from '../vault/worker-queue'
import { NamedData } from '#types'
-export async function _create (wallet: Wallet, password: string, mnemonicSalt?: string): Promise<NamedData<ArrayBuffer>>
-export async function _create (wallet: Wallet, password: unknown, mnemonicSalt?: unknown): Promise<NamedData<ArrayBuffer>> {
+export async function _create (wallet: Wallet, vault: WorkerQueue, password: string, mnemonicSalt?: string): Promise<NamedData<ArrayBuffer>>
+export async function _create (wallet: Wallet, vault: WorkerQueue, password: unknown, mnemonicSalt?: unknown): Promise<NamedData<ArrayBuffer>> {
if (typeof password !== 'string') {
throw new TypeError('Invalid password', { cause: typeof password })
}
throw new TypeError('Mnemonic salt must be a string')
}
try {
- const { iv, salt, encrypted, seed, mnemonic } = await wallet.vault.request<ArrayBuffer>({
+ const { iv, salt, encrypted, seed, mnemonic } = await vault.request<ArrayBuffer>({
action: 'create',
type: wallet.type,
password: utf8.toBuffer(password),
static async create (type: 'BIP-44' | 'BLAKE2b', password: string, mnemonicSalt?: string): Promise<Wallet> {\r
Wallet.#isInternal = true\r
const self = new this(type)\r
- { ({ mnemonic: self.#mnemonic, seed: self.#seed } = await _create(self, password, mnemonicSalt)) }\r
+ { ({ mnemonic: self.#mnemonic, seed: self.#seed } = await _create(self, self.#vault, password, mnemonicSalt)) }\r
return self\r
}\r
\r
static async load (type: WalletType, password: string, secret: string, mnemonicSalt?: string): Promise<Wallet> {\r
Wallet.#isInternal = true\r
const self = new this(type)\r
- await _load(self, password, secret, mnemonicSalt)\r
+ await _load(self, self.#vault, password, secret, mnemonicSalt)\r
return self\r
}\r
\r
#type: WalletType\r
\r
get id () { return this.#id }\r
- get vault () { return this.#vault }\r
get type () { return this.#type }\r
\r
/** Set when calling `create()` and self-destructs after the first read. */\r
import { NamedData } from '#types'
import { hex, utf8 } from '../convert'
import { Database } from '../database'
-import { Wallet } from '.'
+import { Wallet } from '#wallet'
+import { WorkerQueue } from '../vault/worker-queue'
-export async function _load (wallet: Wallet, password: string, secret: string, mnemonicSalt?: string): Promise<void>
-export async function _load (wallet: Wallet, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise<void> {
+export async function _load (wallet: Wallet, vault: WorkerQueue, password: string, secret: string, mnemonicSalt?: string): Promise<void>
+export async function _load (wallet: Wallet, vault: WorkerQueue, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise<void> {
if (typeof password !== 'string') {
throw new TypeError('Password must be a string')
}
}
secret = undefined
mnemonicSalt = undefined
- const result = wallet.vault.request<ArrayBuffer>(data)
+ const result = vault.request<ArrayBuffer>(data)
const { iv, salt, encrypted } = await result
const record = {
id: wallet.id,