import type { AiPreferenceCountDto, AiPreferenceDto, AiPreferenceListDto, AiPreferenceRequestDto, AiPreferenceSource, AiPreferencesAppliedPayload } from '@n8n/api-types'; import type { AiPreference, Project, User } from '@n8n/db'; import { AiPreferenceRepository, ProjectRelationRepository, ProjectRepository, UserRepository } from '@n8n/db'; export type AiPreferenceProjectRef = { id: string; name: string; type?: Project['type']; }; export type AiPreferenceItem = { id: string; scope: 'instance' | 'user' | 'project'; project?: string; text: string; }; export type AppliedPreference = { id: string; content: string; }; export type ApplicableAiPreferences = { instance: AppliedPreference[]; user: AppliedPreference[]; projects: Array; }; export declare class AiPreferenceService { private readonly aiPreferenceRepository; private readonly projectRepository; private readonly projectRelationRepository; private readonly userRepository; constructor(aiPreferenceRepository: AiPreferenceRepository, projectRepository: ProjectRepository, projectRelationRepository: ProjectRelationRepository, userRepository: UserRepository); getApplicable(userId: string, projects: AiPreferenceProjectRef[]): Promise; getApplicableForProject(user: User, projectId: string): Promise; getApplicableAcrossProjects(user: User): Promise; list(user: User, page: { skip: number; take: number; }): Promise; count(user: User): Promise; create(user: User, request: AiPreferenceRequestDto, source: AiPreferenceSource): Promise; update(user: User, id: string, request: AiPreferenceRequestDto): Promise; delete(user: User, id: string): Promise; private projectAccess; private visibleTo; private requireVisible; private canSee; private canWrite; private assertCanWrite; private isMove; private resolveTarget; private assertNoProject; private assertNoUser; private assertScopeHasRoom; private scopesFor; private toDto; } export declare function groupAiPreferences(rows: AiPreference[], projects: AiPreferenceProjectRef[]): ApplicableAiPreferences; export declare function renderAiPreferences(preferences: ApplicableAiPreferences): string; export declare function flattenAiPreferences(preferences: ApplicableAiPreferences): AiPreferenceItem[]; export type AppliedPreferencesInjection = { injectedThisTurn: true; } | { injectedThisTurn: false; carriedFromRunId?: string; }; export declare function buildAppliedPreferencesPayload({ preferences, renderedLength, ...injection }: { preferences: ApplicableAiPreferences; renderedLength: number; } & AppliedPreferencesInjection): AiPreferencesAppliedPayload; export declare function renderAiPreferencesBlock(preferences: ApplicableAiPreferences): string | undefined;