/**
 * GoDaddy API integration for domain management
 *
 * Environment variables:
 *   GODADDY_API_KEY    — GoDaddy API key
 *   GODADDY_API_SECRET — GoDaddy API secret
 */
import type { CreateDomainInput, UpdateDomainInput, Domain } from "../db/domains.js";
export interface GoDaddyConfig {
    apiKey: string;
    apiSecret: string;
}
export interface GoDaddyDomain {
    domain: string;
    domainId?: number;
    status: string;
    expires: string;
    renewAuto: boolean;
    nameServers?: string[];
}
export interface GoDaddyDomainDetail extends GoDaddyDomain {
    createdAt?: string;
    locked?: boolean;
    privacy?: boolean;
    domainId?: number;
}
export interface GoDaddyDnsRecord {
    type: string;
    name: string;
    data: string;
    ttl: number;
    priority?: number;
}
export interface GoDaddyAvailability {
    domain: string;
    available: boolean;
    price?: number;
    currency?: string;
}
export interface GoDaddyRenewResponse {
    orderId: number;
    itemCount: number;
    total: number;
}
export declare class GoDaddyApiError extends Error {
    statusCode?: number | undefined;
    details?: unknown | undefined;
    constructor(message: string, statusCode?: number | undefined, details?: unknown | undefined);
}
export interface GoDaddySyncResult {
    synced: number;
    created: number;
    updated: number;
    errors: string[];
}
type FetchFn = typeof globalThis.fetch;
export declare function _setFetch(fn: FetchFn | null): void;
export declare function listGoDaddyDomains(): Promise<GoDaddyDomain[]>;
export declare function getDomainInfo(domain: string): Promise<GoDaddyDomainDetail>;
export declare function renewDomain(domain: string): Promise<GoDaddyRenewResponse>;
export declare function getDnsRecords(domain: string, type?: string): Promise<GoDaddyDnsRecord[]>;
export declare function setDnsRecords(domain: string, records: GoDaddyDnsRecord[]): Promise<void>;
export declare function checkAvailability(domain: string): Promise<GoDaddyAvailability>;
export declare function syncToLocalDb(dbFns: {
    getDomainByName: (name: string) => Promise<Domain | null>;
    createDomain: (input: CreateDomainInput) => Promise<Domain>;
    updateDomain: (id: string, input: UpdateDomainInput) => Promise<Domain | null>;
}): Promise<GoDaddySyncResult>;
export interface GodaddyCapability {
    configured: boolean;
    gated: boolean;
    notes: string;
}
/**
 * GoDaddy retail Domains API capability. Current GoDaddy docs say DNS/domain
 * management production API access is available with 1+ domain or qualifying
 * plan/spend, while availability remains under a higher anti-abuse threshold.
 * This CLI still does not expose direct automated purchase through GoDaddy.
 */
export declare function godaddyCapability(env?: Record<string, string | undefined>): GodaddyCapability;
export {};
//# sourceMappingURL=godaddy.d.ts.map