Skip to content

Commit 83cfd4b

Browse files
OttoAllmendingerllm-git
andcommitted
feat(abstract-utxo): inline unspent type definitions
Inlined Unspent interface from utxo-lib to abstract-utxo to reduce dependencies. Created new unspent.ts file with core UTXO types that includes detailed documentation for each type. Issue: BTC-2980 Co-authored-by: llm-git <llm-git@ttll.de>
1 parent 16c89b4 commit 83cfd4b

19 files changed

Lines changed: 93 additions & 46 deletions

modules/abstract-utxo/src/abstractUtxoCoin.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ import { getPolicyForEnv } from './descriptor/validatePolicy';
9393
import { signTransaction } from './transaction/signTransaction';
9494
import { isUtxoWalletData, UtxoWallet } from './wallet';
9595
import { isDescriptorWalletData } from './descriptor/descriptorWallet';
96+
import type { Unspent } from './unspent';
9697

9798
import ScriptType2Of3 = utxolib.bitgo.outputScripts.ScriptType2Of3;
9899

@@ -142,8 +143,6 @@ type UtxoCustomSigningFunction<TNumber extends number | bigint> = {
142143

143144
const { isChainCode, scriptTypeForChain, outputScripts } = bitgo;
144145

145-
type Unspent<TNumber extends number | bigint = number> = bitgo.Unspent<TNumber>;
146-
147146
/**
148147
* Convert ValidationError to TxIntentMismatchRecipientError with structured data
149148
*

modules/abstract-utxo/src/impl/doge/doge.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@ import { UtxoCoinName } from '../../names';
1515
import { ParsedTransaction } from '../../transaction/types';
1616
import type { TransactionExplanation } from '../../transaction/fixedScript/explainTransaction';
1717
import type { CrossChainRecoverySigned, CrossChainRecoveryUnsigned } from '../../recovery/crossChainRecovery';
18+
import type { Unspent } from '../../unspent';
1819

19-
type UnspentJSON = bitgo.Unspent<number> & { valueString: string };
20+
type UnspentJSON = Unspent<number> & { valueString: string };
2021
type TransactionInfoJSON = TransactionInfo<number> & { unspents: UnspentJSON[] };
2122
type TransactionPrebuildJSON = TransactionPrebuild<number> & { txInfo: TransactionInfoJSON };
2223

2324
function parseUnspents<TNumber extends number | bigint>(
24-
unspents: UnspentJSON[] | bitgo.Unspent<TNumber>[]
25-
): bitgo.Unspent<bigint>[] {
26-
return unspents.map((unspent: bitgo.Unspent<TNumber> | UnspentJSON): bitgo.Unspent<bigint> => {
25+
unspents: UnspentJSON[] | Unspent<TNumber>[]
26+
): Unspent<bigint>[] {
27+
return unspents.map((unspent: Unspent<TNumber> | UnspentJSON): Unspent<bigint> => {
2728
if (typeof unspent.value === 'bigint') {
28-
return unspent as bitgo.Unspent<bigint>;
29+
return unspent as Unspent<bigint>;
2930
}
3031
if ('valueString' in unspent) {
3132
return { ...unspent, value: BigInt(unspent.valueString) };

modules/abstract-utxo/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export * from './config';
44
export * from './recovery';
55
export * from './transaction/fixedScript/replayProtection';
66
export * from './transaction/fixedScript/signLegacyTransaction';
7+
export * from './unspent';
78

89
export { UtxoWallet } from './wallet';
910
export * as descriptor from './descriptor';

modules/abstract-utxo/src/recovery/RecoveryProvider.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { BlockchairApi, AddressInfo, TransactionIO } from '@bitgo/blockapis';
2-
import { bitgo } from '@bitgo/utxo-lib';
32

4-
import { ApiNotImplementedError } from './baseApi';
3+
import type { Unspent } from '../unspent';
54

6-
type Unspent<TNumber extends number | bigint = number> = bitgo.Unspent<TNumber>;
5+
import { ApiNotImplementedError } from './baseApi';
76

87
/**
98
* An account with bear minimum information required for recoveries.

modules/abstract-utxo/src/recovery/backupKeyRecovery.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { generateAddressWithChainAndIndex } from '../address';
1919
import { encodeTransaction } from '../transaction/decode';
2020
import { getReplayProtectionPubkeys } from '../transaction/fixedScript/replayProtection';
2121
import { isTestnetCoin, UtxoCoinName } from '../names';
22+
import type { WalletUnspent } from '../unspent';
2223

2324
import { forCoin, RecoveryProvider } from './RecoveryProvider';
2425
import { MempoolApi } from './mempoolApi';
@@ -28,8 +29,7 @@ import { createBackupKeyRecoveryPsbt, getRecoveryAmount, PsbtBackend, toPsbtToUt
2829
type ScriptType2Of3 = utxolib.bitgo.outputScripts.ScriptType2Of3;
2930
type ChainCode = utxolib.bitgo.ChainCode;
3031
type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
31-
type WalletUnspent<TNumber extends number | bigint> = utxolib.bitgo.WalletUnspent<TNumber>;
32-
type WalletUnspentJSON = utxolib.bitgo.WalletUnspent & {
32+
type WalletUnspentJSON = WalletUnspent & {
3333
valueString: string;
3434
};
3535

modules/abstract-utxo/src/recovery/crossChainRecovery.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { getNetworkFromCoinName, isTestnetCoin, UtxoCoinName } from '../names';
1111
import { encodeTransaction } from '../transaction/decode';
1212
import { getReplayProtectionPubkeys } from '../transaction/fixedScript/replayProtection';
1313
import { toTNumber } from '../tnumber';
14+
import type { Unspent, WalletUnspent } from '../unspent';
1415

1516
import {
1617
PsbtBackend,
@@ -22,8 +23,6 @@ import {
2223

2324
const { unspentSum } = utxolib.bitgo;
2425
type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
25-
type Unspent<TNumber extends number | bigint = number> = utxolib.bitgo.Unspent<TNumber>;
26-
type WalletUnspent<TNumber extends number | bigint = number> = utxolib.bitgo.WalletUnspent<TNumber>;
2726

2827
export interface BuildRecoveryTransactionOptions {
2928
wallet: string;

modules/abstract-utxo/src/recovery/psbt.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { Dimensions } from '@bitgo/unspents';
33
import { CoinName, fixedScriptWallet, utxolibCompat, address as wasmAddress } from '@bitgo/wasm-utxo';
44

55
import { getNetworkFromCoinName, UtxoCoinName } from '../names';
6+
import type { WalletUnspent } from '../unspent';
67

78
type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
8-
type WalletUnspent<TNumber extends number | bigint> = utxolib.bitgo.WalletUnspent<TNumber>;
99

1010
const { chainCodesP2tr, chainCodesP2trMusig2 } = utxolib.bitgo;
1111

modules/abstract-utxo/src/transaction/explainTransaction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { getDescriptorMapFromWallet, isDescriptorWallet } from '../descriptor';
66
import { toBip32Triple } from '../keychains';
77
import { getPolicyForEnv } from '../descriptor/validatePolicy';
88
import { UtxoCoinName } from '../names';
9+
import type { Unspent } from '../unspent';
910

1011
import { getReplayProtectionPubkeys } from './fixedScript/replayProtection';
1112
import type {
@@ -25,7 +26,7 @@ export function explainTx<TNumber extends number | bigint>(
2526
params: {
2627
wallet?: IWallet;
2728
pubs?: string[];
28-
txInfo?: { unspents?: utxolib.bitgo.Unspent<TNumber>[] };
29+
txInfo?: { unspents?: Unspent<TNumber>[] };
2930
changeInfo?: fixedScript.ChangeAddressInfo[];
3031
},
3132
coinName: UtxoCoinName

modules/abstract-utxo/src/transaction/fixedScript/SigningError.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import * as utxolib from '@bitgo/utxo-lib';
1+
import type { Unspent } from '../../unspent';
22

33
import type { PsbtParsedScriptType } from './signPsbtUtxolib';
44

5-
type Unspent<TNumber extends number | bigint = number> = utxolib.bitgo.Unspent<TNumber>;
6-
75
export class InputSigningError<TNumber extends number | bigint = number> extends Error {
86
static expectedWalletUnspent<TNumber extends number | bigint>(
97
inputIndex: number,

modules/abstract-utxo/src/transaction/fixedScript/explainTransaction.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import * as utxocore from '@bitgo/utxo-core';
77

88
import type { Bip322Message } from '../../abstractUtxoCoin';
99
import type { Output, FixedScriptWalletOutput } from '../types';
10+
import type { Unspent } from '../../unspent';
1011
import { toExtendedAddressFormat } from '../recipient';
1112
import { getPayGoVerificationPubkey } from '../getPayGoVerificationPubkey';
1213
import { toBip32Triple } from '../../keychains';
@@ -192,7 +193,7 @@ function getPsbtInputSignaturesCount(
192193
function getTxInputSignaturesCount<TNumber extends number | bigint>(
193194
tx: bitgo.UtxoTransaction<TNumber>,
194195
params: {
195-
txInfo?: { unspents?: bitgo.Unspent<TNumber>[] };
196+
txInfo?: { unspents?: Unspent<TNumber>[] };
196197
pubs?: bitgo.RootWalletKeys | string[];
197198
},
198199
coinName: UtxoCoinName
@@ -444,7 +445,7 @@ export function explainLegacyTx<TNumber extends number | bigint>(
444445
tx: bitgo.UtxoTransaction<TNumber>,
445446
params: {
446447
pubs?: string[];
447-
txInfo?: { unspents?: bitgo.Unspent<TNumber>[] };
448+
txInfo?: { unspents?: Unspent<TNumber>[] };
448449
changeInfo?: { address: string; chain: number; index: number }[];
449450
},
450451
coinName: UtxoCoinName

0 commit comments

Comments
 (0)