export type ExtrapolateType = 'extend' | 'identity' | 'clamp' | 'wrap';
/**
 * @description This function allows you to map a range of values to another with a concise syntax
 * @see [Documentation](https://www.remotion.dev/docs/interpolate)
 */
export type EasingFunction = ((input: number) => number) & {
    readonly remotionShouldExtendRight?: boolean;
};
export type InterpolateOptions = Partial<{
    easing: EasingFunction | readonly EasingFunction[];
    extrapolateLeft: ExtrapolateType;
    extrapolateRight: ExtrapolateType;
    posterize: number;
}>;
type NumericTuple = readonly [number, ...number[]];
type WidenNumericTuple<T extends readonly number[]> = {
    readonly [Key in keyof T]: number;
};
export declare function assertValidInterpolateEasingOption(easing: EasingFunction | readonly EasingFunction[] | undefined, inputRangeLength: number): void;
export declare function assertValidInterpolatePosterizeOption(posterize: number | undefined): void;
export declare function interpolate(input: number, inputRange: readonly number[], outputRange: readonly number[], options?: InterpolateOptions): number;
export declare function interpolate(input: number, inputRange: readonly number[], outputRange: readonly string[], options?: InterpolateOptions): string;
export declare function interpolate<const Tuple extends NumericTuple>(input: number, inputRange: readonly number[], outputRange: readonly Tuple[], options?: InterpolateOptions): WidenNumericTuple<Tuple>;
export declare function interpolate(input: number, inputRange: readonly number[], outputRange: readonly (readonly number[])[], options?: InterpolateOptions): number[];
export declare function interpolate(input: number, inputRange: readonly number[], outputRange: readonly (number | string | readonly number[])[], options?: InterpolateOptions): number | string | readonly number[];
export {};
