@aoxborrow/registrar-client 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -32,14 +32,27 @@ declare const CORE_FEATURES: readonly ["testConnection", "listDomains", "getDoma
32
32
  declare const EXTENDED_FEATURES: readonly ["getAuthCode", "getDnssec", "disableDnssec", "getEmailForwarding", "setEmailForwarding", "getDomainForwarding", "setDomainForwarding"];
33
33
  declare const ALL_FEATURES: readonly ["testConnection", "listDomains", "getDomain", "checkAvailability", "getPricing", "registerDomain", "renewDomain", "setAutoRenew", "transferIn", "updateNameservers", "getNameservers", "lockDomain", "unlockDomain", "setPrivacy", "getContacts", "updateContacts", "getDnsRecords", "setDnsRecords", "getAuthCode", "getDnssec", "disableDnssec", "getEmailForwarding", "setEmailForwarding", "getDomainForwarding", "setDomainForwarding"];
34
34
  declare function isCoreFeature(feature: RegistrarFeature): boolean;
35
+ declare const FEATURE_CALLS: Record<RegistrarFeature, {
36
+ intent: 'read' | 'write';
37
+ optsIndex: number;
38
+ }>;
35
39
 
36
40
  interface RegistrarClientOptions {
37
41
  timeout: number;
38
42
  retries: number;
39
43
  backoff: number;
40
44
  signal?: AbortSignal;
45
+ fetch?: typeof globalThis.fetch;
46
+ }
47
+ type RequestIntent = 'read' | 'write';
48
+ interface FeatureCall {
49
+ intent: RequestIntent;
50
+ feature?: string;
51
+ outcomeUnknown?: Error;
52
+ }
53
+ interface RequestOptions extends Partial<RegistrarClientOptions> {
54
+ call?: FeatureCall;
41
55
  }
42
- type RequestOptions = Partial<RegistrarClientOptions>;
43
56
  interface ListDomainsOptions extends RequestOptions {
44
57
  search?: string;
45
58
  detailed?: boolean;
@@ -55,6 +68,7 @@ interface ConnectionResult {
55
68
  interface OperationResult {
56
69
  success: boolean;
57
70
  message: string;
71
+ outcome?: 'unknown';
58
72
  }
59
73
  interface ConfigField {
60
74
  name: string;
@@ -126,6 +140,7 @@ interface DomainAvailability {
126
140
  available: boolean;
127
141
  premium?: boolean;
128
142
  price?: number;
143
+ renewalPrice?: number;
129
144
  currency?: string;
130
145
  period?: number;
131
146
  }
@@ -276,8 +291,22 @@ declare class TimeoutError extends RetryableRegistrarError {
276
291
  }
277
292
  declare class ConnectionError extends RetryableRegistrarError {
278
293
  status: number;
279
- constructor(message: string);
294
+ notSent: boolean;
295
+ constructor(message: string, details?: {
296
+ notSent?: boolean;
297
+ });
280
298
  }
299
+ declare class OutcomeUnknownError extends RegistrarError {
300
+ status: number;
301
+ feature?: string;
302
+ cause?: unknown;
303
+ constructor(message: string, details?: {
304
+ feature?: string;
305
+ cause?: unknown;
306
+ });
307
+ }
308
+ declare function markNotSent<T>(error: T): T;
309
+ declare function wasNotSent(error: unknown): boolean;
281
310
  declare class AuthenticationError extends RegistrarError {
282
311
  status: number;
283
312
  constructor(message: string);
@@ -325,7 +354,10 @@ interface HttpClientConfig {
325
354
  baseUrl: string;
326
355
  headers?: Record<string, string>;
327
356
  options: RegistrarClientOptions;
357
+ safeMethods?: readonly string[];
358
+ rateLimitFallbackSeconds?: number;
328
359
  }
360
+ declare const REST_SAFE_METHODS: readonly string[];
329
361
  interface RequestConfig {
330
362
  method?: string;
331
363
  path: string;
@@ -336,6 +368,8 @@ interface RequestConfig {
336
368
  retries?: number;
337
369
  backoff?: number;
338
370
  signal?: AbortSignal;
371
+ fetch?: typeof globalThis.fetch;
372
+ call?: FeatureCall;
339
373
  }
340
374
  declare class HttpClient {
341
375
  protected config: HttpClientConfig;
@@ -343,6 +377,7 @@ declare class HttpClient {
343
377
  request<T = unknown>(req: RequestConfig): Promise<T>;
344
378
  requestText(req: RequestConfig): Promise<string>;
345
379
  protected withRetries<T>(req: RequestConfig, attemptFn: () => Promise<T>): Promise<T>;
380
+ protected intentOf(req: RequestConfig): 'read' | 'write';
346
381
  protected buildUrl(req: RequestConfig): string;
347
382
  protected send(req: RequestConfig): Promise<string>;
348
383
  protected toStatusError(response: Response, url: string): Promise<RegistrarError>;
@@ -360,10 +395,12 @@ declare abstract class BaseRegistrar implements Registrar {
360
395
  readonly environment: RegistrarEnvironment;
361
396
  static readonly extendedFeatures: readonly RegistrarFeature[];
362
397
  static get features(): readonly RegistrarFeature[];
398
+ static readonly safeMethods: readonly string[];
363
399
  get features(): readonly RegistrarFeature[];
364
400
  supports(feature: RegistrarFeature): boolean;
365
401
  readonly requiresNameserversFetch: boolean;
366
402
  constructor(credentials: RegistrarCredentials, httpConfig: Omit<HttpClientConfig, 'options'>, options?: RegistrarOptions);
403
+ private threadFeatureCalls;
367
404
  testConnection(_opts?: RequestOptions): Promise<ConnectionResult>;
368
405
  listDomains(_opts?: ListDomainsOptions): Promise<Domain[]>;
369
406
  renewDomain(_domainName: string, _years?: number, _opts?: RequestOptions): Promise<OperationResult>;
@@ -394,6 +431,7 @@ declare abstract class BaseRegistrar implements Registrar {
394
431
 
395
432
  declare class CloudflareRegistrar extends BaseRegistrar {
396
433
  readonly name = "cloudflare";
434
+ static readonly safeMethods: readonly string[];
397
435
  static readonly displayName = "Cloudflare";
398
436
  static readonly website = "cloudflare.com";
399
437
  static readonly helpText: string;
@@ -438,6 +476,7 @@ declare class CloudflareRegistrar extends BaseRegistrar {
438
476
 
439
477
  declare class DynadotRegistrar extends BaseRegistrar {
440
478
  readonly name = "dynadot";
479
+ static readonly safeMethods: readonly string[];
441
480
  static readonly displayName = "Dynadot";
442
481
  static readonly website = "dynadot.com";
443
482
  static readonly helpText: string;
@@ -482,6 +521,7 @@ declare class DynadotRegistrar extends BaseRegistrar {
482
521
 
483
522
  declare class GandiRegistrar extends BaseRegistrar {
484
523
  readonly name = "gandi";
524
+ static readonly safeMethods: readonly string[];
485
525
  static readonly displayName = "Gandi.net";
486
526
  static readonly website = "gandi.net";
487
527
  static readonly helpText: string;
@@ -520,6 +560,7 @@ declare class GandiRegistrar extends BaseRegistrar {
520
560
 
521
561
  declare class GoDaddyRegistrar extends BaseRegistrar {
522
562
  readonly name = "godaddy";
563
+ static readonly safeMethods: readonly string[];
523
564
  static readonly displayName = "GoDaddy";
524
565
  static readonly website = "godaddy.com";
525
566
  static readonly helpText: string;
@@ -568,6 +609,7 @@ declare class GoDaddyRegistrar extends BaseRegistrar {
568
609
 
569
610
  declare class NameBrightRegistrar extends BaseRegistrar {
570
611
  readonly name = "namebright";
612
+ static readonly safeMethods: readonly string[];
571
613
  static readonly displayName = "NameBright";
572
614
  static readonly website = "namebright.com";
573
615
  static readonly helpText: string;
@@ -640,6 +682,7 @@ declare class NamecheapRegistrar extends BaseRegistrar {
640
682
 
641
683
  declare class NamecomRegistrar extends BaseRegistrar {
642
684
  readonly name = "namecom";
685
+ static readonly safeMethods: readonly string[];
643
686
  static readonly displayName = "Name.com";
644
687
  static readonly website = "name.com";
645
688
  static readonly supportsSandbox = true;
@@ -749,6 +792,7 @@ declare class PorkbunRegistrar extends BaseRegistrar {
749
792
 
750
793
  declare class SpaceshipRegistrar extends BaseRegistrar {
751
794
  readonly name = "spaceship";
795
+ static readonly safeMethods: readonly string[];
752
796
  static readonly displayName = "Spaceship";
753
797
  static readonly website = "spaceship.com";
754
798
  static readonly helpText: string;
@@ -819,5 +863,6 @@ declare function backoffDelay(backoff: number, attempt: number): number;
819
863
  declare function parseDate(value: Date | string | number | null | undefined): Date | null;
820
864
  declare function normalizeNameservers(nameservers: unknown): string[];
821
865
  declare function createDomain(data?: DomainInput): Domain;
866
+ declare function asRead<T extends RequestOptions>(opts?: T): T;
822
867
 
823
- export { ALL_FEATURES, AbortError, AuthenticationError, AuthorizationError, BaseRegistrar, CORE_FEATURES, CloudflareRegistrar, type ConfigField, ConfigurationError, ConnectionError, type ConnectionResult, ConsentRequiredError, type Contact, type ContactSet, DEFAULT_OPTIONS, type DnsRecord, type DnssecStatus, type Domain, type DomainAvailability, type DomainForward, type DomainForwardType, type DomainInput, type DomainSource, type DsRecord, DynadotRegistrar, EXTENDED_FEATURES, type EmailForward, Feature, GandiRegistrar, GoDaddyRegistrar, HttpClient, type HttpClientConfig, InvalidResponseError, type ListDomainsOptions, MASKED_FORWARD_UNSUPPORTED, NameBrightRegistrar, NameSiloRegistrar, NamecheapRegistrar, NamecomRegistrar, NotFoundError, NotImplementedError, type OperationResult, ParsingError, PorkbunRegistrar, type PortfolioError, type PortfolioResult, RateLimitError, type RegisterDomainInput, type Registrar, RegistrarClient, type RegistrarClientOptions, type RegistrarConstructor, type RegistrarCredentials, type RegistrarEnvironment, RegistrarError, type RegistrarFeature, type RegistrarName, type RegistrarOptions, type RegistrationConsent, type RequestConfig, type RequestOptions, RetryableRegistrarError, type SettableDomainForward, SpaceshipRegistrar, TimeoutError, type TldPricing, type TransferDomainInput, USER_AGENT, backoffDelay, createDomain, createRegistrar, ensureArray, filterDomains, isCoreFeature, listPortfolio, normalizeDomain, normalizeNameservers, parseDate, parseXml, registrars, requireConsent, selectBaseUrl, settableForwards, sleep, toRegistrarError };
868
+ export { ALL_FEATURES, AbortError, AuthenticationError, AuthorizationError, BaseRegistrar, CORE_FEATURES, CloudflareRegistrar, type ConfigField, ConfigurationError, ConnectionError, type ConnectionResult, ConsentRequiredError, type Contact, type ContactSet, DEFAULT_OPTIONS, type DnsRecord, type DnssecStatus, type Domain, type DomainAvailability, type DomainForward, type DomainForwardType, type DomainInput, type DomainSource, type DsRecord, DynadotRegistrar, EXTENDED_FEATURES, type EmailForward, FEATURE_CALLS, Feature, type FeatureCall, GandiRegistrar, GoDaddyRegistrar, HttpClient, type HttpClientConfig, InvalidResponseError, type ListDomainsOptions, MASKED_FORWARD_UNSUPPORTED, NameBrightRegistrar, NameSiloRegistrar, NamecheapRegistrar, NamecomRegistrar, NotFoundError, NotImplementedError, type OperationResult, OutcomeUnknownError, ParsingError, PorkbunRegistrar, type PortfolioError, type PortfolioResult, REST_SAFE_METHODS, RateLimitError, type RegisterDomainInput, type Registrar, RegistrarClient, type RegistrarClientOptions, type RegistrarConstructor, type RegistrarCredentials, type RegistrarEnvironment, RegistrarError, type RegistrarFeature, type RegistrarName, type RegistrarOptions, type RegistrationConsent, type RequestConfig, type RequestIntent, type RequestOptions, RetryableRegistrarError, type SettableDomainForward, SpaceshipRegistrar, TimeoutError, type TldPricing, type TransferDomainInput, USER_AGENT, asRead, backoffDelay, createDomain, createRegistrar, ensureArray, filterDomains, isCoreFeature, listPortfolio, markNotSent, normalizeDomain, normalizeNameservers, parseDate, parseXml, registrars, requireConsent, selectBaseUrl, settableForwards, sleep, toRegistrarError, wasNotSent };
package/dist/index.d.ts CHANGED
@@ -32,14 +32,27 @@ declare const CORE_FEATURES: readonly ["testConnection", "listDomains", "getDoma
32
32
  declare const EXTENDED_FEATURES: readonly ["getAuthCode", "getDnssec", "disableDnssec", "getEmailForwarding", "setEmailForwarding", "getDomainForwarding", "setDomainForwarding"];
33
33
  declare const ALL_FEATURES: readonly ["testConnection", "listDomains", "getDomain", "checkAvailability", "getPricing", "registerDomain", "renewDomain", "setAutoRenew", "transferIn", "updateNameservers", "getNameservers", "lockDomain", "unlockDomain", "setPrivacy", "getContacts", "updateContacts", "getDnsRecords", "setDnsRecords", "getAuthCode", "getDnssec", "disableDnssec", "getEmailForwarding", "setEmailForwarding", "getDomainForwarding", "setDomainForwarding"];
34
34
  declare function isCoreFeature(feature: RegistrarFeature): boolean;
35
+ declare const FEATURE_CALLS: Record<RegistrarFeature, {
36
+ intent: 'read' | 'write';
37
+ optsIndex: number;
38
+ }>;
35
39
 
36
40
  interface RegistrarClientOptions {
37
41
  timeout: number;
38
42
  retries: number;
39
43
  backoff: number;
40
44
  signal?: AbortSignal;
45
+ fetch?: typeof globalThis.fetch;
46
+ }
47
+ type RequestIntent = 'read' | 'write';
48
+ interface FeatureCall {
49
+ intent: RequestIntent;
50
+ feature?: string;
51
+ outcomeUnknown?: Error;
52
+ }
53
+ interface RequestOptions extends Partial<RegistrarClientOptions> {
54
+ call?: FeatureCall;
41
55
  }
42
- type RequestOptions = Partial<RegistrarClientOptions>;
43
56
  interface ListDomainsOptions extends RequestOptions {
44
57
  search?: string;
45
58
  detailed?: boolean;
@@ -55,6 +68,7 @@ interface ConnectionResult {
55
68
  interface OperationResult {
56
69
  success: boolean;
57
70
  message: string;
71
+ outcome?: 'unknown';
58
72
  }
59
73
  interface ConfigField {
60
74
  name: string;
@@ -126,6 +140,7 @@ interface DomainAvailability {
126
140
  available: boolean;
127
141
  premium?: boolean;
128
142
  price?: number;
143
+ renewalPrice?: number;
129
144
  currency?: string;
130
145
  period?: number;
131
146
  }
@@ -276,8 +291,22 @@ declare class TimeoutError extends RetryableRegistrarError {
276
291
  }
277
292
  declare class ConnectionError extends RetryableRegistrarError {
278
293
  status: number;
279
- constructor(message: string);
294
+ notSent: boolean;
295
+ constructor(message: string, details?: {
296
+ notSent?: boolean;
297
+ });
280
298
  }
299
+ declare class OutcomeUnknownError extends RegistrarError {
300
+ status: number;
301
+ feature?: string;
302
+ cause?: unknown;
303
+ constructor(message: string, details?: {
304
+ feature?: string;
305
+ cause?: unknown;
306
+ });
307
+ }
308
+ declare function markNotSent<T>(error: T): T;
309
+ declare function wasNotSent(error: unknown): boolean;
281
310
  declare class AuthenticationError extends RegistrarError {
282
311
  status: number;
283
312
  constructor(message: string);
@@ -325,7 +354,10 @@ interface HttpClientConfig {
325
354
  baseUrl: string;
326
355
  headers?: Record<string, string>;
327
356
  options: RegistrarClientOptions;
357
+ safeMethods?: readonly string[];
358
+ rateLimitFallbackSeconds?: number;
328
359
  }
360
+ declare const REST_SAFE_METHODS: readonly string[];
329
361
  interface RequestConfig {
330
362
  method?: string;
331
363
  path: string;
@@ -336,6 +368,8 @@ interface RequestConfig {
336
368
  retries?: number;
337
369
  backoff?: number;
338
370
  signal?: AbortSignal;
371
+ fetch?: typeof globalThis.fetch;
372
+ call?: FeatureCall;
339
373
  }
340
374
  declare class HttpClient {
341
375
  protected config: HttpClientConfig;
@@ -343,6 +377,7 @@ declare class HttpClient {
343
377
  request<T = unknown>(req: RequestConfig): Promise<T>;
344
378
  requestText(req: RequestConfig): Promise<string>;
345
379
  protected withRetries<T>(req: RequestConfig, attemptFn: () => Promise<T>): Promise<T>;
380
+ protected intentOf(req: RequestConfig): 'read' | 'write';
346
381
  protected buildUrl(req: RequestConfig): string;
347
382
  protected send(req: RequestConfig): Promise<string>;
348
383
  protected toStatusError(response: Response, url: string): Promise<RegistrarError>;
@@ -360,10 +395,12 @@ declare abstract class BaseRegistrar implements Registrar {
360
395
  readonly environment: RegistrarEnvironment;
361
396
  static readonly extendedFeatures: readonly RegistrarFeature[];
362
397
  static get features(): readonly RegistrarFeature[];
398
+ static readonly safeMethods: readonly string[];
363
399
  get features(): readonly RegistrarFeature[];
364
400
  supports(feature: RegistrarFeature): boolean;
365
401
  readonly requiresNameserversFetch: boolean;
366
402
  constructor(credentials: RegistrarCredentials, httpConfig: Omit<HttpClientConfig, 'options'>, options?: RegistrarOptions);
403
+ private threadFeatureCalls;
367
404
  testConnection(_opts?: RequestOptions): Promise<ConnectionResult>;
368
405
  listDomains(_opts?: ListDomainsOptions): Promise<Domain[]>;
369
406
  renewDomain(_domainName: string, _years?: number, _opts?: RequestOptions): Promise<OperationResult>;
@@ -394,6 +431,7 @@ declare abstract class BaseRegistrar implements Registrar {
394
431
 
395
432
  declare class CloudflareRegistrar extends BaseRegistrar {
396
433
  readonly name = "cloudflare";
434
+ static readonly safeMethods: readonly string[];
397
435
  static readonly displayName = "Cloudflare";
398
436
  static readonly website = "cloudflare.com";
399
437
  static readonly helpText: string;
@@ -438,6 +476,7 @@ declare class CloudflareRegistrar extends BaseRegistrar {
438
476
 
439
477
  declare class DynadotRegistrar extends BaseRegistrar {
440
478
  readonly name = "dynadot";
479
+ static readonly safeMethods: readonly string[];
441
480
  static readonly displayName = "Dynadot";
442
481
  static readonly website = "dynadot.com";
443
482
  static readonly helpText: string;
@@ -482,6 +521,7 @@ declare class DynadotRegistrar extends BaseRegistrar {
482
521
 
483
522
  declare class GandiRegistrar extends BaseRegistrar {
484
523
  readonly name = "gandi";
524
+ static readonly safeMethods: readonly string[];
485
525
  static readonly displayName = "Gandi.net";
486
526
  static readonly website = "gandi.net";
487
527
  static readonly helpText: string;
@@ -520,6 +560,7 @@ declare class GandiRegistrar extends BaseRegistrar {
520
560
 
521
561
  declare class GoDaddyRegistrar extends BaseRegistrar {
522
562
  readonly name = "godaddy";
563
+ static readonly safeMethods: readonly string[];
523
564
  static readonly displayName = "GoDaddy";
524
565
  static readonly website = "godaddy.com";
525
566
  static readonly helpText: string;
@@ -568,6 +609,7 @@ declare class GoDaddyRegistrar extends BaseRegistrar {
568
609
 
569
610
  declare class NameBrightRegistrar extends BaseRegistrar {
570
611
  readonly name = "namebright";
612
+ static readonly safeMethods: readonly string[];
571
613
  static readonly displayName = "NameBright";
572
614
  static readonly website = "namebright.com";
573
615
  static readonly helpText: string;
@@ -640,6 +682,7 @@ declare class NamecheapRegistrar extends BaseRegistrar {
640
682
 
641
683
  declare class NamecomRegistrar extends BaseRegistrar {
642
684
  readonly name = "namecom";
685
+ static readonly safeMethods: readonly string[];
643
686
  static readonly displayName = "Name.com";
644
687
  static readonly website = "name.com";
645
688
  static readonly supportsSandbox = true;
@@ -749,6 +792,7 @@ declare class PorkbunRegistrar extends BaseRegistrar {
749
792
 
750
793
  declare class SpaceshipRegistrar extends BaseRegistrar {
751
794
  readonly name = "spaceship";
795
+ static readonly safeMethods: readonly string[];
752
796
  static readonly displayName = "Spaceship";
753
797
  static readonly website = "spaceship.com";
754
798
  static readonly helpText: string;
@@ -819,5 +863,6 @@ declare function backoffDelay(backoff: number, attempt: number): number;
819
863
  declare function parseDate(value: Date | string | number | null | undefined): Date | null;
820
864
  declare function normalizeNameservers(nameservers: unknown): string[];
821
865
  declare function createDomain(data?: DomainInput): Domain;
866
+ declare function asRead<T extends RequestOptions>(opts?: T): T;
822
867
 
823
- export { ALL_FEATURES, AbortError, AuthenticationError, AuthorizationError, BaseRegistrar, CORE_FEATURES, CloudflareRegistrar, type ConfigField, ConfigurationError, ConnectionError, type ConnectionResult, ConsentRequiredError, type Contact, type ContactSet, DEFAULT_OPTIONS, type DnsRecord, type DnssecStatus, type Domain, type DomainAvailability, type DomainForward, type DomainForwardType, type DomainInput, type DomainSource, type DsRecord, DynadotRegistrar, EXTENDED_FEATURES, type EmailForward, Feature, GandiRegistrar, GoDaddyRegistrar, HttpClient, type HttpClientConfig, InvalidResponseError, type ListDomainsOptions, MASKED_FORWARD_UNSUPPORTED, NameBrightRegistrar, NameSiloRegistrar, NamecheapRegistrar, NamecomRegistrar, NotFoundError, NotImplementedError, type OperationResult, ParsingError, PorkbunRegistrar, type PortfolioError, type PortfolioResult, RateLimitError, type RegisterDomainInput, type Registrar, RegistrarClient, type RegistrarClientOptions, type RegistrarConstructor, type RegistrarCredentials, type RegistrarEnvironment, RegistrarError, type RegistrarFeature, type RegistrarName, type RegistrarOptions, type RegistrationConsent, type RequestConfig, type RequestOptions, RetryableRegistrarError, type SettableDomainForward, SpaceshipRegistrar, TimeoutError, type TldPricing, type TransferDomainInput, USER_AGENT, backoffDelay, createDomain, createRegistrar, ensureArray, filterDomains, isCoreFeature, listPortfolio, normalizeDomain, normalizeNameservers, parseDate, parseXml, registrars, requireConsent, selectBaseUrl, settableForwards, sleep, toRegistrarError };
868
+ export { ALL_FEATURES, AbortError, AuthenticationError, AuthorizationError, BaseRegistrar, CORE_FEATURES, CloudflareRegistrar, type ConfigField, ConfigurationError, ConnectionError, type ConnectionResult, ConsentRequiredError, type Contact, type ContactSet, DEFAULT_OPTIONS, type DnsRecord, type DnssecStatus, type Domain, type DomainAvailability, type DomainForward, type DomainForwardType, type DomainInput, type DomainSource, type DsRecord, DynadotRegistrar, EXTENDED_FEATURES, type EmailForward, FEATURE_CALLS, Feature, type FeatureCall, GandiRegistrar, GoDaddyRegistrar, HttpClient, type HttpClientConfig, InvalidResponseError, type ListDomainsOptions, MASKED_FORWARD_UNSUPPORTED, NameBrightRegistrar, NameSiloRegistrar, NamecheapRegistrar, NamecomRegistrar, NotFoundError, NotImplementedError, type OperationResult, OutcomeUnknownError, ParsingError, PorkbunRegistrar, type PortfolioError, type PortfolioResult, REST_SAFE_METHODS, RateLimitError, type RegisterDomainInput, type Registrar, RegistrarClient, type RegistrarClientOptions, type RegistrarConstructor, type RegistrarCredentials, type RegistrarEnvironment, RegistrarError, type RegistrarFeature, type RegistrarName, type RegistrarOptions, type RegistrationConsent, type RequestConfig, type RequestIntent, type RequestOptions, RetryableRegistrarError, type SettableDomainForward, SpaceshipRegistrar, TimeoutError, type TldPricing, type TransferDomainInput, USER_AGENT, asRead, backoffDelay, createDomain, createRegistrar, ensureArray, filterDomains, isCoreFeature, listPortfolio, markNotSent, normalizeDomain, normalizeNameservers, parseDate, parseXml, registrars, requireConsent, selectBaseUrl, settableForwards, sleep, toRegistrarError, wasNotSent };