export function extractFrom(object: any, typeDefinition?: any): any;
/**
 *
 * attributes: essential values
 * properties: use defined values to support attribute value definitions
 */
export class Base {
    static name: string;
    static key: string;
    static attributes: {
        owner: {
            type: string;
            isKey: boolean;
            writable: boolean;
            mandatory: boolean;
            collection: boolean;
            constructor?: Function;
            private?: boolean;
            credential?: boolean;
            persistent?: boolean;
            depends?: string;
            description?: string;
            default?: any;
            set?: Function;
            get?: Function;
            toInternal?: Function;
            toExternal?: Function;
            values?: Set<any>;
            externalName?: string;
            env?: string[] | string;
            additionalValues?: object;
        };
        type: import("pacc").AttributeDefinition;
        name: import("pacc").AttributeDefinition;
        description: import("pacc").AttributeDefinition;
        priority: import("pacc").AttributeDefinition;
        directory: import("pacc").AttributeDefinition;
        packaging: import("pacc").AttributeDefinition;
        disabled: import("pacc").AttributeDefinition;
        tags: import("pacc").AttributeDefinition;
    };
    static get typeName(): string;
    static get typeDefinition(): typeof Base;
    static get typeFileName(): string;
    /**
     *
     * @param {Base} owner
     * @param {object} [data]
     */
    constructor(owner: Base, data?: object);
    owner: Base;
    description: any;
    name: string;
    extends: any[];
    _tags: Set<any>;
    _packaging: Set<any>;
    _directory: any;
    _finalize: any;
    _properties: any;
    ownerFor(attribute: any, data: any): any;
    read(data: any, type?: any): void;
    _applyExtends(): void;
    named(name: any): void;
    typeNamed(typeName: any, name: any): any;
    addObject(object: any): any;
    /**
     * Walk the object graph in some directions and deliver seen nodes.
     * @param {string[]} directions
     * @return {Iterable<Base>}
     */
    walkDirections(directions?: string[]): Iterable<Base>;
    _walkDirections(directions: any, withThis: any, seen: any): Generator<any, void, any>;
    forOwner(owner: any): any;
    isNamed(name: any): boolean;
    relativeName(name: any): any;
    get typeName(): any;
    /**
     *
     * @param {string} name
     * @returns {any}
     */
    extendedAttribute(name: string): any;
    /**
     * Retrive attribute values from an object.
     * @param {Function} [filter]
     * @return {Iterable<[string,any]>} values
     */
    propertyIterator(filter?: Function): Iterable<[string, any]>;
    /**
     * Retrive attribute values from an object.
     * @param {Function} [filter]
     * @return {Object} values
     */
    getProperties(filter?: Function): any;
    get root(): any;
    get location(): any;
    get host(): any;
    get network(): any;
    get domain(): any;
    get domains(): any;
    get localDomains(): any;
    get administratorEmail(): any;
    get locales(): any;
    get country(): any;
    get timezone(): any;
    set priority(value: number);
    /**
     * @return {number}
     */
    get priority(): number;
    _priority: number;
    get smtp(): any;
    /**
     *
     * @param {string} expression
     * @param {object} options
     * @returns {any}
     */
    expression(expression: string, options: object): any;
    get services(): any;
    /**
     *
     * @param {any} filter
     * @returns service with the highest priority
     */
    findService(filter: any): any;
    findServices(filter: any): any;
    set directory(directory: any);
    get directory(): any;
    get fullName(): any;
    get derivedPackaging(): any;
    set packaging(value: any);
    get packaging(): any;
    get outputs(): Set<typeof import("npm-pkgbuild").DEBIAN | typeof import("npm-pkgbuild").ARCH | typeof import("npm-pkgbuild").OCI | typeof import("npm-pkgbuild").DOCKER>;
    get packageData(): {
        sources: any[];
        outputs: Set<typeof import("npm-pkgbuild").DEBIAN | typeof import("npm-pkgbuild").ARCH | typeof import("npm-pkgbuild").OCI | typeof import("npm-pkgbuild").DOCKER>;
        properties: {
            name: string;
            access: string;
            dependencies: any;
            groups: any[];
        };
    };
    preparePackages(stagingDir: any): AsyncGenerator<never, void, unknown>;
    get templateTransformers(): any[];
    /**
     *
     * @param {*} entryProperties
     * @param {*} directoryProperties
     * @returns {AsyncIterable<ContentProvider>}
     */
    templateContent(entryProperties: any, directoryProperties: any): AsyncIterable<ContentProvider>;
    set tags(value: any);
    get tags(): any;
    get isTemplate(): any;
    valueFor(name: any, at: any): any;
    get properties(): any;
    /**
     *
     * @param {string} name
     * @returns {any}
     */
    property(name: string): any;
    /**
     *
     * @param {any} object
     * @returns {any}
     */
    expand(object: any): any;
    finalize(action: any): void;
    execFinalize(): void;
    _execFinalize(): void;
    traverse(visitor: any, ...args: any[]): Set<any>;
    _traverse(visited: any, visitor: any, ...args: any[]): boolean;
    error(...args: any[]): void;
    info(...args: any[]): void;
    toString(): string;
    toJSON(): any;
}
