/**
 * Core Type Definitions for Declarative Infrastructure API
 *
 * This module contains the fundamental type definitions used throughout
 * the declarative infrastructure API, including resource types, lifecycle
 * states, and metadata structures.
 *
 * @module declarative-api/core.types
 */
/**
 * Discriminated union of all supported AWS resource types.
 *
 * Each resource type follows the pattern `service:resource` for clear
 * identification and type-safe handling throughout the framework.
 *
 * @example
 * ```typescript
 * const type: ResourceType = 'dynamodb:table';
 * ```
 *
 * Validates: Requirements 7.1, 18.4, 18.5
 */
export type ResourceType = 'dynamodb:table' | 'sqs:queue' | 'sns:topic' | 's3:bucket' | 'cognito:userpool' | 'events:eventbus' | 'composite';
/**
 * All valid resource type values as a readonly array.
 * Useful for validation and iteration.
 */
export declare const RESOURCE_TYPES: readonly ResourceType[];
/**
 * Lifecycle state types for resource management.
 *
 * Resources progress through these states during their lifecycle,
 * with valid transitions defined by the state transition matrix.
 *
 * State Transition Matrix:
 * - pending → creating
 * - creating → created | failed
 * - created → modifying | deleting
 * - modifying → created | failed
 * - deleting → deleted | failed
 * - deleted → (terminal)
 * - failed → pending | deleted (retry or cleanup)
 *
 * @example
 * ```typescript
 * const state: LifecycleStateType = 'pending';
 * ```
 *
 * Validates: Requirements 7.1
 */
export type LifecycleStateType = 'pending' | 'creating' | 'created' | 'modifying' | 'deleting' | 'deleted' | 'failed';
/**
 * All valid lifecycle state values as a readonly array.
 * Useful for validation and iteration.
 */
export declare const LIFECYCLE_STATES: readonly LifecycleStateType[];
/**
 * State transition matrix defining valid state transitions.
 *
 * Maps each state to an array of valid target states.
 * Used by the State pattern implementation to validate transitions.
 *
 * Validates: Requirements 7.2, 7.3
 */
export declare const STATE_TRANSITIONS: Readonly<Record<LifecycleStateType, readonly LifecycleStateType[]>>;
/**
 * Deployment stage type.
 *
 * Determines environment-specific defaults for resources:
 * - dev: DESTROY removal policy, no encryption, no PITR
 * - staging: SNAPSHOT removal policy, encryption enabled, logging
 * - prod: RETAIN removal policy, encryption, PITR, full logging
 *
 * @example
 * ```typescript
 * const stage: Stage = 'prod';
 * ```
 *
 * Validates: Requirements 18.4
 */
export type Stage = 'dev' | 'staging' | 'prod';
/**
 * All valid stage values as a readonly array.
 * Useful for validation and iteration.
 */
export declare const STAGES: readonly Stage[];
/**
 * Metadata associated with each resource entity.
 *
 * Contains information about when the resource was created,
 * its tags, deployment stage, and service ownership.
 *
 * @example
 * ```typescript
 * const metadata: ResourceMetadata = {
 *   createdAt: new Date(),
 *   tags: { Environment: 'prod', Team: 'platform' },
 *   stage: 'prod',
 *   serviceName: 'user-service',
 * };
 * ```
 *
 * Validates: Requirements 18.5
 */
export interface ResourceMetadata {
    /** Timestamp when the resource was created */
    readonly createdAt: Date;
    /** Key-value tags applied to the resource */
    readonly tags: Readonly<Record<string, string>>;
    /** Deployment stage (dev, staging, prod) */
    readonly stage: Stage;
    /** Name of the service that owns this resource */
    readonly serviceName: string;
}
/**
 * Type guard to check if a value is a valid ResourceType.
 *
 * @param value - The value to check
 * @returns True if the value is a valid ResourceType
 *
 * @example
 * ```typescript
 * if (isValidResourceType(value)) {
 *   // value is ResourceType
 * }
 * ```
 */
export declare function isValidResourceType(value: unknown): value is ResourceType;
/**
 * Type guard to check if a value is a valid LifecycleStateType.
 *
 * @param value - The value to check
 * @returns True if the value is a valid LifecycleStateType
 *
 * @example
 * ```typescript
 * if (isValidLifecycleState(value)) {
 *   // value is LifecycleStateType
 * }
 * ```
 */
export declare function isValidLifecycleState(value: unknown): value is LifecycleStateType;
/**
 * Type guard to check if a value is a valid Stage.
 *
 * @param value - The value to check
 * @returns True if the value is a valid Stage
 *
 * @example
 * ```typescript
 * if (isValidStage(value)) {
 *   // value is Stage
 * }
 * ```
 */
export declare function isValidStage(value: unknown): value is Stage;
