import * as React from "react";
import * as THREE from "three";
import { Five, FiveInitArgs, FiveLoadOptions, Work, Works, State } from "@realsee/five";
type FiveProviderPropTypes = {
    work?: Work | Work[];
    initialWork?: Work | Work[];
    initialState?: "inherit" | "initial" | Partial<Omit<State, "offset">>;
    initialOptions?: number | FiveLoadOptions;
    initialUserAction?: boolean;
    onWorksChange?: (works: Works) => void;
    onStateChange?: (state: State, userAction: boolean) => void;
    onCurrentStateChange?: (state: State, userAction: boolean) => void;
    onError?: (error: Error) => void;
    children: React.ReactNode;
};
declare function createFiveProvider(fiveInitArgs?: Omit<FiveInitArgs, "renderer" | "scissor">): {
    new (props: FiveProviderPropTypes): {
        /**
         * five 实例，可以通过 FiveProvider 的 ref.five 获取得到
         * 在一些外部调用方面可以尝试使用
         */
        five: Five;
        __fiveEventDisposers: (() => void)[];
        __fiveDisposeTimer: any;
        loadWork(works: Work | Work[], state?: "inherit" | "initial" | Partial<Omit<State, "offset">>, options?: number | FiveLoadOptions, userAction?: boolean): Promise<void>;
        shouldComponentUpdate(nextProps: FiveProviderPropTypes): boolean;
        componentDidMount(): void;
        componentWillUnmount(): void;
        render(): React.FunctionComponentElement<React.ProviderProps<{
            renderer?: THREE.WebGLRenderer;
            five: Five;
            loadWork: (works: Work | Work[], state?: "inherit" | "initial" | Partial<Omit<State, "offset">>, options?: number | FiveLoadOptions, userAction?: boolean) => Promise<void>;
        } | null>>;
        context: any;
        setState<K extends "renderer">(state: {
            renderer?: THREE.WebGLRenderer;
        } | ((prevState: Readonly<{
            renderer?: THREE.WebGLRenderer;
        }>, props: Readonly<FiveProviderPropTypes>) => {
            renderer?: THREE.WebGLRenderer;
        } | Pick<{
            renderer?: THREE.WebGLRenderer;
        }, K> | null) | Pick<{
            renderer?: THREE.WebGLRenderer;
        }, K> | null, callback?: (() => void) | undefined): void;
        forceUpdate(callback?: (() => void) | undefined): void;
        readonly props: Readonly<FiveProviderPropTypes> & Readonly<{
            children?: React.ReactNode | undefined;
        }>;
        state: Readonly<{
            renderer?: THREE.WebGLRenderer;
        }>;
        refs: {
            [key: string]: React.ReactInstance;
        };
        componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
        getSnapshotBeforeUpdate?(prevProps: Readonly<FiveProviderPropTypes>, prevState: Readonly<{
            renderer?: THREE.WebGLRenderer;
        }>): any;
        componentDidUpdate?(prevProps: Readonly<FiveProviderPropTypes>, prevState: Readonly<{
            renderer?: THREE.WebGLRenderer;
        }>, snapshot?: any): void;
        componentWillMount?(): void;
        UNSAFE_componentWillMount?(): void;
        componentWillReceiveProps?(nextProps: Readonly<FiveProviderPropTypes>, nextContext: any): void;
        UNSAFE_componentWillReceiveProps?(nextProps: Readonly<FiveProviderPropTypes>, nextContext: any): void;
        componentWillUpdate?(nextProps: Readonly<FiveProviderPropTypes>, nextState: Readonly<{
            renderer?: THREE.WebGLRenderer;
        }>, nextContext: any): void;
        UNSAFE_componentWillUpdate?(nextProps: Readonly<FiveProviderPropTypes>, nextState: Readonly<{
            renderer?: THREE.WebGLRenderer;
        }>, nextContext: any): void;
    };
    contextType?: React.Context<any> | undefined;
};
type FiveProviderType = ReturnType<typeof createFiveProvider>;
export { createFiveProvider, FiveProviderType, FiveProviderPropTypes };
