declare const ISSUE_CONTEXT: {
    readonly safety: "https://safety.ratelworks.org/ontology/v1/";
    readonly cc: "https://construction.ratelworks.org/ontology/v1/";
    readonly prov: "http://www.w3.org/ns/prov#";
    readonly xsd: "http://www.w3.org/2001/XMLSchema#";
    readonly rdfs: "http://www.w3.org/2000/01/rdf-schema#";
};
export type SafetyIssueSeverity = "low" | "medium" | "high" | "critical";
export type SafetyIssueStatus = "open" | "in_progress" | "resolved" | "verified";
export interface RecommendedMeasure {
    iri: string;
    label: string;
    description?: string;
    ericLevel?: number;
    ericLevelLabel?: string;
    chain: Array<Record<string, unknown>>;
    inference: Record<string, unknown>;
    alternatives?: Array<{
        iri: string;
        label: string;
        ericLevel?: number;
        ericLevelLabel?: string;
    }>;
}
export interface CorrectiveActionRecord {
    actionId: string;
    iri: string;
    label: string;
    status: SafetyIssueStatus;
    createdAt: string;
    updatedAt: string;
    resolves: string;
}
export interface SafetyIssueStatusEvent {
    at: string;
    status: SafetyIssueStatus;
    note: string;
}
export interface SafetyIssueRecord {
    "@context": typeof ISSUE_CONTEXT;
    "@id": string;
    "@type": ["safety:SafetyIssue", "prov:Entity"];
    issueId: string;
    label: string;
    description: string;
    relatedTask: string;
    relatedRisk: string;
    relatedSite?: string;
    severity: SafetyIssueSeverity;
    status: SafetyIssueStatus;
    photoEvidence: string[];
    recommendedMeasure?: RecommendedMeasure;
    correctiveAction: CorrectiveActionRecord;
    statusHistory: SafetyIssueStatusEvent[];
    createdAt: string;
    updatedAt: string;
}
export interface RegisterSafetyIssueInput {
    relatedTask: string;
    relatedRisk: string;
    relatedSite?: string;
    severity: SafetyIssueSeverity;
    description: string;
    photoEvidence?: string[];
    recommendedMeasure?: RecommendedMeasure;
}
export interface ListSafetyIssueFilter {
    siteId?: string;
    severity?: SafetyIssueSeverity;
    openOnly?: boolean;
    photoEvidence?: string;
}
export declare function getSafetyIssueStorageRoot(): string;
export declare function getSafetyIssueStorageDir(): string;
export declare function toSafetyIssueIri(issueId: string): string;
export declare function toCorrectiveActionIri(actionId: string): string;
export declare function normalizeIssueId(issueIdOrIri: string): string;
export declare function normalizeActionId(actionIdOrIri: string): string;
export declare function saveSafetyIssue(input: RegisterSafetyIssueInput): Promise<SafetyIssueRecord>;
export declare function loadSafetyIssue(issueIdOrIri: string): Promise<SafetyIssueRecord | null>;
export declare function listSafetyIssues(filter?: ListSafetyIssueFilter): Promise<SafetyIssueRecord[]>;
export declare function listSafetyIssuesByPhotoEvidence(photoId: string): Promise<SafetyIssueRecord[]>;
export declare function updateSafetyIssueStatus(issueIdOrIri: string, status: SafetyIssueStatus, note: string): Promise<SafetyIssueRecord | null>;
export {};
//# sourceMappingURL=safety-issue-storage.d.ts.map