export interface Error {
    "error": string;
    "reason"?: string;
}
export interface HealthResponse {
    "status": string;
    "version": string;
    "latencyMs"?: number;
}
export interface ReadyResponse {
    "status": string;
    "version": string;
    "pendingMigrations"?: Array<string>;
}
export interface VersionResponse {
    "status": string;
    "version": string;
}
export interface DeleteResult {
    "id": string;
    "deleted": boolean;
}
export interface AvailabilityInput {
    "name": string;
}
export interface AvailabilityQuote {
    "name": string;
    "available": boolean;
    "price_usd"?: number;
    "registration_price_usd"?: number;
    "renewal_price_usd"?: number;
    "currency"?: string;
    "is_premium"?: boolean;
}
export interface DomainProvisioningRequest {
    "name": string;
    "max_price_usd": number;
    "years": number;
    "auto_renew": boolean;
    "registrar"?: "route53";
    "dns_provider"?: "cloudflare";
    "target"?: "shortlinks" | "website_origin";
    "worker_name"?: string | null;
    "origin_hostname"?: string | null;
    "origin_tls_mode"?: "strict" | "full" | null;
}
export interface DomainAdoptionRequest {
    "name": string;
    "dns_provider"?: "cloudflare";
    "target": "shortlinks" | "website_origin";
    "worker_name"?: string | null;
    "origin_hostname"?: string | null;
    "origin_tls_mode"?: "strict" | "full" | null;
}
export interface DomainProvisioningProviderState {
    "route53_account_ref"?: string;
    "route53_account_binding_sha256"?: string;
    "quoted_price_usd"?: number;
    "currency"?: string;
    "registration_operation_id"?: string;
    "nameserver_operation_id"?: string;
    "cloudflare_zone_id"?: string;
    "cloudflare_nameservers"?: Array<string>;
    "route53_zone_ids_before_registration"?: Array<string>;
    "route53_hosted_zone_id"?: string;
    "route53_hosted_zone_cleaned"?: boolean;
    "worker_domain_bound"?: boolean;
    "website_origin_configured"?: boolean;
    "origin_tls_mode_configured"?: "strict" | "full" | "origin_pull";
    "origin_tls_mode_checked_at"?: string;
    "web_records"?: Array<ProvisionedWebRecord>;
    "target_checked_at"?: string;
    "last_provider_status"?: string;
    "registration_submitted_at"?: string;
    "nameservers_submitted_at"?: string;
    "delegation_dns_preserved_count"?: number;
    "delegation_dns_preserved_sha256"?: string;
    "delegation_dns_preserved_at"?: string;
}
export interface DomainProvisioningJob {
    "id": string;
    "domain_id": string;
    "name": string;
    "idempotency_key": string;
    "request_hash": string;
    "status": "requested" | "quoted" | "registration_submitting" | "registration_submitted" | "registered" | "zone_ready" | "nameservers_submitted" | "delegated" | "worker_bound" | "ready" | "manual_review" | "failed";
    "max_price_usd": number;
    "years": number;
    "auto_renew": boolean;
    "acquisition_mode": "purchase" | "adopt";
    "registrar": "route53" | "brandsight";
    "dns_provider": string;
    "target": string;
    "worker_name": string | null;
    "origin_hostname": string | null;
    "origin_tls_mode": "strict" | "full" | null;
    "provider_state": DomainProvisioningProviderState;
    "result": DomainProvisioningResult | null;
    "attempts": number;
    "error"?: string | null;
    "lease_until"?: string | null;
    "created_at": string;
    "updated_at": string;
}
export interface ProvisionedWebRecord {
    "type": "CNAME";
    "name": string;
    "value": string;
    "proxied": true;
    "ttl": number;
}
export interface DomainProvisioningResult {
    "zone_ref": string;
    "nameservers": Array<string>;
    "web_records": Array<ProvisionedWebRecord>;
    "origin_tls_mode": "strict" | "full" | null;
    "checked_at": string;
}
export interface HostedDnsRecord {
    "type": "TXT" | "CNAME" | "MX";
    "name": string;
    "value": string;
    "ttl": number;
    "priority"?: number | null;
}
export interface ReconciliationDnsRecord {
    "type": "TXT" | "CNAME" | "MX";
    "name": string;
    "value": string;
    "ttl": number | 1;
    "priority"?: number | null;
}
export interface EffectiveHostedDnsRecord {
    "type": "TXT" | "CNAME" | "MX";
    "name": string;
    "value": string;
    "ttl": number | 1;
    "priority"?: number | null;
    "semantic_value"?: string;
}
export interface DomainDnsRecordState {
    "hash_scheme": "domains-dns-group-v1";
    "domain_name": string;
    "provisioning_job_id": string;
    "zone_id": string;
    "record_name": string;
    "record_type": "TXT" | "CNAME" | "MX";
    "records_sha256": string;
    "records": Array<{
        "id": string;
        "type": string;
        "name": string;
        "value": string;
        "ttl": number;
        "priority": number | null;
        "proxied": boolean | null;
    }>;
}
export interface DomainDnsReconciliationRequest {
    "records": Array<ReconciliationDnsRecord>;
    "expected_current_records_sha256"?: string;
}
export interface DomainDnsReconciliation {
    "id": string;
    "provisioning_job_id": string;
    "domain_name": string;
    "idempotency_key": string;
    "request_hash": string;
    "status": "requested" | "applying" | "ready" | "manual_review";
    "records": Array<ReconciliationDnsRecord>;
    "result": {
        "records": Array<EffectiveHostedDnsRecord>;
        "checked_at": string;
    } | null;
    "error": string | null;
    "lease_until": string | null;
    "created_at": string;
    "updated_at": string;
}
export interface Domain {
    "id": string;
    "name": string;
    "registrar"?: string | null;
    "status": string;
    "registered_at"?: string | null;
    "expires_at"?: string | null;
    "auto_renew": boolean;
    "is_premium": boolean;
    "premium_price"?: number | null;
    "standard_price"?: number | null;
    "purchase_price"?: number | null;
    "purchase_date"?: string | null;
    "nameservers"?: Array<string>;
    "whois"?: Record<string, unknown>;
    "ssl_expires_at"?: string | null;
    "ssl_issuer"?: string | null;
    "notes"?: string | null;
    "metadata"?: Record<string, unknown>;
    "created_at": string;
    "updated_at": string;
}
export interface DomainList {
    "domains": Array<Domain>;
    "count": number;
}
export interface CreateDomainInput {
    "name": string;
    "registrar"?: string;
    "status"?: string;
    "registered_at"?: string;
    "expires_at"?: string;
    "auto_renew"?: boolean;
    "is_premium"?: boolean;
    "premium_price"?: number;
    "standard_price"?: number;
    "purchase_price"?: number;
    "purchase_date"?: string;
    "nameservers"?: Array<string>;
    "whois"?: Record<string, unknown>;
    "ssl_expires_at"?: string;
    "ssl_issuer"?: string;
    "notes"?: string;
    "metadata"?: Record<string, unknown>;
}
export interface UpdateDomainInput {
    "name"?: string;
    "registrar"?: string | null;
    "status"?: string;
    "registered_at"?: string | null;
    "expires_at"?: string | null;
    "auto_renew"?: boolean;
    "is_premium"?: boolean;
    "premium_price"?: number | null;
    "standard_price"?: number | null;
    "purchase_price"?: number | null;
    "purchase_date"?: string | null;
    "nameservers"?: Array<string>;
    "whois"?: Record<string, unknown>;
    "ssl_expires_at"?: string | null;
    "ssl_issuer"?: string | null;
    "notes"?: string | null;
    "metadata"?: Record<string, unknown>;
}
export interface DnsRecord {
    "id": string;
    "domain_id": string;
    "type": string;
    "name": string;
    "value": string;
    "ttl": number;
    "priority"?: number | null;
    "created_at": string;
}
export interface DnsRecordList {
    "records": Array<DnsRecord>;
    "count": number;
}
export interface CreateDnsRecordInput {
    "type": "A" | "AAAA" | "CNAME" | "MX" | "TXT" | "NS" | "SRV";
    "name": string;
    "value": string;
    "ttl"?: number;
    "priority"?: number;
}
export interface DomainOffer {
    "id": string;
    "domain_id": string;
    "our_offer"?: number | null;
    "their_ask"?: number | null;
    "status": string;
    "notes"?: string | null;
    "created_at": string;
}
export interface OfferList {
    "offers": Array<DomainOffer>;
    "count": number;
}
export interface CreateOfferInput {
    "our_offer"?: number;
    "their_ask"?: number;
    "status"?: string;
    "notes"?: string;
}
export interface DomainStats {
    "total": number;
    "active"?: number;
    "expired"?: number;
    "transferring"?: number;
    "redemption"?: number;
    "auto_renew_enabled"?: number;
    "expiring_30_days"?: number;
    "ssl_expiring_30_days"?: number;
}
export interface DomainsClientOptions {
    /** Base URL, e.g. process.env.APP_API_URL. */
    baseUrl: string;
    /** API key, e.g. process.env.APP_API_KEY. Sent as the 'x-api-key' header. */
    apiKey?: string;
    /** Custom fetch (defaults to global fetch). */
    fetch?: typeof fetch;
    /** Extra headers merged into every request. */
    headers?: Record<string, string>;
}
export declare class ApiError extends Error {
    readonly status: number;
    readonly body: unknown;
    constructor(status: number, message: string, body: unknown);
}
export declare class DomainsClient {
    private readonly baseUrl;
    private readonly apiKey;
    private readonly fetchImpl;
    private readonly baseHeaders;
    constructor(options: DomainsClientOptions);
    private request;
    /** Liveness probe (DB reachable). */
    getHealth(init?: RequestInit): Promise<HealthResponse>;
    /** Readiness probe (DB reachable and schema migrated). */
    getReady(init?: RequestInit): Promise<ReadyResponse>;
    /** Check live registrar availability and current price. */
    checkDomainAvailability(body: AvailabilityInput, init?: RequestInit): Promise<AvailabilityQuote>;
    /** Get a DNS record by id. */
    getDnsRecord(id: string, init?: RequestInit): Promise<DnsRecord>;
    /** Delete a DNS record. */
    deleteDnsRecord(id: string, init?: RequestInit): Promise<DeleteResult>;
    /** List domains. */
    listDomains(query?: {
        "search"?: string;
        "status"?: string;
        "limit"?: number;
        "offset"?: number;
    }, init?: RequestInit): Promise<DomainList>;
    /** Create a domain. */
    createDomain(body: CreateDomainInput, init?: RequestInit): Promise<Domain>;
    /** Get a domain by id. */
    getDomain(id: string, init?: RequestInit): Promise<Domain>;
    /** Delete a domain. */
    deleteDomain(id: string, init?: RequestInit): Promise<DeleteResult>;
    /** Update a domain. */
    updateDomain(id: string, body: UpdateDomainInput, init?: RequestInit): Promise<Domain>;
    /** List DNS records for a domain. */
    listDnsRecords(id: string, init?: RequestInit): Promise<DnsRecordList>;
    /** Create a DNS record for a domain. */
    createDnsRecord(id: string, body: CreateDnsRecordInput, init?: RequestInit): Promise<DnsRecord>;
    /** List marketplace offers for a domain. */
    listOffers(id: string, init?: RequestInit): Promise<OfferList>;
    /** Create a marketplace offer for a domain. */
    createOffer(id: string, body: CreateOfferInput, init?: RequestInit): Promise<DomainOffer>;
    /** Reserve, cap the total charge, purchase, delegate and bind a domain through the hosted Domains authority. */
    requestDomainProvisioning(body: DomainProvisioningRequest, init?: RequestInit): Promise<DomainProvisioningJob>;
    /** Adopt an existing portfolio domain into hosted provisioning without a registrar purchase. */
    adoptOwnedDomainProvisioning(body: DomainAdoptionRequest, init?: RequestInit): Promise<DomainProvisioningJob>;
    /** Read the durable provisioning job for a canonical domain name. */
    getDomainProvisioningByName(name: string, init?: RequestInit): Promise<DomainProvisioningJob>;
    /** Idempotently reconcile bounded TXT, CNAME, and MX record groups for a ready hosted domain. */
    reconcileProvisionedDomainDns(name: string, body: DomainDnsReconciliationRequest, init?: RequestInit): Promise<DomainDnsReconciliation>;
    /** Ensure email authorization while preserving existing DMARC and unrelated mail records. Result records are effective provider values, which may differ from requested defaults. */
    reconcileProvisionedDomainEmailDns(name: string, body: DomainDnsReconciliationRequest, init?: RequestInit): Promise<DomainDnsReconciliation>;
    /** Read durable DNS receipts without claiming leases or replaying provider writes. Follow next_offset until null. */
    listProvisionedDomainDnsReconciliations(name: string, query?: {
        "id"?: string;
        "idempotency_key"?: string;
        "limit"?: number;
        "offset"?: number;
    }, init?: RequestInit): Promise<{
        "reconciliations": Array<DomainDnsReconciliation>;
        "next_offset": number | null;
    }>;
    /** Read a complete selected DNS group and its exact-state guard under the zone lock. */
    getProvisionedDomainDnsState(name: string, query?: {
        "record_name": string;
        "record_type": "TXT" | "CNAME" | "MX";
    }, init?: RequestInit): Promise<DomainDnsRecordState>;
    /** Read a domain provisioning job. */
    getDomainProvisioning(id: string, init?: RequestInit): Promise<DomainProvisioningJob>;
    /** Advance one idempotent hosted provisioning step (operator recovery path). */
    advanceDomainProvisioning(id: string, init?: RequestInit): Promise<DomainProvisioningJob>;
    /** Portfolio statistics. */
    getDomainStats(init?: RequestInit): Promise<DomainStats>;
    /** Service version and mode. */
    getVersion(init?: RequestInit): Promise<VersionResponse>;
}
//# sourceMappingURL=client.d.ts.map