Dinero.js v1 API Reference
Complete API reference for the Dinero.js v1 compatibility layer.
Overview
The @genkin/dinero package provides full compatibility with Dinero.js v1 API while using Genkin's core underneath.
Factory Function
Dinero(options)
Create a Dinero v1 instance.
Parameters:
options(DineroV1Options): Configuration options
Returns: DineroV1Instance
Example:
import Dinero from '@genkin/dinero';
const price = Dinero({ amount: 1000, currency: 'USD' });
console.log(price.getAmount()); // 1000 (cents)
Options
DineroV1Options
interface DineroV1Options {
amount?: number;
currency?: string | DineroV1Currency;
precision?: number;
}
Example:
const price = Dinero({
amount: 1000,
currency: 'USD',
precision: 2
});
Instance Methods
Getters
getAmount()
Get the amount in minor units.
Returns: number
const price = Dinero({ amount: 1000 });
console.log(price.getAmount()); // 1000
getCurrency()
Get the currency code.
Returns: string
const price = Dinero({ amount: 1000, currency: 'USD' });
console.log(price.getCurrency()); // "USD"
getPrecision()
Get the precision.
Returns: number
const price = Dinero({ amount: 1000, currency: 'USD' });
console.log(price.getPrecision()); // 2
toUnit()
Get the amount in major units.
Returns: number
const price = Dinero({ amount: 1000 });
console.log(price.toUnit()); // 10
Arithmetic
add(addend)
Add another Dinero instance.
Parameters:
addend(DineroV1Instance): Amount to add
Returns: DineroV1Instance
const a = Dinero({ amount: 1000 });
const b = Dinero({ amount: 500 });
const sum = a.add(b);
console.log(sum.getAmount()); // 1500
subtract(subtrahend)
Subtract another Dinero instance.
Parameters:
subtrahend(DineroV1Instance): Amount to subtract
Returns: DineroV1Instance
const a = Dinero({ amount: 1000 });
const b = Dinero({ amount: 300 });
const diff = a.subtract(b);
console.log(diff.getAmount()); // 700
multiply(multiplier)
Multiply by a number.
Parameters:
multiplier(number): Factor to multiply by
Returns: DineroV1Instance
const price = Dinero({ amount: 1000 });
const doubled = price.multiply(2);
console.log(doubled.getAmount()); // 2000
divide(divisor)
Divide by a number.
Parameters:
divisor(number): Number to divide by
Returns: DineroV1Instance
const total = Dinero({ amount: 1000 });
const half = total.divide(2);
console.log(half.getAmount()); // 500
percentage(percent)
Calculate a percentage.
Parameters:
percent(number): Percentage value
Returns: DineroV1Instance
const price = Dinero({ amount: 10000 }); // $100
const tax = price.percentage(8); // 8%
console.log(tax.getAmount()); // 800 ($8)
allocate(ratios)
Distribute across ratios.
Parameters:
ratios(number[]): Distribution ratios
Returns: DineroV1Instance[]
const total = Dinero({ amount: 10000 });
const [first, second] = total.allocate([25, 75]);
console.log(first.getAmount()); // 2500
console.log(second.getAmount()); // 7500
Comparison
equalsTo(comparator)
Check equality.
Parameters:
comparator(DineroV1Instance): Amount to compare
Returns: boolean
const a = Dinero({ amount: 1000 });
const b = Dinero({ amount: 1000 });
console.log(a.equalsTo(b)); // true
lessThan(comparator)
Check if less than.
Parameters:
comparator(DineroV1Instance): Amount to compare
Returns: boolean
const a = Dinero({ amount: 500 });
const b = Dinero({ amount: 1000 });
console.log(a.lessThan(b)); // true
greaterThan(comparator)
Check if greater than.
Parameters:
comparator(DineroV1Instance): Amount to compare
Returns: boolean
const a = Dinero({ amount: 1000 });
const b = Dinero({ amount: 500 });
console.log(a.greaterThan(b)); // true
isZero()
Check if zero.
Returns: boolean
const zero = Dinero({ amount: 0 });
console.log(zero.isZero()); // true
isPositive()
Check if positive.
Returns: boolean
const positive = Dinero({ amount: 1000 });
console.log(positive.isPositive()); // true
isNegative()
Check if negative.
Returns: boolean
const negative = Dinero({ amount: -1000 });
console.log(negative.isNegative()); // true
hasSubUnits()
Check if has fractional parts.
Returns: boolean
const withCents = Dinero({ amount: 1050 });
const wholeDollars = Dinero({ amount: 1000 });
console.log(withCents.hasSubUnits()); // true
console.log(wholeDollars.hasSubUnits()); // false
Conversion
convert(currency, options)
Convert to another currency.
Parameters:
currency(string): Target currency codeoptions(object): Conversion options withendpointfunction
Returns: Promise<DineroV1Instance>
const usd = Dinero({ amount: 10000, currency: 'USD' });
const eur = await usd.convert('EUR', {
endpoint: async () => ({ rates: { EUR: 0.89 } })
});
Formatting
toFormat(format?)
Format as string.
Parameters:
format(string, optional): Format string
Returns: string
const price = Dinero({ amount: 1000, currency: 'USD' });
console.log(price.toFormat()); // "$10.00"
console.log(price.toFormat('$0,0.00')); // "$10.00"
toObject()
Convert to plain object.
Returns: object
const price = Dinero({ amount: 1000, currency: 'USD' });
const obj = price.toObject();
// { amount: 1000, currency: 'USD', precision: 2 }
Static Methods
normalizePrecision(dineros)
Normalize precision across instances.
Parameters:
dineros(DineroV1Instance[]): Instances to normalize
Returns: DineroV1Instance[]
const amounts = [
Dinero({ amount: 100, precision: 1 }),
Dinero({ amount: 1000, precision: 2 })
];
const normalized = Dinero.normalizePrecision(amounts);
minimum(dineros)
Find minimum amount.
Parameters:
dineros(DineroV1Instance[]): Instances to compare
Returns: DineroV1Instance
const amounts = [
Dinero({ amount: 1000 }),
Dinero({ amount: 500 }),
Dinero({ amount: 750 })
];
const min = Dinero.minimum(amounts);
console.log(min.getAmount()); // 500
maximum(dineros)
Find maximum amount.
Parameters:
dineros(DineroV1Instance[]): Instances to compare
Returns: DineroV1Instance
const amounts = [
Dinero({ amount: 1000 }),
Dinero({ amount: 500 }),
Dinero({ amount: 750 })
];
const max = Dinero.maximum(amounts);
console.log(max.getAmount()); // 1000
Global Configuration
Dinero.globalLocale
Set global locale for formatting.
Dinero.globalLocale = 'en-US';
Dinero.defaultCurrency
Set default currency.
Dinero.defaultCurrency = 'USD';
Dinero.defaultPrecision
Set default precision.
Dinero.defaultPrecision = 2;