import { Awaitable, Context, Logger, Schema } from 'koishi';
import { PicMiddlewareConfig } from './config';
import { LifecycleEvents, PartialDeep } from 'koishi-thirdeye';
import PicsContainer, { PicMiddlewareInfo } from './index';
import { PicMiddleware, PicNext } from './def';
declare const BasePicMiddlewarePlugin_base: new (ctx: Context, config: {
    name?: string;
    prepend?: boolean;
    applyTo?: (target: PicMiddleware) => void;
}) => {
    ctx: Context;
    config: PicMiddlewareConfig;
};
export declare class BasePicMiddlewarePlugin extends BasePicMiddlewarePlugin_base implements PicMiddleware, LifecycleEvents {
    protected pics: PicsContainer;
    protected logger: Logger;
    onApply(): void;
    use(url: string, next: PicNext): Awaitable<string>;
}
export declare const PicMiddlewarePlugin: <S>(specificConfig?: import("koishi-thirdeye").ClassType<S>) => new (ctx: import("cordis").Context<any>, config: PartialDeep<S> & {
    name?: string;
    prepend?: boolean;
    applyTo?: (target: PicMiddleware) => void;
}) => BasePicMiddlewarePlugin & {
    config: PicMiddlewareConfig & S;
};
export declare function PlainPicMiddlewarePlugin<C>(dict: {
    [K in keyof C]: Schema<C[K]>;
}): {
    new (ctx: Context, config: PartialDeep<C & PicMiddlewareInfo>): {
        name?: string;
        prepend?: boolean;
        config: PicMiddlewareInfo & C;
        ctx: Context;
        use(url: string, next: PicNext): Awaitable<string>;
    };
    Config: Schema<PartialDeep<PicMiddlewareConfig & C>, PicMiddlewareConfig & C>;
    using: readonly ["pics"];
    reusable: boolean;
};
export {};
