import { TAVObject } from '../types/tav-object';
import { tav } from '../tav';
/**
 * A light weight container for audiovisual media.
 * @hideconstructor
 * @category Assets
 */
export declare class Asset extends TAVObject {
    /**
     * Returns the type of this asset
     */
    readonly type: string;
    protected _nativeObject: tav.Asset | undefined;
    private _path;
    /**
     * Constructors are used by parsers, don't use it in your code.
     */
    constructor(id?: string, path?: string);
    /**
     * Build the native asset based on the path.
     * @returns The native asset object
     */
    build(): Promise<tav.Asset> | undefined;
    /**
     * Release the native asset.
     */
    release(): void;
    /**
     * Call native methods to create the native asset object.
     */
    protected createAsset(): Promise<tav.Asset> | undefined;
    /**
     * Update the native asset object based on the properties of this asset.
     * @param asset The native asset object
     */
    protected updateAsset(asset: tav.Asset): void;
    /**
     * Get or set the path of this asset.
     * Setting the path will invalidate the native asset.
     * You
     */
    get path(): string;
    set path(path: string);
    /**
     * Get the native asset object
     */
    get nativeAsset(): tav.Asset;
    /**
     * Returns true if this asset has audio output.
     */
    get hasAudio(): boolean;
    /**
     * Returns true if this asset has video output.
     */
    get hasVideo(): boolean;
    /**
     * Returns the duration of this asset.
     */
    get duration(): number;
    /**
     * Returns the width of this asset.
     */
    get width(): number;
    /**
     * Returns the height of this asset.
     */
    get height(): number;
}
