import type { AllowedComponentProps } from 'vue';
import type { AxiosRequestConfig } from 'axios';
import type { ComponentCustomProperties } from 'vue';
import type { ComponentCustomProps } from 'vue';
import type { ComponentInternalInstance } from 'vue';
import type { ComponentOptionsBase } from 'vue';
import type { ComponentOptionsMixin } from 'vue';
import type { ComponentPublicInstance } from 'vue';
import type { DebuggerEvent } from 'vue';
import type { ExtractPropTypes } from 'vue';
import type { nextTick } from 'vue';
import type { Plugin as Plugin_2 } from 'vue';
import type { PropType } from 'vue';
import type { ShallowUnwrapRef } from 'vue';
import type { Slot } from 'vue';
import type { VNodeProps } from 'vue';
import type { WatchOptions } from 'vue';
import type { WatchStopHandle } from 'vue';

declare const _default: {
    new (...args: any[]): {
        $: ComponentInternalInstance;
        $data: {};
        $props: Partial<{
            rtspUrl: string | Promise<string> | (() => string) | (() => Promise<string>);
            videoKey: string;
            envConfig: EnvConfig;
            mode: "scaleToFill" | "aspectFit" | "aspectFill";
            duration: number;
            controls: boolean;
            autoplay: boolean;
            beforeEndThreshold: number;
            onBeforeEnd: Function;
            keep: boolean;
            videoOutputOptions: VideoOutputOptions;
        }> & Omit<Readonly<ExtractPropTypes<{
            rtspUrl: {
                type: PropType<string | Promise<string> | (() => string) | (() => Promise<string>)>;
                default: string;
            };
            videoKey: {
                type: StringConstructor;
                default(): string;
            };
            envConfig: {
                type: PropType<EnvConfig>;
                default: () => EnvConfig;
            };
            mode: {
                type: PropType<"scaleToFill" | "aspectFit" | "aspectFill">;
                default: string;
            };
            width: {
                type: NumberConstructor;
            };
            height: {
                type: NumberConstructor;
            };
            poster: {
                type: StringConstructor;
            };
            duration: {
                type: NumberConstructor;
                default: number;
            };
            resize: {
                type: PropType<{
                    width: number;
                    height: number;
                }>;
            };
            controls: {
                type: BooleanConstructor;
                default: boolean;
            };
            autoplay: {
                type: BooleanConstructor;
                default: boolean;
            };
            beforeEndThreshold: {
                type: NumberConstructor;
                default: number;
            };
            onBeforeEnd: {
                type: FunctionConstructor;
                default: () => void;
            };
            keep: {
                type: BooleanConstructor;
                default: boolean;
            };
            videoOutputOptions: {
                type: PropType<VideoOutputOptions>;
                default: () => {
                    outputOptions: string[];
                    size: string;
                };
            };
        }>> & VNodeProps & AllowedComponentProps & ComponentCustomProps, "rtspUrl" | "videoKey" | "envConfig" | "mode" | "duration" | "controls" | "autoplay" | "beforeEndThreshold" | "onBeforeEnd" | "keep" | "videoOutputOptions">;
        $attrs: {
            [x: string]: unknown;
        };
        $refs: {
            [x: string]: unknown;
        };
        $slots: Readonly<{
            [name: string]: Slot | undefined;
        }>;
        $root: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
        $parent: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
        $emit: (event: string, ...args: any[]) => void;
        $el: any;
        $options: ComponentOptionsBase<Readonly<ExtractPropTypes<{
            rtspUrl: {
                type: PropType<string | Promise<string> | (() => string) | (() => Promise<string>)>;
                default: string;
            };
            videoKey: {
                type: StringConstructor;
                default(): string;
            };
            envConfig: {
                type: PropType<EnvConfig>;
                default: () => EnvConfig;
            };
            mode: {
                type: PropType<"scaleToFill" | "aspectFit" | "aspectFill">;
                default: string;
            };
            width: {
                type: NumberConstructor;
            };
            height: {
                type: NumberConstructor;
            };
            poster: {
                type: StringConstructor;
            };
            duration: {
                type: NumberConstructor;
                default: number;
            };
            resize: {
                type: PropType<{
                    width: number;
                    height: number;
                }>;
            };
            controls: {
                type: BooleanConstructor;
                default: boolean;
            };
            autoplay: {
                type: BooleanConstructor;
                default: boolean;
            };
            beforeEndThreshold: {
                type: NumberConstructor;
                default: number;
            };
            onBeforeEnd: {
                type: FunctionConstructor;
                default: () => void;
            };
            keep: {
                type: BooleanConstructor;
                default: boolean;
            };
            videoOutputOptions: {
                type: PropType<VideoOutputOptions>;
                default: () => {
                    outputOptions: string[];
                    size: string;
                };
            };
        }>>, {
            play: () => Promise<void>;
            stop: () => Promise<void>;
            destroy: () => Promise<void>;
            setRtspUrl: ({ rtspUrl }: {
                rtspUrl: string | Promise<string> | (() => string) | (() => Promise<string>);
            }) => Promise<void>;
        }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
            rtspUrl: string | Promise<string> | (() => string) | (() => Promise<string>);
            videoKey: string;
            envConfig: EnvConfig;
            mode: "scaleToFill" | "aspectFit" | "aspectFill";
            duration: number;
            controls: boolean;
            autoplay: boolean;
            beforeEndThreshold: number;
            onBeforeEnd: Function;
            keep: boolean;
            videoOutputOptions: VideoOutputOptions;
        }, {}, string> & {
            beforeCreate?: ((() => void) | (() => void)[]) | undefined;
            created?: ((() => void) | (() => void)[]) | undefined;
            beforeMount?: ((() => void) | (() => void)[]) | undefined;
            mounted?: ((() => void) | (() => void)[]) | undefined;
            beforeUpdate?: ((() => void) | (() => void)[]) | undefined;
            updated?: ((() => void) | (() => void)[]) | undefined;
            activated?: ((() => void) | (() => void)[]) | undefined;
            deactivated?: ((() => void) | (() => void)[]) | undefined;
            beforeDestroy?: ((() => void) | (() => void)[]) | undefined;
            beforeUnmount?: ((() => void) | (() => void)[]) | undefined;
            destroyed?: ((() => void) | (() => void)[]) | undefined;
            unmounted?: ((() => void) | (() => void)[]) | undefined;
            renderTracked?: (((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[]) | undefined;
            renderTriggered?: (((e: DebuggerEvent) => void) | ((e: DebuggerEvent) => void)[]) | undefined;
            errorCaptured?: (((err: unknown, instance: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null, info: string) => boolean | void)[]) | undefined;
        };
        $forceUpdate: () => void;
        $nextTick: typeof nextTick;
        $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: WatchOptions<boolean> | undefined): WatchStopHandle;
    } & Readonly<ExtractPropTypes<{
        rtspUrl: {
            type: PropType<string | Promise<string> | (() => string) | (() => Promise<string>)>;
            default: string;
        };
        videoKey: {
            type: StringConstructor;
            default(): string;
        };
        envConfig: {
            type: PropType<EnvConfig>;
            default: () => EnvConfig;
        };
        mode: {
            type: PropType<"scaleToFill" | "aspectFit" | "aspectFill">;
            default: string;
        };
        width: {
            type: NumberConstructor;
        };
        height: {
            type: NumberConstructor;
        };
        poster: {
            type: StringConstructor;
        };
        duration: {
            type: NumberConstructor;
            default: number;
        };
        resize: {
            type: PropType<{
                width: number;
                height: number;
            }>;
        };
        controls: {
            type: BooleanConstructor;
            default: boolean;
        };
        autoplay: {
            type: BooleanConstructor;
            default: boolean;
        };
        beforeEndThreshold: {
            type: NumberConstructor;
            default: number;
        };
        onBeforeEnd: {
            type: FunctionConstructor;
            default: () => void;
        };
        keep: {
            type: BooleanConstructor;
            default: boolean;
        };
        videoOutputOptions: {
            type: PropType<VideoOutputOptions>;
            default: () => {
                outputOptions: string[];
                size: string;
            };
        };
    }>> & ShallowUnwrapRef<{
        play: () => Promise<void>;
        stop: () => Promise<void>;
        destroy: () => Promise<void>;
        setRtspUrl: ({ rtspUrl }: {
            rtspUrl: string | Promise<string> | (() => string) | (() => Promise<string>);
        }) => Promise<void>;
    }> & {} & ComponentCustomProperties & {};
    __isFragment?: undefined;
    __isTeleport?: undefined;
    __isSuspense?: undefined;
} & ComponentOptionsBase<Readonly<ExtractPropTypes<{
    rtspUrl: {
        type: PropType<string | Promise<string> | (() => string) | (() => Promise<string>)>;
        default: string;
    };
    videoKey: {
        type: StringConstructor;
        default(): string;
    };
    envConfig: {
        type: PropType<EnvConfig>;
        default: () => EnvConfig;
    };
    mode: {
        type: PropType<"scaleToFill" | "aspectFit" | "aspectFill">;
        default: string;
    };
    width: {
        type: NumberConstructor;
    };
    height: {
        type: NumberConstructor;
    };
    poster: {
        type: StringConstructor;
    };
    duration: {
        type: NumberConstructor;
        default: number;
    };
    resize: {
        type: PropType<{
            width: number;
            height: number;
        }>;
    };
    controls: {
        type: BooleanConstructor;
        default: boolean;
    };
    autoplay: {
        type: BooleanConstructor;
        default: boolean;
    };
    beforeEndThreshold: {
        type: NumberConstructor;
        default: number;
    };
    onBeforeEnd: {
        type: FunctionConstructor;
        default: () => void;
    };
    keep: {
        type: BooleanConstructor;
        default: boolean;
    };
    videoOutputOptions: {
        type: PropType<VideoOutputOptions>;
        default: () => {
            outputOptions: string[];
            size: string;
        };
    };
}>>, {
    play: () => Promise<void>;
    stop: () => Promise<void>;
    destroy: () => Promise<void>;
    setRtspUrl: ({ rtspUrl }: {
        rtspUrl: string | Promise<string> | (() => string) | (() => Promise<string>);
    }) => Promise<void>;
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
    rtspUrl: string | Promise<string> | (() => string) | (() => Promise<string>);
    videoKey: string;
    envConfig: EnvConfig;
    mode: "scaleToFill" | "aspectFit" | "aspectFill";
    duration: number;
    controls: boolean;
    autoplay: boolean;
    beforeEndThreshold: number;
    onBeforeEnd: Function;
    keep: boolean;
    videoOutputOptions: VideoOutputOptions;
}, {}, string> & VNodeProps & AllowedComponentProps & ComponentCustomProps & Plugin_2;
export default _default;

declare type EnvConfig = {
    env: 'test' | 'prod';
    apiHost: Record<string, string>;
};

declare type Options = {
    env?: 'test' | 'prod';
    apiHost?: {
        test: string;
        prod: string;
    };
};

export declare const server: {
    getH264: (data?: Record<string, any> | undefined, config?: AxiosRequestConfig<any> | undefined, envConfig?: EnvConfig) => Promise<any>;
};

export declare const setGlobalOptions: (options?: Options) => void;

declare interface VideoOutputOptions {
    outputOptions?: string[];
    size?: string;
}

export { }

declare module 'vue' {
    export interface GlobalComponents {
        CameraPlayer: typeof _default;
    }
}
