/**
 * Type Guards for Resource Entities
 *
 * This module provides type guards for runtime type checking of resource entities.
 * Type guards enable type-safe handling of resources in discriminated union contexts.
 *
 * @module declarative-api/type-guards
 */
import type { ResourceType } from './core.types';
import type { IResourceEntity } from './resource.types';
/**
 * Type guard to check if an entity is a DynamoDB table resource.
 *
 * @param entity - The resource entity to check
 * @returns True if the entity is a DynamoDB table
 *
 * @example
 * ```typescript
 * if (isTableResource(entity)) {
 *   // entity.type is 'dynamodb:table'
 *   console.log('Table resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isTableResource(entity: IResourceEntity): entity is IResourceEntity & {
    type: 'dynamodb:table';
};
/**
 * Type guard to check if an entity is an SQS queue resource.
 *
 * @param entity - The resource entity to check
 * @returns True if the entity is an SQS queue
 *
 * @example
 * ```typescript
 * if (isQueueResource(entity)) {
 *   // entity.type is 'sqs:queue'
 *   console.log('Queue resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isQueueResource(entity: IResourceEntity): entity is IResourceEntity & {
    type: 'sqs:queue';
};
/**
 * Type guard to check if an entity is an SNS topic resource.
 *
 * @param entity - The resource entity to check
 * @returns True if the entity is an SNS topic
 *
 * @example
 * ```typescript
 * if (isTopicResource(entity)) {
 *   // entity.type is 'sns:topic'
 *   console.log('Topic resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isTopicResource(entity: IResourceEntity): entity is IResourceEntity & {
    type: 'sns:topic';
};
/**
 * Type guard to check if an entity is an S3 bucket resource.
 *
 * @param entity - The resource entity to check
 * @returns True if the entity is an S3 bucket
 *
 * @example
 * ```typescript
 * if (isBucketResource(entity)) {
 *   // entity.type is 's3:bucket'
 *   console.log('Bucket resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isBucketResource(entity: IResourceEntity): entity is IResourceEntity & {
    type: 's3:bucket';
};
/**
 * Type guard to check if an entity is a Cognito user pool resource.
 *
 * @param entity - The resource entity to check
 * @returns True if the entity is a Cognito user pool
 *
 * @example
 * ```typescript
 * if (isCognitoResource(entity)) {
 *   // entity.type is 'cognito:userpool'
 *   console.log('Cognito resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isCognitoResource(entity: IResourceEntity): entity is IResourceEntity & {
    type: 'cognito:userpool';
};
/**
 * Type guard to check if an entity is an EventBridge event bus resource.
 *
 * @param entity - The resource entity to check
 * @returns True if the entity is an EventBridge event bus
 *
 * @example
 * ```typescript
 * if (isEventBusResource(entity)) {
 *   // entity.type is 'events:eventbus'
 *   console.log('EventBus resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isEventBusResource(entity: IResourceEntity): entity is IResourceEntity & {
    type: 'events:eventbus';
};
/**
 * Type guard to check if an entity is a composite resource group.
 *
 * @param entity - The resource entity to check
 * @returns True if the entity is a composite resource
 *
 * @example
 * ```typescript
 * if (isCompositeResource(entity)) {
 *   // entity.type is 'composite'
 *   console.log('Composite resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isCompositeResource(entity: IResourceEntity): entity is IResourceEntity & {
    type: 'composite';
};
/**
 * Generic type guard to check if an entity matches a specific resource type.
 *
 * @param entity - The resource entity to check
 * @param type - The resource type to check against
 * @returns True if the entity matches the specified type
 *
 * @example
 * ```typescript
 * if (isResourceType(entity, 'dynamodb:table')) {
 *   // entity.type is 'dynamodb:table'
 *   console.log('Table resource:', entity.id);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isResourceType<T extends ResourceType>(entity: IResourceEntity, type: T): entity is IResourceEntity & {
    type: T;
};
/**
 * Type guard to check if a value is a valid IResourceEntity.
 *
 * Performs structural validation to ensure the value has all required
 * properties of a resource entity.
 *
 * @param value - The value to check
 * @returns True if the value is a valid IResourceEntity
 *
 * @example
 * ```typescript
 * if (isResourceEntity(value)) {
 *   // value is IResourceEntity
 *   console.log('Resource:', value.id, value.type);
 * }
 * ```
 *
 * Validates: Requirements 18.6
 */
export declare function isResourceEntity(value: unknown): value is IResourceEntity;
