import type { IResourceEntity, IResourceComposite, IResourceDecorator, IResourceBuilder, EventsFactoryOptions, IEventsResourceFactory, ILifecycleState, ResourceMetadata, IResourceVisitor, LifecycleStateType } from '../../../lib/runtime-web/types/declarative-api';
import type { IFrameworkResourceProvider } from '../../interfaces';
import { BaseResourceFactory, BaseResourceBuilder } from './base-factory';
/**
 * EventBridge Event Bus Resource Entity.
 */
export declare class EventBridgeEventBusEntity implements IResourceEntity {
    readonly id: string;
    readonly metadata: ResourceMetadata;
    readonly construct: unknown;
    readonly eventBusName: string;
    readonly eventBusArn: string;
    readonly archiveEnabled: boolean;
    readonly type: "events:eventbus";
    private _state;
    constructor(id: string, metadata: ResourceMetadata, construct: unknown, eventBusName: string, eventBusArn: string, archiveEnabled?: boolean);
    get state(): ILifecycleState;
    transitionTo(targetState: LifecycleStateType): void;
    accept<T>(visitor: IResourceVisitor<T>): T;
}
/**
 * EventBridge Rule Resource Entity.
 *
 * Note: This is a related resource, not a top-level resource type.
 */
export declare class EventBridgeRuleEntity implements IResourceEntity {
    readonly id: string;
    readonly metadata: ResourceMetadata;
    readonly construct: unknown;
    readonly ruleName: string;
    readonly ruleArn: string;
    readonly eventBusName: string;
    readonly type: "events:eventbus";
    private _state;
    constructor(id: string, metadata: ResourceMetadata, construct: unknown, ruleName: string, ruleArn: string, eventBusName: string);
    get state(): ILifecycleState;
    transitionTo(targetState: LifecycleStateType): void;
    accept<T>(visitor: IResourceVisitor<T>): T;
}
/**
 * EventBridge Event Bus Builder.
 */
export declare class EventBridgeEventBusBuilder<TProps = unknown> extends BaseResourceBuilder<EventBridgeEventBusEntity, TProps> {
    private _archiveEvents;
    private _archiveRetentionDays;
    /**
     * Enable event archiving.
     */
    withArchive(retentionDays?: number): this;
    /**
     * Build the EventBridge event bus entity.
     */
    build(): EventBridgeEventBusEntity;
}
/**
 * Events Resource Factory.
 *
 * Factory for creating EventBridge event buses and rules.
 * Delegates resource creation to IFrameworkResourceProvider (RuntimeInfraStack).
 *
 * Validates: Requirements 2.2, 2.3, 5.5
 */
export declare class EventsResourceFactory extends BaseResourceFactory<'events'> implements IEventsResourceFactory {
    readonly familyType: "events";
    constructor(provider: IFrameworkResourceProvider, decorators?: readonly IResourceDecorator[]);
    /**
     * Create a resource with full CDK props.
     */
    create<TProps>(id: string, props: TProps, options?: EventsFactoryOptions): IResourceComposite;
    /**
     * Get a builder for custom resource construction.
     */
    getBuilder<TProps>(id: string): IResourceBuilder<IResourceEntity, TProps>;
    /**
     * Check if this factory can create a resource of the given type.
     */
    canCreate(resourceType: string): boolean;
    /**
     * Get the supported resource types.
     */
    getSupportedTypes(): readonly string[];
    /**
     * Create an EventBridge Event Bus.
     * Delegates to provider.createEventBus() for framework integration.
     * Passes full props to provider without filtering (Requirement 7.5).
     *
     * @typeParam TProps - Event bus props type (unconstrained for flexibility)
     * @param id - Unique identifier for the event bus
     * @param props - Full CDK EventBusProps (no restrictions)
     * @param options - Events-specific factory options
     * @returns The created event bus entity
     *
     * Validates: Requirements 7.5
     */
    createEventBus<TProps>(id: string, props: TProps, options?: EventsFactoryOptions): IResourceEntity;
    /**
     * Create an Event Bus with rules.
     */
    createEventBusWithRules<TBusProps, TRuleProps>(id: string, busProps: TBusProps, ruleProps: readonly TRuleProps[], options?: EventsFactoryOptions): IResourceComposite;
}
