import { Component } from "../../hierarchy_object/Component";
import type { ComponentConstructor } from "../../hierarchy_object/ComponentConstructor";
import type { GameObject } from "../../hierarchy_object/GameObject";
import type { ReadonlyVector2 } from "../../math/ReadonlyVector2";
/**
 * controller for 2D track camera
 *
 * it requires a camera component to control
 *
 * it supports pixel perfect and smooth damping
 *
 *
 * disallow multiple component
 *
 * require components: `Camera`
 */
export declare class TrackCameraController extends Component {
    readonly disallowMultipleComponent: boolean;
    readonly requiredComponents: ComponentConstructor[];
    private _trackTarget;
    private readonly _targetOffset;
    private _cameraDistanceOffset;
    private _pixelPerfectUnit;
    private _pixelPerfect;
    private _smoothTrack;
    private _smoothLambda;
    start(): void;
    private readonly _tempVector;
    update(): void;
    /**
     * set the target to track
     * @param target
     */
    setTrackTarget(target: GameObject): void;
    /**
     * target position offset (default: (0, 0))
     */
    get targetOffset(): ReadonlyVector2;
    /**
     * target position offset (default: (0, 0))
     */
    set targetOffset(value: ReadonlyVector2);
    /**
     * z distance from camera to target (default: 20)
     */
    get cameraDistanceOffset(): number;
    /**
     * z distance from camera to target (default: 20)
     */
    set cameraDistanceOffset(value: number);
    /**
     * pixel perfect unit (default: 1)
     */
    get pixelPerfectUnit(): number;
    /**
     * pixel perfect unit (default: 1)
     */
    set pixelPerfectUnit(value: number);
    /**
     * use pixel perfect (default: false)
     */
    get pixelPerfect(): boolean;
    /**
     * use pixel perfect (default: false)
     */
    set pixelPerfect(value: boolean);
    /**
     * use smooth damp to track (default: false)
     */
    get smoothTrack(): boolean;
    /**
     * use smooth damp to track (default: false)
     */
    set smoothTrack(value: boolean);
    /**
     * smooth damp lambda (default: 6)
     *
     * higher value make camera movement more faster
     */
    get smoothLambda(): number;
    /**
     * smooth damp lambda (default: 6)
     *
     * higher value make camera movement more faster
     */
    set smoothLambda(value: number);
}
