import type { ZodClass } from '@n8n/api-types';
import type { ApiKeyScopeRequirement, Arg, Controller, DeprecationInfo, HandlerName, Method, ResponseDtoClass, SuccessStatus } from '@n8n/decorators';
import type { ApiKeyScope } from '@n8n/permissions';
export declare const HTTP_METHODS: readonly ['get', 'post', 'put', 'patch', 'delete', 'options', 'head', 'trace'];
export type HttpMethod = (typeof HTTP_METHODS)[number];
export type ResolvedRouteArg = {
    type: 'param';
    key: string;
} | {
    type: 'body' | 'query';
    dto: ZodClass;
};
export interface ResolvedPublicApiRoute {
    controllerClass: Controller;
    controllerName: string;
    handlerName: HandlerName;
    method: Method;
    path: string;
    args: ResolvedRouteArg[];
    requestBodyDto?: ZodClass;
    requestQueryDto?: ZodClass;
    responseDto?: ResponseDtoClass;
    successStatus: SuccessStatus;
    apiKeyScope?: ApiKeyScopeRequirement;
    summary?: string;
    description?: string;
    tags?: string[];
    errorResponses?: number[];
    deprecated?: DeprecationInfo;
}
export declare function resolveRouteArgs(controllerClass: Controller, handlerName: HandlerName, args: Arg[]): ResolvedRouteArg[];
export declare function resolveSuccessStatus(controllerName: string, handlerName: HandlerName, successStatus: SuccessStatus | undefined): SuccessStatus;
export declare function apiKeyScopesSatisfy(granted: readonly string[] | undefined, requirement: ApiKeyScopeRequirement): boolean;
export declare function scopesInRequirement(requirement: ApiKeyScopeRequirement): readonly ApiKeyScope[];
export declare function scopeRequirementFromString(serialized: string): ApiKeyScopeRequirement;
export declare function scopeRequirementToString(requirement: ApiKeyScopeRequirement): string;
export declare function toOpenApiPathTemplate(path: string): string;
export declare function resolvePublicApiRoutes(): ResolvedPublicApiRoute[];
