/**
 * Repository Error Classes
 *
 * This module defines error classes for repository operations,
 * providing detailed error information for debugging and handling.
 *
 * @module declarative-api/repository/errors
 */
/**
 * Error thrown when a requested resource is not found in the repository.
 *
 * Provides detailed information about the missing resource and
 * lists available resources to help with debugging.
 *
 * @example
 * ```typescript
 * try {
 *   const resource = repository.getById('non-existent');
 * } catch (error) {
 *   if (error instanceof ResourceNotFoundException) {
 *     console.log(`Resource '${error.resourceId}' not found`);
 *     console.log(`Available: ${error.availableResources.join(', ')}`);
 *   }
 * }
 * ```
 *
 * Validates: Requirements 10.5
 */
export declare class ResourceNotFoundException extends Error {
    readonly resourceId: string;
    readonly availableResources: readonly string[];
    /** Error name for instanceof checks */
    readonly name = "ResourceNotFoundException";
    /**
     * Create a new ResourceNotFoundException.
     *
     * @param resourceId - The ID of the resource that was not found
     * @param availableResources - List of available resource IDs for debugging
     */
    constructor(resourceId: string, availableResources: readonly string[]);
}
/**
 * Error thrown when attempting to register a resource with a duplicate ID.
 *
 * The Identity Map pattern requires unique IDs for all resources.
 * This error is thrown when attempting to register a resource
 * with an ID that already exists in the repository.
 *
 * @example
 * ```typescript
 * try {
 *   repository.register(resource);
 * } catch (error) {
 *   if (error instanceof DuplicateResourceError) {
 *     console.log(`Resource '${error.resourceId}' already exists`);
 *   }
 * }
 * ```
 */
export declare class DuplicateResourceError extends Error {
    readonly resourceId: string;
    readonly existingType: string;
    readonly newType: string;
    /** Error name for instanceof checks */
    readonly name = "DuplicateResourceError";
    /**
     * Create a new DuplicateResourceError.
     *
     * @param resourceId - The ID of the duplicate resource
     * @param existingType - The type of the existing resource
     * @param newType - The type of the new resource being registered
     */
    constructor(resourceId: string, existingType: string, newType: string);
}
/**
 * Type guard to check if an error is a ResourceNotFoundException.
 *
 * @param error - The error to check
 * @returns True if the error is a ResourceNotFoundException
 */
export declare function isResourceNotFoundException(error: unknown): error is ResourceNotFoundException;
/**
 * Type guard to check if an error is a DuplicateResourceError.
 *
 * @param error - The error to check
 * @returns True if the error is a DuplicateResourceError
 */
export declare function isDuplicateResourceError(error: unknown): error is DuplicateResourceError;
