import { Logger } from '@n8n/backend-common';
import type { User } from '@n8n/db';
export interface ProtectedResource {
    id: string;
    displayName?: string;
    getResourceUrl(): string;
    getResourceUrls?(): string[];
    getAudiences(): string[];
    scopes: string[];
    getScopeTools?(): Record<string, string[]>;
    isDefault?: boolean;
    getAllowedRedirectUris?(): Promise<string[]>;
    authorize(user: User): Promise<boolean>;
}
export interface ProtectedResourceResolver {
    readonly id: string;
    readonly scopes: string[];
    resolveByUrl(resourceUrl: string): Promise<ProtectedResource | undefined>;
    resolveByPath(pathname: string): Promise<ProtectedResource | undefined>;
}
export declare class ProtectedResourceRegistry {
    private readonly logger;
    private readonly resources;
    private readonly resolvers;
    constructor(logger: Logger);
    register(resource: ProtectedResource): void;
    registerResolver(resolver: ProtectedResourceResolver): void;
    getById(id: string): ProtectedResource | undefined;
    getByResourceUrl(resourceUrl: string): Promise<ProtectedResource | undefined>;
    getByResourcePath(pathname: string): Promise<ProtectedResource | undefined>;
    private logResolverFailure;
    getAll(): ProtectedResource[];
    getDefaultResource(): ProtectedResource | undefined;
    getAllAudiences(): string[];
    getAllScopes(): string[];
}
