import { EventEmitter } from "events";
import { OneBot } from "./onebot";
import { Dict } from "@zhinjs/shared";
import { Adapter } from "./adapter";
export interface Service<V extends OneBot.Version> {
    filterFn(event: Dict): boolean;
}
export declare class Service<V extends OneBot.Version> extends EventEmitter {
    adapter: Adapter;
    config: OneBot.Config;
    oneBot: OneBot;
    version: OneBot.Version;
    protected get path(): string;
    constructor(adapter: Adapter, config: OneBot.Config);
}
export declare namespace Service {
    type MaybeArray<T = any> = T | T[];
    type AttrFilter = {
        [P in keyof Dict]?: MaybeArray | boolean;
    };
    export type Filters = AttrFilter | WithFilter | UnionFilter | ExcludeFilter;
    export type WithFilter = {
        $and: Filters;
    };
    export type UnionFilter = {
        $or: Filters;
    };
    export type ExcludeFilter = {
        $not: Filters;
    };
    export function createFilterFunction(filters: Filters): (event: Dict) => any;
    export {};
}
