export function serviceAddresses(sources: any, filter: any, addressType?: string, addressFilter?: (a: any) => boolean): any[];
export function serviceEndpoints(sources: any, filter: any, endpointFilter: any): any[];
export namespace endpointProperties {
    export namespace port {
        let type: string;
        let collection: boolean;
        let writeable: boolean;
    }
    export namespace protocol {
        let type_1: string;
        export { type_1 as type };
        let collection_1: boolean;
        export { collection_1 as collection };
        let writeable_1: boolean;
        export { writeable_1 as writeable };
        export let values: string[];
    }
    export namespace type_2 {
        let type_3: string;
        export { type_3 as type };
        let collection_2: boolean;
        export { collection_2 as collection };
        let writeable_2: boolean;
        export { writeable_2 as writeable };
    }
    export { type_2 as type };
    export namespace tls {
        let type_4: string;
        export { type_4 as type };
        let collection_3: boolean;
        export { collection_3 as collection };
        let writeable_3: boolean;
        export { writeable_3 as writeable };
        let _default: boolean;
        export { _default as default };
    }
}
export namespace EndpointTypeDefinition {
    export let name: string;
    export let owners: string[];
    export let priority: number;
    export let specializations: {};
    export { endpointProperties as properties };
}
export namespace ServiceTypeDefinition {
    let name_1: string;
    export { name_1 as name };
    let owners_1: string[];
    export { owners_1 as owners };
    let priority_1: number;
    export { priority_1 as priority };
    let _extends: {
        name: string;
        owners: any[];
        properties: {
            owner: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            type: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            name: {
                type: string;
                collection: boolean;
                identifier: boolean;
                writeable: boolean;
            };
            description: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            priority: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            directory: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            packaging: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            tags: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
        };
    };
    export { _extends as extends };
    let specializations_1: {};
    export { specializations_1 as specializations };
    export function factoryFor(owner: any, value: any): any;
    export let properties: {
        ipAddresses: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        alias: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        weight: {
            type: string;
            collection: boolean;
            writeable: boolean;
            default: number;
        };
        systemd: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        port: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        protocol: {
            type: string;
            collection: boolean;
            writeable: boolean;
            values: string[];
        };
        type: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        tls: {
            type: string;
            collection: boolean;
            writeable: boolean;
            default: boolean;
        };
        hostName: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        cidrAddresses: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        cidrAddress: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        addresses: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
        address: {
            type: string;
            collection: boolean;
            writeable: boolean;
        };
    };
}
export class Service extends Base {
    static get typeDefinition(): {
        name: string;
        owners: string[];
        priority: number;
        extends: {
            name: string;
            owners: any[];
            properties: {
                owner: {
                    type: string;
                    collection: boolean;
                    writeable: boolean;
                };
                type: {
                    type: string;
                    collection: boolean;
                    writeable: boolean;
                };
                name: {
                    type: string;
                    collection: boolean;
                    identifier: boolean;
                    writeable: boolean;
                };
                description: {
                    type: string;
                    collection: boolean;
                    writeable: boolean;
                };
                priority: {
                    type: string;
                    collection: boolean;
                    writeable: boolean;
                };
                directory: {
                    type: string;
                    collection: boolean;
                    writeable: boolean;
                };
                packaging: {
                    type: string;
                    collection: boolean;
                    writeable: boolean;
                };
                tags: {
                    type: string;
                    collection: boolean;
                    writeable: boolean;
                };
            };
        };
        specializations: {};
        factoryFor(owner: any, value: any): any;
        properties: {
            ipAddresses: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            alias: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            weight: {
                type: string;
                collection: boolean;
                writeable: boolean;
                default: number;
            };
            systemd: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            port: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            protocol: {
                type: string;
                collection: boolean;
                writeable: boolean;
                values: string[];
            };
            type: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            tls: {
                type: string;
                collection: boolean;
                writeable: boolean;
                default: boolean;
            };
            hostName: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            cidrAddresses: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            cidrAddress: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            addresses: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
            address: {
                type: string;
                collection: boolean;
                writeable: boolean;
            };
        };
    };
    _alias: any;
    _weight: any;
    _type: any;
    _port: any;
    _ipAddresses: any;
    _systemd: any;
    _extends: any[];
    set extends(value: any[]);
    get extends(): any[];
    get domainName(): any;
    get ipAddressOrDomainName(): any;
    get addresses(): any;
    get address(): any;
    set ipAddresses(value: any);
    get networks(): any;
    endpoints(filter: any): any[];
    set alias(value: any);
    get alias(): any;
    set port(value: any);
    get port(): any;
    get protocol(): any;
    get tls(): any;
    set weight(value: any);
    get weight(): any;
    set type(value: any);
    get type(): any;
    get systemdServices(): any;
    dnsRecordsForDomainName(domainName: any, hasSVRRecords: any): {
        type: any;
        key: any;
        values: any[];
        toString: (maxKeyLength?: number, ttl?: string) => string;
    }[];
}
export function sortByPriority(a: any, b: any): number;
import { Base } from "pmcf";
