@@ -7,7 +7,6 @@ import { compactSize } from './scriptSizes';
77import { PositiveInteger } from './types' ;
88
99import { VirtualSizes } from './virtualSizes' ;
10- export { VirtualSizes } ;
1110
1211/**
1312 * Apply `f` to all properties of `d`
@@ -144,15 +143,14 @@ export class Dimensions {
144143 return Dimensions . sum ( { outputs : { count : 1 , size } } ) ;
145144 }
146145
147- static readonly SingleOutput = Object . freeze ( {
148- p2sh : Dimensions . singleOutput ( VirtualSizes . txP2shOutputSize ) ,
149- p2shP2wsh : Dimensions . singleOutput ( VirtualSizes . txP2shP2wshOutputSize ) ,
150- p2wsh : Dimensions . singleOutput ( VirtualSizes . txP2wshOutputSize ) ,
151- p2tr : Dimensions . singleOutput ( VirtualSizes . txP2trOutputSize ) ,
152-
153- p2pkh : Dimensions . singleOutput ( VirtualSizes . txP2pkhOutputSize ) ,
154- p2wpkh : Dimensions . singleOutput ( VirtualSizes . txP2wpkhOutputSize ) ,
155- } ) ;
146+ static SingleOutput : {
147+ p2sh : Dimensions ;
148+ p2shP2wsh : Dimensions ;
149+ p2wsh : Dimensions ;
150+ p2tr : Dimensions ;
151+ p2pkh : Dimensions ;
152+ p2wpkh : Dimensions ;
153+ } ;
156154
157155 /**
158156 * @return Number of total inputs (p2sh + p2shP2wsh + p2wsh + p2tr)
@@ -218,15 +216,15 @@ export class Dimensions {
218216 return scriptLength + compactSize ( scriptLength ) + VirtualSizes . txOutputAmountSize ;
219217 }
220218
221- static readonly SingleInput = Object . freeze ( {
222- p2sh : Dimensions . sum ( { nP2shInputs : 1 } ) ,
223- p2shP2wsh : Dimensions . sum ( { nP2shP2wshInputs : 1 } ) ,
224- p2wsh : Dimensions . sum ( { nP2wshInputs : 1 } ) ,
225- p2trKeypath : Dimensions . sum ( { nP2trKeypathInputs : 1 } ) ,
226- p2trScriptPathLevel1 : Dimensions . sum ( { nP2trScriptPathLevel1Inputs : 1 } ) ,
227- p2trScriptPathLevel2 : Dimensions . sum ( { nP2trScriptPathLevel2Inputs : 1 } ) ,
228- p2shP2pk : Dimensions . sum ( { nP2shP2pkInputs : 1 } ) ,
229- } ) ;
219+ static SingleInput : {
220+ p2sh : Dimensions ;
221+ p2shP2wsh : Dimensions ;
222+ p2wsh : Dimensions ;
223+ p2trKeypath : Dimensions ;
224+ p2trScriptPathLevel1 : Dimensions ;
225+ p2trScriptPathLevel2 : Dimensions ;
226+ p2shP2pk : Dimensions ;
227+ } ;
230228
231229 /**
232230 * @return
@@ -269,13 +267,13 @@ export class Dimensions {
269267 }
270268 }
271269
272- static readonly ASSUME_P2SH = Dimensions . SingleInput . p2sh ;
273- static readonly ASSUME_P2SH_P2WSH = Dimensions . SingleInput . p2shP2wsh ;
274- static readonly ASSUME_P2WSH = Dimensions . SingleInput . p2wsh ;
275- static readonly ASSUME_P2TR_KEYPATH = Dimensions . SingleInput . p2trKeypath ;
276- static readonly ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions . SingleInput . p2trScriptPathLevel1 ;
277- static readonly ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions . SingleInput . p2trScriptPathLevel2 ;
278- static readonly ASSUME_P2SH_P2PK_INPUT = Dimensions . SingleInput . p2shP2pk ;
270+ static ASSUME_P2SH : Dimensions ;
271+ static ASSUME_P2SH_P2WSH : Dimensions ;
272+ static ASSUME_P2WSH : Dimensions ;
273+ static ASSUME_P2TR_KEYPATH : Dimensions ;
274+ static ASSUME_P2TR_SCRIPTPATH_LEVEL1 : Dimensions ;
275+ static ASSUME_P2TR_SCRIPTPATH_LEVEL2 : Dimensions ;
276+ static ASSUME_P2SH_P2PK_INPUT : Dimensions ;
279277
280278 private static getAssumedDimension ( params : FromInputParams = { } , index : number ) {
281279 const { assumeUnsigned } = params ;
@@ -588,3 +586,33 @@ export class Dimensions {
588586 return this . getOverheadVSize ( ) + this . getInputsVSize ( ) + this . getOutputsVSize ( ) ;
589587 }
590588}
589+
590+ // Initialize static properties that require the class to be fully defined first
591+ Dimensions . SingleOutput = Object . freeze ( {
592+ p2sh : Dimensions . singleOutput ( VirtualSizes . txP2shOutputSize ) ,
593+ p2shP2wsh : Dimensions . singleOutput ( VirtualSizes . txP2shP2wshOutputSize ) ,
594+ p2wsh : Dimensions . singleOutput ( VirtualSizes . txP2wshOutputSize ) ,
595+ p2tr : Dimensions . singleOutput ( VirtualSizes . txP2trOutputSize ) ,
596+ p2pkh : Dimensions . singleOutput ( VirtualSizes . txP2pkhOutputSize ) ,
597+ p2wpkh : Dimensions . singleOutput ( VirtualSizes . txP2wpkhOutputSize ) ,
598+ } ) ;
599+
600+ // Initialize SingleInput after the class is fully defined
601+ Dimensions . SingleInput = Object . freeze ( {
602+ p2sh : Dimensions . sum ( { nP2shInputs : 1 } ) ,
603+ p2shP2wsh : Dimensions . sum ( { nP2shP2wshInputs : 1 } ) ,
604+ p2wsh : Dimensions . sum ( { nP2wshInputs : 1 } ) ,
605+ p2trKeypath : Dimensions . sum ( { nP2trKeypathInputs : 1 } ) ,
606+ p2trScriptPathLevel1 : Dimensions . sum ( { nP2trScriptPathLevel1Inputs : 1 } ) ,
607+ p2trScriptPathLevel2 : Dimensions . sum ( { nP2trScriptPathLevel2Inputs : 1 } ) ,
608+ p2shP2pk : Dimensions . sum ( { nP2shP2pkInputs : 1 } ) ,
609+ } ) ;
610+
611+ // Initialize the ASSUME_ constants
612+ Dimensions . ASSUME_P2SH = Dimensions . SingleInput . p2sh ;
613+ Dimensions . ASSUME_P2SH_P2WSH = Dimensions . SingleInput . p2shP2wsh ;
614+ Dimensions . ASSUME_P2WSH = Dimensions . SingleInput . p2wsh ;
615+ Dimensions . ASSUME_P2TR_KEYPATH = Dimensions . SingleInput . p2trKeypath ;
616+ Dimensions . ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions . SingleInput . p2trScriptPathLevel1 ;
617+ Dimensions . ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions . SingleInput . p2trScriptPathLevel2 ;
618+ Dimensions . ASSUME_P2SH_P2PK_INPUT = Dimensions . SingleInput . p2shP2pk ;
0 commit comments