/**
 * @packageDocumentation
 * @module Functionals
 */
import { BaseValueInFrame, BaseValueRelative, TYPE } from "./math-types";
import { PCalculus } from "./pfunction";
import { IndefiniteIntegral, IPCompileResult, IPFunction, IPFunctionCalculus, Value, Variable } from "./base";
import { Units } from "./unit-defs";
import { Unit, Divide, Multiply } from "./units";
import { StyleContext } from "./latex";
/**
 * Scalar constants
 */
export declare class ScalarConstant<C extends Unit = Unit> extends PCalculus<number, C, Divide<C, Units.time>, Multiply<C, Units.time>> implements Value<number, C> {
    readonly value: number;
    constructor(value: number, unit: C);
    protected compileFn(): IPCompileResult<number>;
    toTex(varName?: Variable, ctx?: StyleContext): string;
    toTexWithUnits(varName?: Variable, ctx?: StyleContext): string;
    differentiate(): ScalarConstant<Divide<C, Units.time>> & IPFunctionCalculus<number, Divide<C, Units.time>, 1, Multiply<C, Units.time>, C>;
    integrate(): IndefiniteIntegral<number, Multiply<C, Units.time>, C>;
    get returnType(): TYPE.SCALAR;
    equiv<T>(f: T): null | this | T;
}
/**
 * Get an IConstant from a value or a function at T=0;
 * @param v A value, a PFunction, or a Value.
 * @param unit a Unit describing the type of constant.
 */
export declare function constant<T extends BaseValueRelative, U extends Unit>(v: T | IPFunction<T, U> | Value<T, U>, unit: U): Value<T, U>;
export declare function constant<T extends BaseValueInFrame, U extends Unit>(v: T | IPFunction<T, U> | Value<T, U>, unit: U): Value<T, U>;
//# sourceMappingURL=scalar.d.ts.map