import type { IResourceEntity, IResourceComposite, IResourceDecorator, IResourceBuilder, AuthFactoryOptions, IAuthResourceFactory, ILifecycleState, ResourceMetadata, IResourceVisitor, LifecycleStateType } from '../../../lib/runtime-web/types/declarative-api';
import type { IFrameworkResourceProvider } from '../../interfaces';
import { BaseResourceFactory, BaseResourceBuilder } from './base-factory';
/**
 * Cognito User Pool Resource Entity.
 */
export declare class CognitoUserPoolEntity implements IResourceEntity {
    readonly id: string;
    readonly metadata: ResourceMetadata;
    readonly construct: unknown;
    readonly userPoolId: string;
    readonly userPoolArn: string;
    readonly userPoolName: string;
    readonly client?: CognitoUserPoolClientEntity | undefined;
    readonly type: "cognito:userpool";
    private _state;
    constructor(id: string, metadata: ResourceMetadata, construct: unknown, userPoolId: string, userPoolArn: string, userPoolName: string, client?: CognitoUserPoolClientEntity | undefined);
    get state(): ILifecycleState;
    transitionTo(targetState: LifecycleStateType): void;
    accept<T>(visitor: IResourceVisitor<T>): T;
}
/**
 * Cognito User Pool Client Resource Entity.
 *
 * Note: This is a related resource, not a top-level resource type.
 */
export declare class CognitoUserPoolClientEntity implements IResourceEntity {
    readonly id: string;
    readonly metadata: ResourceMetadata;
    readonly construct: unknown;
    readonly clientId: string;
    readonly clientName: string;
    readonly userPoolId: string;
    readonly type: "cognito:userpool";
    private _state;
    constructor(id: string, metadata: ResourceMetadata, construct: unknown, clientId: string, clientName: string, userPoolId: string);
    get state(): ILifecycleState;
    transitionTo(targetState: LifecycleStateType): void;
    accept<T>(visitor: IResourceVisitor<T>): T;
}
/**
 * Cognito User Pool Builder.
 */
export declare class CognitoUserPoolBuilder<TProps = unknown> extends BaseResourceBuilder<CognitoUserPoolEntity, TProps> {
    private _createClient;
    private _clientName?;
    private _selfSignUp;
    private _mfa;
    /**
     * Create a user pool client.
     */
    withClient(clientName?: string): this;
    /**
     * Enable/disable self sign-up.
     */
    withSelfSignUp(enabled?: boolean): this;
    /**
     * Set MFA configuration.
     */
    withMfa(mfa: 'OFF' | 'OPTIONAL' | 'REQUIRED'): this;
    /**
     * Build the Cognito user pool entity.
     */
    build(): CognitoUserPoolEntity;
}
/**
 * Auth Resource Factory.
 *
 * Factory for creating Cognito user pools and clients.
 * Delegates resource creation to IFrameworkResourceProvider (RuntimeInfraStack).
 *
 * Validates: Requirements 2.2, 2.3, 5.4
 */
export declare class AuthResourceFactory extends BaseResourceFactory<'auth'> implements IAuthResourceFactory {
    readonly familyType: "auth";
    constructor(provider: IFrameworkResourceProvider, decorators?: readonly IResourceDecorator[]);
    /**
     * Create a resource with full CDK props.
     */
    create<TProps>(id: string, props: TProps, options?: AuthFactoryOptions): 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 a Cognito User Pool.
     * Delegates to provider.createUserPool() for framework integration.
     * Passes full props to provider without filtering (Requirement 7.5).
     *
     * @typeParam TProps - User pool props type (unconstrained for flexibility)
     * @param id - Unique identifier for the user pool
     * @param props - Full CDK UserPoolProps (no restrictions)
     * @param options - Auth-specific factory options
     * @returns The created user pool entity or composite (if client created)
     *
     * Validates: Requirements 7.5
     */
    createUserPool<TProps>(id: string, props: TProps, options?: AuthFactoryOptions): IResourceEntity | IResourceComposite;
    /**
     * Create a User Pool Client.
     */
    createUserPoolClient<TProps>(id: string, userPoolId: string, props: TProps, options?: AuthFactoryOptions): IResourceEntity;
}
