import { TAVObject } from '../types/tav-object';
import { tav } from '../tav';
import { Composition } from './tav-composition';
/**
 * A timed audiovisual resource which provides audio or video outputs.
 * @hideconstructor
 * @category Clips
 */
export declare class Clip extends TAVObject {
    /**
     * Returns the type of this output.
     */
    readonly type: string;
    /**
     * @ignore
     */
    parent?: Clip;
    protected _nativeObject?: tav.Clip;
    protected _contentStartTime?: number;
    protected _contentTimeInvalid: boolean;
    protected _contentDuration?: number;
    private _startTime;
    private _duration;
    /**
     * Build the native clip object from assets and other properties set on the clip.
     * This method is web only.
     * @returns The native clip object.
     */
    build(): Promise<tav.Clip> | undefined;
    /**
     * @ignore
     */
    hasFakeClipNativeInvalidated(): boolean;
    /**
     * Release the native clip object.
     * This method is web only.
     */
    release(): void;
    /**
     * @ignore
     */
    clone(): Clip;
    protected attachToParent(parent?: Composition): void;
    protected detachFromParent(): void;
    protected removeFromParent(): void;
    protected createClip(): Promise<tav.Clip> | undefined;
    protected updateClip(clip: tav.Clip): Promise<void>;
    protected invalidated(): void;
    /**
     * Get the native clip object.
     */
    get nativeClip(): tav.Clip | null;
    set nativeClip(clip: tav.Clip | null);
    /**
     * Get or set the duration of this clip in the composition's timeline.
     */
    get duration(): number;
    set duration(time: number);
    /**
     * Get or set the start time of this clip in the composition's timeline
     */
    get startTime(): number;
    set startTime(time: number);
}
