/** Return value of {@link useArtifactCopy}. */
export interface UseArtifactCopyReturn {
    /**
     * Fetch the artifact's text at click time and write it to the clipboard.
     * No-op when the execution id is unknown or a copy is already in flight.
     * Resolves once the copy has been attempted.
     *
     * @param storageKey - Storage key of the artifact to copy.
     */
    readonly copy: (storageKey: string) => Promise<void>;
    /** `true` while the content is being fetched / written to the clipboard. */
    readonly isCopying: boolean;
    /**
     * `true` for a brief window after a successful copy (drives "Copied"
     * affordance feedback), then resets automatically.
     */
    readonly copied: boolean;
    /** Error from the last failed copy attempt, or `null` when healthy. */
    readonly error: Error | null;
}
/**
 * Behavior hook that copies an execution artifact's text to the clipboard on
 * demand.
 *
 * The imperative sibling of {@link useArtifactDownload}: it fetches content at
 * click time via `getArtifactContent` (CORS-safe, through the Stigmer API)
 * rather than requiring the caller to have loaded it. This suits content-free
 * surfaces — a plan card that detects the artifact by convention and never
 * fetches until the user acts — where a mount-time {@link useArtifactContent}
 * would be wasteful.
 *
 * Returns an imperative `copy(storageKey)` action plus a transient `copied`
 * flag for feedback, mirroring the modal's copy affordance so every surface
 * shares one implementation.
 *
 * @param executionId - Execution that produced the artifacts, or `null` to
 *   disable (the action becomes a no-op).
 *
 * @example
 * ```tsx
 * const { copy, isCopying, copied } = useArtifactCopy(executionId);
 * <button onClick={() => copy(artifact.storageKey)} disabled={isCopying}>
 *   {copied ? "Copied" : "Copy"}
 * </button>
 * ```
 *
 * @see useArtifactDownload — imperative save-to-disk counterpart
 * @see useArtifactContent — declarative content reader (preview rendering)
 */
export declare function useArtifactCopy(executionId: string | null): UseArtifactCopyReturn;
//# sourceMappingURL=useArtifactCopy.d.ts.map