import type { ConsentUiHints } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import type { User } from '@n8n/db'; import type { OAuthResourceGrant } from 'n8n-workflow'; export interface ProtectedResource { id: string; displayName?: string; uiHints?: ConsentUiHints; getResourceUrl(): string; getResourceUrls?(): string[]; getAudiences(): string[]; scopes: string[]; getGrantableScopes?(user: User): Promise; getScopeTools?(): Record | Promise>; isDefault?: boolean; getAllowedRedirectUris?(): Promise; isFirstParty?: boolean; isAvailable?(): Promise; authorize(user: User): Promise; getGrant?(): OAuthResourceGrant; } export interface ProtectedResourceResolver { readonly id: string; readonly scopes: string[]; resolveByUrl(resourceUrl: string): Promise; resolveByPath(pathname: string, search?: string): Promise; } 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; getByResourcePath(pathname: string): Promise; private logResolverFailure; getAll(): ProtectedResource[]; getDefaultResource(): ProtectedResource | undefined; getAllAudiences(): string[]; getAllScopes(): string[]; }