import { BaseUnit, ToStringOptions } from "../base-unit";
/** API DTO represents a LuminousFlux */
export interface LuminousFluxDto {
    /** The value of the LuminousFlux */
    value: number;
    /**  The specific unit that the LuminousFlux value is representing */
    unit: LuminousFluxUnits;
}
/** LuminousFluxUnits enumeration */
export declare enum LuminousFluxUnits {
    /** */
    Lumens = "Lumen"
}
/** In photometry, luminous flux or luminous power is the measure of the perceived power of light. */
export declare class LuminousFlux extends BaseUnit {
    protected value: number;
    private lumensLazy;
    /**
     * Create a new LuminousFlux.
     * @param value The value.
     * @param fromUnit The ‘LuminousFlux’ unit to create from.
     * The default unit is Lumens
     */
    constructor(value: number, fromUnit?: LuminousFluxUnits);
    /**
     * The base value of LuminousFlux is Lumens.
     * This accessor used when needs a value for calculations and it's better to use directly the base value
     */
    get BaseValue(): number;
    /** Gets the default unit used when creating instances of the unit or its DTO */
    protected get baseUnit(): LuminousFluxUnits.Lumens;
    /** */
    get Lumens(): number;
    /**
     * Create a new LuminousFlux instance from a Lumens
     *
     * @param value The unit as Lumens to create a new LuminousFlux from.
     * @returns The new LuminousFlux instance.
     */
    static FromLumens(value: number): LuminousFlux;
    /**
     * Gets the base unit enumeration associated with LuminousFlux
     * @returns The unit enumeration that can be used to interact with this type
     */
    protected static getUnitEnum(): typeof LuminousFluxUnits;
    /**
     * Gets the default unit used when creating instances of the unit or its DTO
     * @returns The unit enumeration value used as a default parameter in constructor and DTO methods
     */
    protected static getBaseUnit(): LuminousFluxUnits.Lumens;
    /**
     * Create API DTO represent a LuminousFlux unit.
     * @param holdInUnit The specific LuminousFlux unit to be used in the unit representation at the DTO
     */
    toDto(holdInUnit?: LuminousFluxUnits): LuminousFluxDto;
    /**
     * Create a LuminousFlux unit from an API DTO representation.
     * @param dtoLuminousFlux The LuminousFlux API DTO representation
     */
    static FromDto(dtoLuminousFlux: LuminousFluxDto): LuminousFlux;
    /**
     * Convert LuminousFlux to a specific unit value.
     * @param toUnit The specific unit to convert to
     * @returns The value of the specific unit provided.
     */
    convert(toUnit: LuminousFluxUnits): number;
    private convertFromBase;
    private convertToBase;
    /**
     * Format the LuminousFlux to string.
     * Note! the default format for LuminousFlux is Lumens.
     * To specify the unit format set the 'unit' parameter.
     * @param unit The unit to format the LuminousFlux.
     * @param options The ToString options, it also can be the number of fractional digits to keep that deprecated and moved to the options object. support in number will be dropped in the upcoming versions.
     * @returns The string format of the LuminousFlux.
     */
    toString(unit?: LuminousFluxUnits, options?: number | ToStringOptions): string;
    /**
     * Get LuminousFlux unit abbreviation.
     * Note! the default abbreviation for LuminousFlux is Lumens.
     * To specify the unit abbreviation set the 'unitAbbreviation' parameter.
     * @param unitAbbreviation The unit abbreviation of the LuminousFlux.
     * @returns The abbreviation string of LuminousFlux.
     */
    getUnitAbbreviation(unitAbbreviation?: LuminousFluxUnits): string;
    /**
     * Check if the given LuminousFlux are equals to the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns True if the given LuminousFlux are equal to the current LuminousFlux.
     */
    equals(luminousFlux: LuminousFlux): boolean;
    /**
     * Compare the given LuminousFlux against the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns 0 if they are equal, -1 if the current LuminousFlux is less then other, 1 if the current LuminousFlux is greater then other.
     */
    compareTo(luminousFlux: LuminousFlux): number;
    /**
     * Add the given LuminousFlux with the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns A new LuminousFlux instance with the results.
     */
    add(luminousFlux: LuminousFlux): LuminousFlux;
    /**
     * Subtract the given LuminousFlux with the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns A new LuminousFlux instance with the results.
     */
    subtract(luminousFlux: LuminousFlux): LuminousFlux;
    /**
     * Multiply the given LuminousFlux with the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns A new LuminousFlux instance with the results.
     */
    multiply(luminousFlux: LuminousFlux): LuminousFlux;
    /**
     * Divide the given LuminousFlux with the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns A new LuminousFlux instance with the results.
     */
    divide(luminousFlux: LuminousFlux): LuminousFlux;
    /**
     * Modulo the given LuminousFlux with the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns A new LuminousFlux instance with the results.
     */
    modulo(luminousFlux: LuminousFlux): LuminousFlux;
    /**
     * Pow the given LuminousFlux with the current LuminousFlux.
     * @param luminousFlux The other LuminousFlux.
     * @returns A new LuminousFlux instance with the results.
     */
    pow(luminousFlux: LuminousFlux): LuminousFlux;
}
