/**
 * Resource Error Classes
 *
 * This module provides error classes for resource-related failures.
 * These errors are thrown during resource creation, modification, or deletion.
 *
 * @module declarative-api/errors/resource-errors
 */
import type { ResourceType, LifecycleStateType } from '../../../lib/runtime-web/types/declarative-api/core.types';
import { InfrastructureError } from './infrastructure-error';
/**
 * Error thrown when a resource creation fails.
 *
 * @example
 * ```typescript
 * try {
 *   factory.create('my-table', props);
 * } catch (error) {
 *   if (isResourceCreationError(error)) {
 *     console.log(`Failed to create ${error.resourceType}: ${error.message}`);
 *   }
 * }
 * ```
 */
export declare class ResourceCreationError extends InfrastructureError {
    readonly resourceId: string;
    readonly resourceType: ResourceType;
    readonly name: string;
    constructor(resourceId: string, resourceType: ResourceType, message: string, options?: {
        component?: string;
        operation?: string;
        cause?: Error;
    });
}
/**
 * Type guard for ResourceCreationError.
 */
export declare function isResourceCreationError(error: unknown): error is ResourceCreationError;
/**
 * Error thrown when a resource modification fails.
 */
export declare class ResourceModificationError extends InfrastructureError {
    readonly resourceId: string;
    readonly resourceType: ResourceType;
    readonly name: string;
    constructor(resourceId: string, resourceType: ResourceType, message: string, options?: {
        component?: string;
        operation?: string;
        cause?: Error;
        changes?: Record<string, unknown>;
    });
}
/**
 * Type guard for ResourceModificationError.
 */
export declare function isResourceModificationError(error: unknown): error is ResourceModificationError;
/**
 * Error thrown when a resource deletion fails.
 */
export declare class ResourceDeletionError extends InfrastructureError {
    readonly resourceId: string;
    readonly resourceType: ResourceType;
    readonly name: string;
    constructor(resourceId: string, resourceType: ResourceType, message: string, options?: {
        component?: string;
        operation?: string;
        cause?: Error;
    });
}
/**
 * Type guard for ResourceDeletionError.
 */
export declare function isResourceDeletionError(error: unknown): error is ResourceDeletionError;
/**
 * Error thrown when an invalid state transition is attempted.
 *
 * This error extends InfrastructureError to provide consistent error handling
 * while maintaining compatibility with the existing InvalidStateTransitionError.
 */
export declare class ResourceStateTransitionError extends InfrastructureError {
    readonly resourceId: string;
    readonly currentState: LifecycleStateType;
    readonly targetState: LifecycleStateType;
    readonly validTransitions: readonly LifecycleStateType[];
    readonly name: string;
    constructor(resourceId: string, currentState: LifecycleStateType, targetState: LifecycleStateType, validTransitions: readonly LifecycleStateType[], options?: {
        component?: string;
        operation?: string;
    });
}
/**
 * Type guard for ResourceStateTransitionError.
 */
export declare function isResourceStateTransitionError(error: unknown): error is ResourceStateTransitionError;
/**
 * Error thrown when a resource is in an unexpected state.
 */
export declare class UnexpectedResourceStateError extends InfrastructureError {
    readonly resourceId: string;
    readonly actualState: LifecycleStateType;
    readonly expectedStates: readonly LifecycleStateType[];
    readonly name: string;
    constructor(resourceId: string, actualState: LifecycleStateType, expectedStates: readonly LifecycleStateType[], options?: {
        component?: string;
        operation?: string;
    });
}
/**
 * Type guard for UnexpectedResourceStateError.
 */
export declare function isUnexpectedResourceStateError(error: unknown): error is UnexpectedResourceStateError;
/**
 * Error thrown when a resource operation times out.
 */
export declare class ResourceOperationTimeoutError extends InfrastructureError {
    readonly resourceId: string;
    readonly operation: string;
    readonly timeoutMs: number;
    readonly name: string;
    constructor(resourceId: string, operation: string, timeoutMs: number, options?: {
        component?: string;
    });
}
/**
 * Type guard for ResourceOperationTimeoutError.
 */
export declare function isResourceOperationTimeoutError(error: unknown): error is ResourceOperationTimeoutError;
