import { Application, Relations, ResourceUpdateInfo, Variable, VariableManager } from '@foxpage/foxpage-types';
import { ManagerBaseImpl } from '../common';
import { VariableInstance } from './variable';
/**
 * variable manager
 *
 * @export
 * @class VariableManager
 * @extends {ManagerBaseImpl}
 */
export declare class VariableManagerImpl extends ManagerBaseImpl<Variable> implements VariableManager {
    constructor(app: Application);
    /**
     * add variable to manager
     *
     * @param {Variable} variable
     */
    addVariable(variable: Variable): VariableInstance;
    /**
     * remove local variable via variableId
     *
     * @param {string[]} variableIds
     */
    removeVariables(variableIds: string[]): void;
    /**
     * get variable from local first, not exist will fetch from server
     *
     * @param {string} variableId
     * @return {*}  {(Promise<Variable | undefined>)}
     */
    getVariable(variableId: string): Promise<Variable | undefined>;
    /**
     * get variables
     *
     * @param {string[]} variableIds
     * @return {*}  {Promise<Variable[]>}
     */
    getVariables(variableIds: string[]): Promise<Variable[]>;
    /**
     * fetch application variable
     */
    freshVariables(variableIds: string[]): Promise<Variable[]>;
    protected onFetch(list: string[]): Promise<Variable[]>;
    protected onPull(data: ResourceUpdateInfo): Promise<void>;
    protected onStash(data: Relations): void;
    protected createInstance(data: Variable): Promise<VariableInstance>;
    private newVariable;
}
