import { Bundle, BundleValueService } from "./bundle";
import { VariableConfigPredefined } from "./config/variable-config";
import { VariableConfig } from "./variable";
import { Tap } from "../iotize-device";
export interface BundleConfigPredefined {
    id: number;
    name: string;
    converter?: any;
    variables: VariableConfigPredefined<any>[];
    [key: string]: any;
}
export declare class ObjectIterator<T> implements Iterator<T> {
    protected object: any;
    values: T[];
    index: number;
    next(): IteratorResult<T>;
    constructor(object: any);
}
export declare class BundleManager implements Iterable<Bundle<any>> {
    protected service: BundleValueService;
    protected variableService: VariableConfig.ServiceType;
    _bundles: {
        [key: string]: Bundle<any>;
    };
    [Symbol
        .iterator](): Iterator<Bundle<any>>;
    constructor(service: BundleValueService, variableService: VariableConfig.ServiceType);
    static createFromConfig(config: BundleConfigPredefined[], service: BundleValueService, variableService: VariableConfig.ServiceType): BundleManager;
    readonly bundles: {
        [key: string]: Bundle<any>;
    };
    getConfiguredBundles(variables: VariableConfig<any>[], tap: Tap): Promise<void>;
    getById(bundleId: number): Bundle<any> | undefined;
    get(identifier: string): Bundle<any>;
    add(identifier: string, configOrBundle: BundleConfigPredefined): this;
    addFromConfig(configs: BundleConfigPredefined | BundleConfigPredefined[]): this;
    bundle<DataType>(identifier: string): Bundle<DataType>;
    protected _createBundle<BundleType>(config: BundleConfigPredefined): Bundle<BundleType>;
    clear(): void;
}
