import { DatabaseConfig } from '@n8n/config'; import { DataSource, Repository } from '@n8n/typeorm'; import { SharedWorkflowRepository } from './shared-workflow.repository'; import type { User } from '../entities'; import { WorkflowDependency } from '../entities'; export interface NodeUsageScope { projectRoles: string[]; workflowRoles: string[]; projectId?: string; } export declare class WorkflowDependencies { readonly workflowId: string; readonly workflowVersionId: number | undefined; readonly publishedVersionId: string | null; readonly dependencies: WorkflowDependency[]; constructor(workflowId: string, workflowVersionId: number | undefined, publishedVersionId?: string | null); add(dependency: { dependencyType: string; dependencyKey: string | null; dependencyInfo: Record | null; }): void; } export declare class WorkflowDependencyRepository extends Repository { private readonly databaseConfig; private readonly sharedWorkflowRepository; constructor(dataSource: DataSource, databaseConfig: DatabaseConfig, sharedWorkflowRepository: SharedWorkflowRepository); countNodeTypeUsage(user: User, scope: NodeUsageScope, limit: number): Promise<{ workflowsInScope: number; nodeTypes: Array<{ nodeType: string; workflowCount: number; }>; truncated: boolean; }>; countWorkflowsInScope(user: User, scope: NodeUsageScope): Promise; findWorkflowsUsingNodeType(user: User, scope: NodeUsageScope, nodeType: string, limit: number): Promise>; private buildScopedDependencyQuery; updateDependenciesForWorkflow(workflowId: string, dependencies: WorkflowDependencies): Promise; private executeUpdate; removeDependenciesForWorkflow(workflowId: string): Promise; private acquireLockAndCheckForExistingData; private getTableName; }