import { MiddlewareHandler } from 'hono';

type Methods = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
type Auth = {
    isAuthenticated: (request: Request) => Promise<boolean>;
};
type AuthRule = string | {
    path: string;
    methods?: [Methods, ...Methods[]];
};
interface AuthorizerConfig {
    auth: Auth;
    errorMessage?: string;
    rules?: AuthRule[];
}
declare function authorizer({ auth, errorMessage, rules, }: AuthorizerConfig): MiddlewareHandler;

export { type AuthRule, type AuthorizerConfig, authorizer };
