import * as plugins from '../plugins.js';
import type * as authInterfaces from '../data/auth.js';
import type { IDnsRecord, TDnsRecordType } from '../data/dns-record.js';
/**
 * Get all DNS records for a domain.
 */
export interface IReq_GetDnsRecords extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetDnsRecords> {
    method: 'getDnsRecords';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        domainId: string;
    };
    response: {
        records: IDnsRecord[];
    };
}
/**
 * Get a single DNS record by id.
 */
export interface IReq_GetDnsRecord extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetDnsRecord> {
    method: 'getDnsRecord';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        record: IDnsRecord | null;
    };
}
/**
 * Create a new DNS record.
 *
 * For dcrouter-hosted domains: registers the record with the embedded DnsServer.
 * For provider domains: pushes the record to the provider API.
 */
export interface IReq_CreateDnsRecord extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateDnsRecord> {
    method: 'createDnsRecord';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        domainId: string;
        name: string;
        type: TDnsRecordType;
        value: string;
        ttl?: number;
        proxied?: boolean;
    };
    response: {
        success: boolean;
        id?: string;
        message?: string;
    };
}
/**
 * Update a DNS record.
 */
export interface IReq_UpdateDnsRecord extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateDnsRecord> {
    method: 'updateDnsRecord';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
        name?: string;
        value?: string;
        ttl?: number;
        proxied?: boolean;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
/**
 * Delete a DNS record.
 */
export interface IReq_DeleteDnsRecord extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteDnsRecord> {
    method: 'deleteDnsRecord';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        id: string;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
