import { type Atom } from '@effect-atom/atom-react';
import { Capabilities } from '../../common';
import { type Capability } from '../../core';
/**
 * Hook to request capabilities from the plugin context.
 * @returns An array of capabilities.
 */
export declare const useCapabilities: <T>(interfaceDef: Capability.InterfaceDef<T>) => T[];
/**
 * Hook to request a capability from the plugin context.
 * @returns The capability.
 * @throws If no capability is found.
 */
export declare const useCapability: <T>(interfaceDef: Capability.InterfaceDef<T>) => T;
/**
 * Hook to get the current value of an atom capability.
 * Automatically subscribes to changes.
 * @example const settings = useAtomCapability(ThreadCapabilities.Settings);
 */
export declare const useAtomCapability: <T>(atomCapability: Capability.InterfaceDef<Atom.Atom<T>>) => T;
/**
 * Hook to get value and updater for an atom capability.
 * Returns [currentValue, updateFn] similar to useState.
 * @example const [settings, updateSettings] = useAtomCapabilityState(ThreadCapabilities.Settings);
 */
export declare const useAtomCapabilityState: <T>(atomCapability: Capability.InterfaceDef<Atom.Writable<T>>) => [T, (fn: (current: T) => T) => void];
/**
 * Hook to get the operation invoker capability.
 */
export declare const useOperationInvoker: () => Capabilities.OperationInvoker;
//# sourceMappingURL=useCapabilities.d.ts.map