import { ApplicationState, ApplicationDataEntry } from '../AdaptableState/ApplicationState';
/**
 * Provides run-time access to the Application Module
 */
export interface ApplicationApi {
    /**
     * Retrieves Application section from Adaptable State
     */
    getApplicationState(): ApplicationState;
    /**
     * Retrieves all Key Value Pairs in Application state
     */
    getApplicationDataEntries(): ApplicationDataEntry[];
    /**
     * Adds new Application Data Entry
     *
     * @param applicationDataEntry Application Data Entry to add
     */
    addApplicationDataEntry(applicationDataEntry: ApplicationDataEntry): void;
    /**
     * Creates new Application Data Entry with given Key and Value
     * @param key the Application Data Entry key
     * @param value the Application Data Entry value
     */
    createApplicationDataEntry(key: string, value: any): void;
    /**
     * Edits given Application Data Entry
     *
     * @param applicationDataEntry Application Data Entry to edit
     */
    editApplicationDataEntry(applicationDataEntry: ApplicationDataEntry): void;
    /**
     * Deletes given Application Data Entry
     *
     * @param applicationDataEntry Application Data Entry to delete
     */
    deleteApplicationDataEntry(applicationDataEntry: ApplicationDataEntry): void;
    /**
     * Gets Application Data Entry with given key
     *
     * @param key the Key of the Application Data Entry to retrieve
     */
    getApplicationDataEntryByKey(key: string): ApplicationDataEntry | undefined;
    /**
     * Gets Application Data Entry with given value
     *
     * @param value the Value of the Application Data Entry to retrieve
     */
    getApplicationDataEntriesByValue(value: any): ApplicationDataEntry[];
}
