import { WebglCreator } from "./index";
export type WebglPlugin<S> = {
    type: string;
    name: string;
    render: (time: number) => void;
    remove: () => void;
} & S;
export type WebglPluginCreator<S> = (meta: WebglCreator) => WebglPlugin<S>;
export type DefinedWebglPlugin<P, S> = (props: P) => WebglPluginCreator<S>;
export type PluginOptions<P, S> = {
    setup(props: P, meta: WebglCreator): S;
    render?(time: number): void;
    destroyed?(): void;
} & ThisType<S>;
export default function definePlugin<P, S extends Object>(name: string, plugin: PluginOptions<P, S>): DefinedWebglPlugin<P, S>;
