/**
* Domain availability search, utilities, and the classified .ro web
* directory. `check` and `example` work anonymously (higher rate limits
* with an API key).
*/
import type { Client } from './client.js';
import * as http from './http.js';
import type { Body, Query } from './types.js';
/** GET /domains/check — Check domain availability. Anonymous allowed. */
export const check = (client: Client, domain: string) => http.get(client, '/domains/check', { query: { domain } });
/** GET /domains/info — Domain information utilities. */
export const info = (client: Client, domain: string, query?: Omit<Query<'/domains/info', 'get'>, 'domain'>) =>
http.get(client, '/domains/info', { query: { ...query, domain } });
/** GET /domains/preflight — Route a domain to the right inbound operation. */
export const preflight = (client: Client, domain: string) =>
http.get(client, '/domains/preflight', { query: { domain } });
/** GET /domains/dns-snapshot — Faithful copy of a domain's live DNS. */
export const dnsSnapshot = (
client: Client,
domain: string,
query?: Omit<Query<'/domains/dns-snapshot', 'get'>, 'domain'>,
) => http.get(client, '/domains/dns-snapshot', { query: { ...query, domain } });
/** GET /domains/search — Suggest available domain names. */
export const search = (client: Client, q: string, query?: Omit<Query<'/domains/search', 'get'>, 'q'>) =>
http.get(client, '/domains/search', { query: { ...query, q } });
/** POST /domains/search — Suggest available domain names from a long description. */
export const searchDescriptions = (client: Client, body: Body<'/domains/search', 'post'>) =>
http.post(client, '/domains/search', { body });
/** GET /domains/example — Example .ro domain. Anonymous allowed. */
export const example = (client: Client) => http.get(client, '/domains/example');
/** GET /domains/directory — Browse the .ro web directory (cursor-paginated). */
export const directory = (client: Client, query?: Query<'/domains/directory', 'get'>) =>
http.get(client, '/domains/directory', { query });
/** Every directory entry matching the filters, following cursor pagination. */
export const directoryAll = (client: Client, query?: Query<'/domains/directory', 'get'>) =>
http.paginate(client, '/domains/directory', 'entries', { query });
/** GET /domains/directory/{domain} — Directory entry for a domain. */
export const directoryEntry = (client: Client, domain: string) =>
http.get(client, '/domains/directory/{domain}', { params: { domain } });