interface IDNSRecordResolver {
    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.
    event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record);
    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.
    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);
    // DNSZoneCleared is emitted whenever a given node's zone information is cleared.
    event DNSZoneCleared(bytes32 indexed node);

    /**
     * Obtain a DNS record.
     * @param node the namehash of the node for which to fetch the record
     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record
     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types
     * @return the DNS record in wire format if present, otherwise empty
     */
    function dnsRecord(bytes32 node, bytes32 name, uint16 resource) external view returns (bytes memory);
}
function dnsRecord(bytes32 node, bytes32 name, uint16 resource) external view returns (bytes memory);

/**
 * Obtain a DNS record.
 * @param node the namehash of the node for which to fetch the record
 * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record
 * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types
 * @return the DNS record in wire format if present, otherwise empty
 */