/**
 * @packageDocumentation
 *
 * Provides a utility to retrieve the Obsidian `App` instance.
 */
import type { App } from 'obsidian';
/**
 * Wrapper type for storing shared state in the Obsidian app.
 */
export declare class ValueWrapper<T> {
    value: T;
    /**
     * Creates a new value wrapper.
     *
     * @param value - The value to wrap.
     */
    constructor(value: T);
}
/**
 * Retrieves the Obsidian `App` instance.
 *
 * @returns The `App` instance.
 * @throws Will throw an error if the `App` instance cannot be found.
 *
 * @see {@link https://github.com/mnaoumov/obsidian-codescript-toolkit?tab=readme-ov-file#obsidianapp-module}
 * @deprecated Usage of this function is not recommended. Pass the {@link App} instance to the function instead when possible.
 */
export declare function getApp(): App;
/**
 * Retrieves or creates a shared state wrapper object for a given key in the Obsidian app.
 *
 * @param app - The Obsidian app instance.
 * @param key - The key to store or retrieve the shared state.
 * @param defaultValue - The default value to use if the shared state does not exist.
 * @returns The ValueWrapper object that stores the shared state.
 */
export declare function getObsidianDevUtilsState<T>(app: App | null, key: string, defaultValue: T): ValueWrapper<T>;
