/**
 * Brandsight — GoDaddy's enterprise brand protection and domain registrar platform
 *
 * Two distinct capabilities:
 *   1. Domain registrar (GoDaddy Corporate Domains via Brandsight)
 *   2. Brand monitoring / threat detection
 *
 * Env vars:
 *   BRANDSIGHT_API_KEY — API key for Brandsight
 *   BRANDSIGHT_ACCOUNT_ID — Account ID for corporate domain operations (optional)
 */
export interface BrandsightConfig {
    apiKey: string;
    apiSecret?: string;
    customerId?: string;
    shopperId?: string;
    accountId?: string;
    baseUrl?: string;
}
/**
 * Resolve Brandsight (GoDaddy Corporate Domains) credentials from standard
 * BRANDSIGHT_* env vars. Pure / testable.
 */
export declare function resolveBrandsightConfig(env?: Record<string, string | undefined>): BrandsightConfig;
export interface BrandsightCapability {
    configured: boolean;
    gated: boolean;
    notes: string;
}
/**
 * Brandsight is GoDaddy Corporate Domains — an enterprise/contract-only
 * registrar. Even with credentials present, automated self-serve purchase is
 * gated, so callers must not attempt it blindly.
 */
export declare function brandsightCapability(env?: Record<string, string | undefined>): BrandsightCapability;
export interface BrandsightDomain {
    domain: string;
    status: string;
    expires: string;
    created?: string;
    auto_renew: boolean;
    locked: boolean;
    nameservers: string[];
    domainId?: string;
    createdAt?: string;
    expiresAt?: string;
    nameServers?: string[];
    renewAuto?: boolean;
    renewal?: {
        currency?: string;
        price?: number;
        renewable?: boolean;
    };
}
export interface BrandsightAvailability {
    domain: string;
    available: boolean;
    price?: number;
    currency?: string;
    registryPremiumPricing?: boolean;
}
export interface BrandsightAgreement {
    agreementKey: string;
    content?: string;
    title?: string;
    url?: string;
}
export interface BrandsightAlert {
    domain: string;
    type: "typosquat" | "homoglyph" | "keyword" | "tld_variation";
    registered_at: string;
}
export interface BrandMonitorResult {
    brand: string;
    alerts: BrandsightAlert[];
    stub: boolean;
}
export interface WhoisHistoryEntry {
    registrant: string;
    date: string;
    changes: string[];
}
export interface WhoisHistoryResult {
    domain: string;
    history: WhoisHistoryEntry[];
    stub: boolean;
}
export interface ThreatAssessment {
    domain: string;
    risk_level: "low" | "medium" | "high" | "critical";
    threats: string[];
    recommendation: string;
    stub: boolean;
}
export declare class BrandsightApiError extends Error {
    statusCode?: number | undefined;
    responseBody?: string | undefined;
    constructor(message: string, statusCode?: number | undefined, responseBody?: string | undefined);
}
type FetchFn = typeof globalThis.fetch;
export declare function _setFetch(fn: FetchFn | null): void;
export declare function getApiKey(): string;
export declare function getConfig(): BrandsightConfig;
export declare function monitorBrand(brandName: string): Promise<BrandMonitorResult>;
export declare function getSimilarDomains(domain: string): Promise<{
    domain: string;
    similar: string[];
    stub: boolean;
}>;
export declare function getWhoisHistory(domain: string): Promise<WhoisHistoryResult>;
export declare function getThreatAssessment(domain: string): Promise<ThreatAssessment>;
export declare function listDomains(config?: BrandsightConfig): Promise<BrandsightDomain[]>;
export declare function getDomainInfo(domain: string, config?: BrandsightConfig): Promise<BrandsightDomain | null>;
export declare function checkAvailability(domain: string, config?: BrandsightConfig): Promise<BrandsightAvailability>;
export declare function renewDomain(domain: string, years?: number, config?: BrandsightConfig): Promise<{
    success: boolean;
    orderId?: string;
}>;
export declare function getLegalAgreements(tld: string, privacy?: boolean, config?: BrandsightConfig): Promise<BrandsightAgreement[]>;
export declare function getRegistrationSchema(tld: string, config?: BrandsightConfig): Promise<Record<string, unknown>>;
export declare function validateRegistrationRequest(payload: Record<string, unknown>, config?: BrandsightConfig): Promise<boolean>;
export declare function registerBrandsightDomain(domain: string, contact: import("./registrar.js").ProviderRegistrationContact, options?: import("./registrar.js").ProviderRegistrationOptions, config?: BrandsightConfig): Promise<{
    success: boolean;
    orderId?: string;
    operationId?: string;
    chargedAmount?: string;
}>;
export declare function updateNameservers(domain: string, nameservers: string[], config?: BrandsightConfig): Promise<{
    success: boolean;
    operationId?: string;
}>;
export interface BrandsightDnsRecord {
    type: string;
    name: string;
    data: string;
    ttl: number;
    priority?: number;
    port?: number;
    protocol?: string;
    service?: string;
    weight?: number;
}
export declare function getDnsRecords(domain: string, config?: BrandsightConfig): Promise<BrandsightDnsRecord[]>;
export declare function setDnsRecords(domain: string, records: BrandsightDnsRecord[], config?: BrandsightConfig): Promise<boolean>;
export declare function syncToLocalDb(dbFns: {
    getDomainByName: (name: string) => Promise<import("../db/domains.js").Domain | null>;
    createDomain: (input: import("../db/domains.js").CreateDomainInput) => Promise<import("../db/domains.js").Domain>;
    updateDomain: (id: string, input: import("../db/domains.js").UpdateDomainInput) => Promise<import("../db/domains.js").Domain | null>;
}, config?: BrandsightConfig): Promise<{
    synced: number;
    created: number;
    updated: number;
    errors: string[];
}>;
import type { FullProvider } from "./registrar.js";
export declare function createBrandsightProvider(config?: BrandsightConfig): FullProvider;
export {};
//# sourceMappingURL=brandsight.d.ts.map