-
Notifications
You must be signed in to change notification settings - Fork 302
Expand file tree
/
Copy pathdescriptorWallet.ts
More file actions
42 lines (33 loc) · 1.4 KB
/
descriptorWallet.ts
File metadata and controls
42 lines (33 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import * as t from 'io-ts';
import { IWallet, WalletCoinSpecific } from '@bitgo/sdk-core';
import { UtxoWallet, UtxoWalletData } from '../wallet.js';
import type { DescriptorMap } from '../wasmUtil.js';
import { NamedDescriptor } from './NamedDescriptor.js';
import { DescriptorValidationPolicy, KeyTriple, toDescriptorMapValidate } from './validatePolicy.js';
type DescriptorWalletCoinSpecific = {
descriptors: NamedDescriptor[];
};
function isDescriptorWalletCoinSpecific(obj: unknown): obj is DescriptorWalletCoinSpecific {
return (
obj !== null && typeof obj === 'object' && 'descriptors' in obj && t.array(NamedDescriptor).is(obj.descriptors)
);
}
type DescriptorWalletData = UtxoWalletData & {
coinSpecific: DescriptorWalletCoinSpecific;
};
export interface IDescriptorWallet extends UtxoWallet {
coinSpecific(): WalletCoinSpecific & DescriptorWalletCoinSpecific;
}
export function isDescriptorWalletData(obj: UtxoWalletData): obj is DescriptorWalletData {
return isDescriptorWalletCoinSpecific(obj.coinSpecific);
}
export function isDescriptorWallet(obj: IWallet): obj is IDescriptorWallet {
return isDescriptorWalletCoinSpecific(obj.coinSpecific());
}
export function getDescriptorMapFromWallet(
wallet: IDescriptorWallet,
walletKeys: KeyTriple,
policy: DescriptorValidationPolicy
): DescriptorMap {
return toDescriptorMapValidate(wallet.coinSpecific().descriptors, walletKeys, policy);
}