import type { IWorkflowBase } from 'n8n-workflow'; export declare namespace Risk { export type Category = 'database' | 'credentials' | 'nodes' | 'instance' | 'filesystem'; type CredLocation = { kind: 'credential'; id: string; name: string; }; export type NodeLocation = { kind: 'node'; workflowId: string; workflowName: string; nodeId: string; nodeName: string; nodeType: string; }; export type CommunityNodeDetails = { kind: 'community'; nodeType: string; packageUrl: string; }; export type CustomNodeDetails = { kind: 'custom'; nodeType: string; filePath: string; }; type SectionBase = { title: string; description: string; recommendation: string; }; export type Report = StandardReport | InstanceReport; export type StandardSection = SectionBase & { location: NodeLocation[] | CredLocation[] | CommunityNodeDetails[] | CustomNodeDetails[]; }; export type InstanceSection = SectionBase & { location?: NodeLocation[]; settings?: Record; nextVersions?: n8n.Version[]; }; export type StandardReport = { risk: Exclude; sections: StandardSection[]; }; export type InstanceReport = { risk: 'instance'; sections: InstanceSection[]; }; export type Audit = { [reportTitle: string]: Report; }; export type SyncReportFn = (workflows: IWorkflowBase[]) => StandardReport | null; export type AsyncReportFn = (workflows: IWorkflowBase[]) => Promise; export {}; } export declare namespace n8n { type Version = { name: string; nodes: Array; createdAt: string; description: string; documentationUrl: string; hasBreakingChange: boolean; hasSecurityFix: boolean; hasSecurityIssue: boolean; securityIssueFixVersion: string; }; } export interface RiskReporter { report(workflows: IWorkflowBase[]): Promise; }