import { type QueryClient } from "@tanstack/react-query"; import { useActionQuery } from "../use-action.js"; export interface ShareQueryParams { resourceType: string; resourceId: string; } export type ShareQueryKey = readonly [ "action", "list-resource-shares", ShareQueryParams ]; export interface ShareOrgMember { email: string; name?: string | null; image?: string | null; role?: string | null; joinedAt?: number | null; } export interface ShareOrgMemberSearchResult { members: ShareOrgMember[]; isLoading: boolean; isLoadingMore: boolean; hasMore: boolean; error: boolean; loadMore: () => void; } export interface OrgMemberPage { members: ShareOrgMember[]; hasMore: boolean; nextOffset: number | null; } export declare const DEFAULT_MEMBER_SUGGESTION_LIMIT = 25; export declare const DEFAULT_MEMBER_SEARCH_DEBOUNCE_MS = 140; export declare function createShareQueryParams(resourceType: string, resourceId: string): ShareQueryParams; export declare function createShareQueryKey(params: ShareQueryParams): ShareQueryKey; export declare function useShareQuery(resourceType: string, resourceId: string, enabled?: boolean, staleTime?: number): { params: ShareQueryParams; queryKey: ShareQueryKey; query: ReturnType>; queryClient: QueryClient; }; export declare function useShareMutations(): { setVisibility: import("@tanstack/react-query").UseMutationResult, unknown>; share: import("@tanstack/react-query").UseMutationResult, unknown>; unshare: import("@tanstack/react-query").UseMutationResult, unknown>; }; /** * Chat history lists are cached outside the share query, so a saved grant or * visibility change must tell them to refetch. Other resource types have no * such list to refresh. */ export declare function notifyShareChanged(resourceType: string): void; export declare function optimisticallyUpdateShareCache(queryClient: QueryClient, queryKey: ShareQueryKey, updater: (previous: TData | undefined) => TData | undefined): TData | undefined; export declare function rollbackShareCache(queryClient: QueryClient, queryKey: ShareQueryKey, previous: TData | undefined): void; export declare function optimisticallyUpdateShareVisibility(queryClient: QueryClient, queryKey: ShareQueryKey, visibility: TData["visibility"]): { isCurrent: () => boolean; commit: (next: TData["visibility"]) => void; rollback: () => void; }; export declare function useShareMutationGuard(scope?: string): { begin: () => number; isLatest: (requestId: number) => boolean; }; export declare function fetchOrgMemberPage(options: { search?: string; limit?: number; offset?: number; signal?: AbortSignal; }): Promise; export declare function useShareOrgMemberSearch(query: string, enabled: boolean, options?: { limit?: number; debounceMs?: number; }): ShareOrgMemberSearchResult; export declare function normalizeOrgMembers(value: unknown): ShareOrgMember[]; export declare function mergeOrgMembers(existing: ShareOrgMember[], next: ShareOrgMember[]): ShareOrgMember[]; export declare function extractShareErrorMessage(error: unknown): string;