/**
 * A state object that maintains the current value and the pending-commit delta.
 *
 * This class provides app-level, user-level, and session-level state management
 * with prefixes to distinguish between them.
 */
export declare class State {
    /**
     * Prefix for app-level state keys.
     */
    static readonly APP_PREFIX = "app:";
    /**
     * Prefix for user-level state keys.
     */
    static readonly USER_PREFIX = "user:";
    /**
     * Prefix for temporary state keys.
     */
    static readonly TEMP_PREFIX = "temp:";
    /**
     * The current value of the state.
     */
    private _value;
    /**
     * The delta change to the current value that hasn't been committed.
     */
    private _delta;
    /**
     * Creates a new State instance.
     *
     * @param value The current value of the state
     * @param delta The delta change to the current value that hasn't been committed
     */
    constructor(value?: Record<string, unknown>, delta?: Record<string, unknown>);
    /**
     * Creates a new state from a plain object.
     *
     * @param obj The object to create the state from
     * @returns A new state instance
     */
    static fromObject(obj?: Record<string, unknown>): State;
    /**
     * Sets a value in the state.
     *
     * @param key The key to set
     * @param value The value to set
     */
    set(key: string, value: unknown): void;
    /**
     * Gets a value from the state.
     *
     * @param key The key to get
     * @returns The value for the key or undefined if not found
     */
    get(key: string): unknown;
    /**
     * Checks if the state has a value for the given key.
     *
     * @param key The key to check
     * @returns Whether the state has a value for the key
     */
    hasValue(key: string): boolean;
    /**
     * Checks if the state has any values.
     *
     * @returns Whether the state has any values
     */
    hasAny(): boolean;
    /**
     * Checks if the state has any pending changes.
     *
     * @returns Whether the state has any pending changes
     */
    hasDelta(): boolean;
    /**
     * Gets the state delta.
     *
     * @returns The state delta
     */
    getDelta(): Record<string, unknown>;
    /**
     * Commits the delta to the value and clears the delta.
     */
    commitDelta(): void;
    /**
     * Clears the delta without committing.
     */
    clearDelta(): void;
    /**
     * Updates the state with the given values.
     *
     * @param values The values to update the state with
     */
    update(values: Record<string, unknown>): void;
    /**
     * Sets an app-level state value.
     *
     * @param key The key to set
     * @param value The value to set
     */
    setAppValue(key: string, value: unknown): void;
    /**
     * Gets an app-level state value.
     *
     * @param key The key to get
     * @returns The app-level state value
     */
    getAppValue(key: string): unknown;
    /**
     * Sets a user-level state value.
     *
     * @param key The key to set
     * @param value The value to set
     */
    setUserValue(key: string, value: unknown): void;
    /**
     * Gets a user-level state value.
     *
     * @param key The key to get
     * @returns The user-level state value
     */
    getUserValue(key: string): unknown;
    /**
     * Sets a temporary state value.
     *
     * @param key The key to set
     * @param value The value to set
     */
    setTempValue(key: string, value: unknown): void;
    /**
     * Gets a temporary state value.
     *
     * @param key The key to get
     * @returns The temporary state value
     */
    getTempValue(key: string): unknown;
    /**
     * Returns the state as a plain object.
     *
     * @returns The state as a plain object
     */
    toObject(): Record<string, unknown>;
    /**
     * Returns the metadata associated with the state.
     * TODO(b/314118552): Implement proper metadata handling if needed for Python ADK compatibility.
     *
     * @returns The state metadata as a plain object.
     */
    getMetadata(): Record<string, unknown>;
}
