import { ClusterEntity } from '../../infrastructure/clusters/entities/cluster.entity';
import { ClusterDnsZoneEntity } from './cluster-dns-zone.entity';
import { WildcardCertificateEntity } from './wildcard-certificate.entity';
import { SanCertificateEntity } from './san-certificate.entity';
import { ApplicationEntity } from '../../applications/entities/application.entity';
import { DnsRecordType } from '../../providers/interfaces/dns-provider.interface';
import { CertificateStatus } from '../../providers/interfaces/certificate-provider.interface';
import { CertificateProvider } from '../../providers/enums/certificate-provider.enum';
import { ReconciliationStatus } from '../../infrastructure/shared/enums/reconciliation-status.enum';
import { EndpointType } from '../enums/endpoint-type.enum';
import { CertChallenge } from '../enums/cert-challenge.enum';
import { HostnameMode } from '../enums/hostname-mode.enum';
export declare class AppEndpointEntity {
    id: string;
    clusterId: string;
    cluster: ClusterEntity;
    clusterDnsZoneId: string;
    clusterDnsZone: ClusterDnsZoneEntity;
    applicationId: string;
    application: ApplicationEntity;
    /**
     * Discriminator. `public` (default) is the legacy endpoint with public DNS
     * + per-app cert + Ingress. `internal` is reachable only via the
     * cluster-wide ForwardAuth gateway: the DNS A record is the cluster-wide
     * `*.internal.<zone>` wildcard (not created per-app), and the Ingress
     * carries the auth-url annotation pointing to /authz/internal-app.
     */
    endpointType: EndpointType;
    certChallenge: CertChallenge;
    hostnameMode: HostnameMode;
    fqdn: string;
    serviceName: string;
    k8sServiceName: string;
    k8sNamespace: string;
    k8sServicePort: number;
    dnsRecordType: DnsRecordType;
    dnsRecordValue: string;
    dnsRecordId: string;
    certificateProvider: CertificateProvider;
    certificateRequired: boolean;
    certificateStatus: CertificateStatus;
    certificateMessage: string;
    certificateExpiresAt: Date;
    wildcardCertificateId: string | null;
    wildcardCertificate: WildcardCertificateEntity | null;
    tlsSecretName: string | null;
    sanCertificateId: string | null;
    sanCertificate: SanCertificateEntity | null;
    reconciliationStatus: ReconciliationStatus;
    lastReconciliationAt: Date;
    lastSyncedAt: Date | null;
    syncedDomain: string | null;
    errorMessage: string;
    metadata: Record<string, string>;
    createdAt: Date;
    updatedAt: Date;
}
