The Dimensions class is used to calculate an accurate estimate of a transaction's virtual size (vSize), which is critical for determining proper transaction fees. You can instantiate Dimensions using raw attributes or use static factory methods to derive dimensions from unspent outputs, inputs, or outputs.
import { Dimensions } from '@bitgo/unspents';
// Using raw attributes
const dims = new Dimensions({
nP2shInputs: 1,
nP2shP2wshInputs: 1,
nP2wshInputs: 1,
outputs: { count: 1, size: 32 },
});
// Estimating vSize by combining dimensions
const vSize = Dimensions.fromUnspents({ unspents: myUnspents })
.plus(Dimensions.fromOutputOnChain(Codes.p2shP2wsh.internal).times(nOutputs))
.getVSize();