import type { IJsonDocumentRepository } from "../../../domain/repositories/IJsonDocumentRepository.js";
import type { IIndexService } from "../../../infrastructure/index/index.js";
import type { IUseCase } from "../../interfaces/IUseCase.js";
/**
 * Input data for delete JSON document use case
 */
export interface DeleteJsonDocumentInput {
    /**
     * Branch name (required for branch documents, omit for global)
     */
    branchName?: string;
    /**
     * Document path (either path or id must be provided)
     */
    path?: string;
    /**
     * Document ID (either path or id must be provided)
     */
    id?: string;
}
/**
 * Output data for delete JSON document use case
 */
export interface DeleteJsonDocumentOutput {
    /**
     * Indicates if document was successfully deleted
     */
    success: boolean;
    /**
     * Location where document was deleted from (branch name or "global")
     */
    location: string;
    /**
     * Additional delete operation details
     */
    details: {
        /**
         * Document path or ID that was deleted
         */
        identifier: string;
        /**
         * Deletion timestamp
         */
        timestamp: string;
    };
}
/**
 * Use case for deleting a JSON document
 */
export declare class DeleteJsonDocumentUseCase implements IUseCase<DeleteJsonDocumentInput, DeleteJsonDocumentOutput> {
    private readonly jsonRepository;
    private readonly indexService;
    private readonly globalRepository?;
    /**
     * Constructor
     * @param jsonRepository JSON document repository
     * @param indexService Index service for updating indexes after delete
     * @param globalRepository Global JSON document repository (optional)
     */
    constructor(jsonRepository: IJsonDocumentRepository, indexService: IIndexService, globalRepository?: IJsonDocumentRepository | undefined);
    /**
     * Execute the use case
     * @param input Input data
     * @returns Promise resolving to output data
     */
    execute(input: DeleteJsonDocumentInput): Promise<DeleteJsonDocumentOutput>;
}
//# sourceMappingURL=DeleteJsonDocumentUseCase.d.ts.map