import type { CallbackData, FilterClause, Schema } from "./deps/deno.land/x/callback_data@v1.0.2/types.js";
import { createCallbackData } from "callback-data";
import { CallbackQueryContext, Context } from "./deps.js";
type Identifier = Parameters<typeof createCallbackData>[0];
type Registry = Map<Identifier, ReturnType<typeof createCallbackData>>;
declare class CallbackDataRegistry<T> {
    protected registry: Registry;
    constructor();
    add<I extends Identifier, S extends Schema>(id: I, schema: S): CallbackDataRegistry<T & Record<I, S>>;
    create<I extends keyof T>(id: I, data: CallbackData<T[I]>): string;
    parse<I extends keyof T>(id: I, packedData: string): CallbackData<T[I]>;
    regex<I extends keyof T>(id: I, clause?: FilterClause<T[I]>): RegExp;
    filter<I extends keyof T>(id: I, clause?: FilterClause<T[I]>): <C extends Context>(ctx: C) => ctx is CallbackQueryContext<C & {
        callbackData: CallbackData<T[I]>;
    }>;
}
export declare function createCallbackDataRegistry(): CallbackDataRegistry<unknown>;
export {};
