import type { MessageRuntime } from "../runtime/MessageRuntime.js";
/**
 * @deprecated Use `useAui()` with `aui.message()` instead. See migration guide: https://assistant-ui.com/docs/migrations/v0-12
 *
 * Hook to access the MessageRuntime from the current context.
 *
 * The MessageRuntime provides access to message-level state and actions,
 * including message content, status, editing capabilities, and branching.
 *
 * @param options Configuration options
 * @param options.optional Whether the hook should return null if no context is found
 * @returns The MessageRuntime instance, or null if optional is true and no context exists
 *
 * @example
 * ```tsx
 * // Before:
 * function MessageActions() {
 *   const runtime = useMessageRuntime();
 *   const handleReload = () => {
 *     runtime.reload();
 *   };
 *   const handleEdit = () => {
 *     runtime.startEdit();
 *   };
 *   return (
 *     <div>
 *       <button onClick={handleReload}>Reload</button>
 *       <button onClick={handleEdit}>Edit</button>
 *     </div>
 *   );
 * }
 *
 * // After:
 * function MessageActions() {
 *   const aui = useAui();
 *   const handleReload = () => {
 *     aui.message().reload();
 *   };
 *   const handleEdit = () => {
 *     aui.message().startEdit();
 *   };
 *   return (
 *     <div>
 *       <button onClick={handleReload}>Reload</button>
 *       <button onClick={handleEdit}>Edit</button>
 *     </div>
 *   );
 * }
 * ```
 */
export declare function useMessageRuntime(options?: {
    optional?: false | undefined;
}): MessageRuntime;
export declare function useMessageRuntime(options?: {
    optional?: boolean | undefined;
}): MessageRuntime | null;
/**
 * @deprecated Use `useAuiState((s) => s.message)` instead. See migration guide: https://assistant-ui.com/docs/migrations/v0-12
 *
 * Hook to access the current message state.
 *
 * This hook provides reactive access to the message's state, including content,
 * role, status, and other message-level properties.
 *
 * @param selector Optional selector function to pick specific state properties
 * @returns The selected message state or the entire message state if no selector provided
 *
 * @example
 * ```tsx
 * // Before:
 * function MessageContent() {
 *   const role = useMessage((state) => state.role);
 *   const content = useMessage((state) => state.content);
 *   const isLoading = useMessage((state) => state.status.type === "running");
 *   return (
 *     <div className={`message-${role}`}>
 *       {isLoading ? "Loading..." : content.map(part => part.text).join("")}
 *     </div>
 *   );
 * }
 *
 * // After:
 * function MessageContent() {
 *   const role = useAuiState((s) => s.message.role);
 *   const content = useAuiState((s) => s.message.content);
 *   const isLoading = useAuiState((s) => s.message.status.type === "running");
 *   return (
 *     <div className={`message-${role}`}>
 *       {isLoading ? "Loading..." : content.map(part => part.text).join("")}
 *     </div>
 *   );
 * }
 * ```
 */
export declare const useMessage: {
    (): import("@assistant-ui/core").MessageState;
    <TSelected>(selector: (state: import("@assistant-ui/core").MessageState) => TSelected): TSelected;
    <TSelected>(selector: ((state: import("@assistant-ui/core").MessageState) => TSelected) | undefined): import("@assistant-ui/core").MessageState | TSelected;
    (options: {
        optional?: false | undefined;
    }): import("@assistant-ui/core").MessageState;
    (options: {
        optional?: boolean | undefined;
    }): import("@assistant-ui/core").MessageState | null;
    <TSelected>(options: {
        optional?: false | undefined;
        selector: (state: import("@assistant-ui/core").MessageState) => TSelected;
    }): TSelected;
    <TSelected>(options: {
        optional?: false | undefined;
        selector: ((state: import("@assistant-ui/core").MessageState) => TSelected) | undefined;
    }): import("@assistant-ui/core").MessageState | TSelected;
    <TSelected>(options: {
        optional?: boolean | undefined;
        selector: (state: import("@assistant-ui/core").MessageState) => TSelected;
    }): TSelected | null;
    <TSelected>(options: {
        optional?: boolean | undefined;
        selector: ((state: import("@assistant-ui/core").MessageState) => TSelected) | undefined;
    }): import("@assistant-ui/core").MessageState | TSelected | null;
};
/**
 * @deprecated Use `useAuiState((s) => s.message.composer)` instead. See migration guide: https://assistant-ui.com/docs/migrations/v0-12
 */
export declare const useEditComposer: {
    (): import("@assistant-ui/core").EditComposerState;
    <TSelected>(selector: (state: import("@assistant-ui/core").EditComposerState) => TSelected): TSelected;
    <TSelected>(selector: ((state: import("@assistant-ui/core").EditComposerState) => TSelected) | undefined): import("@assistant-ui/core").EditComposerState | TSelected;
    (options: {
        optional?: false | undefined;
    }): import("@assistant-ui/core").EditComposerState;
    (options: {
        optional?: boolean | undefined;
    }): import("@assistant-ui/core").EditComposerState | null;
    <TSelected>(options: {
        optional?: false | undefined;
        selector: (state: import("@assistant-ui/core").EditComposerState) => TSelected;
    }): TSelected;
    <TSelected>(options: {
        optional?: false | undefined;
        selector: ((state: import("@assistant-ui/core").EditComposerState) => TSelected) | undefined;
    }): import("@assistant-ui/core").EditComposerState | TSelected;
    <TSelected>(options: {
        optional?: boolean | undefined;
        selector: (state: import("@assistant-ui/core").EditComposerState) => TSelected;
    }): TSelected | null;
    <TSelected>(options: {
        optional?: boolean | undefined;
        selector: ((state: import("@assistant-ui/core").EditComposerState) => TSelected) | undefined;
    }): import("@assistant-ui/core").EditComposerState | TSelected | null;
};
//# sourceMappingURL=MessageContext.d.ts.map