export interface Link { "id": string; "domain_id": string; "hostname": string; "slug": string; "destination_url": string; "title"?: string | null; "active": boolean; "expires_at"?: string | null; "short_url"?: string; "metadata"?: Record; "created_at": string; "updated_at"?: string; } export interface Domain { "id": string; "hostname": string; "provider": string; "default_domain": boolean; "origin_url"?: string | null; "notes"?: string | null; "metadata"?: Record; "created_at": string; "updated_at"?: string; } export interface LinkStats { "link": Link; "clicks": number; "last_clicked_at"?: string | null; "top_referrers"?: Array<{ "referer"?: string | null; "clicks"?: number; }>; "top_user_agents"?: Array<{ "user_agent"?: string | null; "clicks"?: number; }>; } export type LinkList = Array<{ "id": string; "domain_id": string; "hostname": string; "slug": string; "destination_url": string; "title"?: string | null; "active": boolean; "expires_at"?: string | null; "short_url"?: string; "metadata"?: Record; "created_at": string; "updated_at"?: string; }>; export type DomainList = Array<{ "id": string; "hostname": string; "provider": string; "default_domain": boolean; "origin_url"?: string | null; "notes"?: string | null; "metadata"?: Record; "created_at": string; "updated_at"?: string; }>; export interface TotalStats { "domains": number; "links": number; "clicks": number; } export interface CreateLinkRequest { "url": string; "domain"?: string; "slug"?: string; "title"?: string; "expires_at"?: string; "length"?: number; "metadata"?: Record; } export interface AddDomainRequest { "hostname": string; "default"?: boolean; "max_price_usd"?: number; "years"?: number; "auto_renew"?: boolean; "idempotency_key"?: string; } export interface DomainAvailabilityRequest { "hostname": string; } export interface DomainAvailabilityQuote { "name": string; "available": boolean; "price_usd"?: number; "currency"?: string; "is_premium"?: boolean; } export interface DomainProvisioning { "id": string; "name": string; "status": "requested" | "quoted" | "registration_submitting" | "registration_submitted" | "registered" | "zone_ready" | "nameservers_submitted" | "delegated" | "worker_bound" | "ready" | "manual_review" | "failed"; "error": string | null; "created_at": string; "updated_at": string; } export interface DomainProvisioningResponse { "domain": Domain; "provisioning": DomainProvisioning; } export interface DeleteResponse { "deleted": boolean; "slug"?: string; } export interface DomainDeleteResponse { "deleted": boolean; "hostname"?: string; } export interface HealthStatus { "status": string; "version": string; "backend": string; "db_latency_ms"?: number; } export interface ReadyStatus { "status": string; "version": string; "backend": string; "pending_migrations"?: Array; } export interface VersionInfo { "status": string; "version": string; "backend": string; "name"?: string; } export interface ErrorResponse { "error": string; "reason"?: string; } export interface ShortlinksApiClientOptions { /** 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; } export declare class ApiError extends Error { readonly status: number; readonly body: unknown; constructor(status: number, message: string, body: unknown); } export declare class ShortlinksApiClient { private readonly baseUrl; private readonly apiKey; private readonly fetchImpl; private readonly baseHeaders; constructor(options: ShortlinksApiClientOptions); private request; /** Liveness probe. */ getHealth(init?: RequestInit): Promise; /** Readiness probe (DB reachable and schema migrated). */ getReady(init?: RequestInit): Promise; /** List configured domains. */ listDomains(init?: RequestInit): Promise; /** Ensure the configured managed domain or request a custom-domain purchase through the Domains API. */ requestShortlinksDomain(body: AddDomainRequest, init?: RequestInit): Promise; /** Check availability and price through the Domains API. */ checkDomainAvailability(body: DomainAvailabilityRequest, init?: RequestInit): Promise; /** Delete a domain and all of its links and clicks. */ deleteDomain(hostname: string, init?: RequestInit): Promise; /** Read the projected Domains provisioning status without mutating it. */ getDomainProvisioning(hostname: string, init?: RequestInit): Promise; /** Refresh a Shortlinks domain projection from the Domains API. */ reconcileDomainProvisioning(hostname: string, init?: RequestInit): Promise; /** List shortlinks. */ listLinks(query?: { "domain"?: string; "active"?: boolean; "limit"?: number; }, init?: RequestInit): Promise; /** Create a shortlink. */ createLink(body: CreateLinkRequest, init?: RequestInit): Promise; /** Get a shortlink by slug. */ getLink(slug: string, query?: { "domain"?: string; }, init?: RequestInit): Promise; /** Delete a shortlink. */ deleteLink(slug: string, query?: { "domain"?: string; }, init?: RequestInit): Promise; /** Disable a shortlink. */ disableLink(slug: string, query?: { "domain"?: string; }, init?: RequestInit): Promise; /** Enable a shortlink. */ enableLink(slug: string, query?: { "domain"?: string; }, init?: RequestInit): Promise; /** Click stats for a shortlink. */ getLinkStats(slug: string, query?: { "domain"?: string; }, init?: RequestInit): Promise; /** Resolve a slug to its destination without recording a click. */ resolveLink(slug: string, query?: { "domain"?: string; }, init?: RequestInit): Promise; /** Total domains/links/clicks counts. */ getStats(init?: RequestInit): Promise; /** Service version and data backend. */ getVersion(init?: RequestInit): Promise; }