Skip to content

Commit 017ba2c

Browse files
feat(abstract-utxo): add isDescriptorWalletData
TICKET: BTC-1450
1 parent 9e36b9a commit 017ba2c

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import * as t from 'io-ts';
2+
import { NamedDescriptor } from './NamedDescriptor';
3+
import { AbstractUtxoCoinWalletData } from '../abstractUtxoCoin';
4+
import { DescriptorMap, toDescriptorMap } from '../core/descriptor';
5+
6+
type DescriptorWalletData = AbstractUtxoCoinWalletData & {
7+
coinSpecific: {
8+
descriptors: NamedDescriptor[];
9+
};
10+
};
11+
12+
export function isDescriptorWalletData(obj: AbstractUtxoCoinWalletData): obj is DescriptorWalletData {
13+
if ('coinSpecific' in obj && 'descriptors' in obj.coinSpecific) {
14+
return t.array(NamedDescriptor).is(obj.coinSpecific.descriptors);
15+
}
16+
return false;
17+
}
18+
19+
export function getDescriptorMapFromWalletData(wallet: DescriptorWalletData): DescriptorMap {
20+
return toDescriptorMap(wallet.coinSpecific.descriptors);
21+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export { Miniscript, Descriptor } from '@bitgo/wasm-miniscript';
22
export { assertDescriptorWalletAddress } from './assertDescriptorWalletAddress';
33
export { NamedDescriptor } from './NamedDescriptor';
4+
export { isDescriptorWalletData, getDescriptorMapFromWalletData } from './descriptorWallet';
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import assert from 'assert';
2+
import { getDescriptorMapFromWalletData, isDescriptorWalletData } from '../../src/descriptor';
3+
import { AbstractUtxoCoinWalletData } from '../../src';
4+
import { getDescriptorMap } from '../core/descriptor/descriptor.utils';
5+
6+
describe('isDescriptorWalletData', function () {
7+
const descriptorMap = getDescriptorMap('Wsh2Of3');
8+
it('should return true for valid DescriptorWalletData', function () {
9+
const walletData: AbstractUtxoCoinWalletData = {
10+
coinSpecific: {
11+
descriptors: [...descriptorMap.entries()].map(([name, descriptor]) => ({
12+
name,
13+
value: descriptor.toString(),
14+
})),
15+
},
16+
} as unknown as AbstractUtxoCoinWalletData;
17+
18+
assert(isDescriptorWalletData(walletData));
19+
assert.strictEqual(getDescriptorMapFromWalletData(walletData).size, descriptorMap.size);
20+
});
21+
});

0 commit comments

Comments
 (0)