import type { Device } from '@luma.gl/core';
import type { Buffer } from '@luma.gl/core';
import { NumericArray } from '../../types/types';
import Attribute from './attribute';
import type { BufferAccessor } from './data-column';
import { VertexFormat as LumaVertexFormat } from '@luma.gl/core';
export interface TransitionSettings {
    type: string;
    /** Callback to get the value that the entering vertices are transitioning from. */
    enter?: (toValue: NumericArray, chunk?: NumericArray) => NumericArray;
    /** Callback when the transition is started */
    onStart?: () => void;
    /** Callback when the transition is done */
    onEnd?: () => void;
    /** Callback when the transition is interrupted */
    onInterrupt?: () => void;
}
export type InterpolationTransitionSettings = TransitionSettings & {
    type?: 'interpolation';
    /** Duration of the transition animation, in milliseconds */
    duration: number;
    /** Easing function that maps a value from [0, 1] to [0, 1], see [http://easings.net/](http://easings.net/) */
    easing?: (t: number) => number;
};
export type SpringTransitionSettings = TransitionSettings & {
    type: 'spring';
    /** "Tension" factor for the spring */
    stiffness: number;
    /** "Friction" factor that counteracts the spring's acceleration */
    damping: number;
};
export declare function normalizeTransitionSettings(userSettings: number | InterpolationTransitionSettings | SpringTransitionSettings, layerSettings?: boolean | Partial<TransitionSettings>): TransitionSettings | null;
export declare function getSourceBufferAttribute(device: Device, attribute: Attribute): [Buffer, BufferAccessor] | NumericArray;
/** Returns the GLSL attribute type for the given number of float32 components. */
export declare function getAttributeTypeFromSize(size: number): string;
/** Returns the {@link VertexFormat} for the given number of float32 components. */
export declare function getFloat32VertexFormat(size: 1 | 2 | 3 | 4): LumaVertexFormat;
export declare function cycleBuffers(buffers: Buffer[]): void;
export declare function getAttributeBufferLength(attribute: Attribute, numInstances: number): number;
export declare function padBuffer({ buffer, numInstances, attribute, fromLength, fromStartIndices, getData }: {
    buffer: Buffer;
    numInstances: number;
    attribute: Attribute;
    fromLength: number;
    fromStartIndices?: NumericArray | null;
    getData?: (toValue: NumericArray, chunk?: NumericArray) => NumericArray;
}): Buffer;
//# sourceMappingURL=attribute-transition-utils.d.ts.map