export type ShareVisibility = "private" | "org" | "public"; export type ShareRole = "viewer" | "editor" | "admin"; export type ShareDialogTab = "link" | "invite" | "embed"; export interface ResourceShare { id: string; principalType: "user" | "org"; principalId: string; displayName?: string | null; role: ShareRole; } export interface ResourceSharesResponse { ownerEmail: string | null; orgId: string | null; visibility: ShareVisibility | null; role?: "owner" | ShareRole; shares: ResourceShare[]; policy?: { allowPublic: boolean; requireOrgMemberForUserShares?: boolean; }; } export interface ShareDialogControllerOptions { open: boolean; onClose: () => void; resourceType: string; resourceId: string; resourceTitle?: string; shareUrl?: string; embedUrl?: string; } export interface ShareOption { value: TValue; label: string; description: string; } export interface ShareDialogPerson { key: string; label: string; roleLabel: string; principalType: "owner" | "user" | "org"; avatarText: string | null; share: ResourceShare | null; } export interface ShareDialogController { open: boolean; onOpenChange: (open: boolean) => void; close: () => void; title: string; ownerLabel: string | null; activeTab: ShareDialogTab; setActiveTab: (tab: ShareDialogTab) => void; tabsEnabled: boolean; tabs: Array<{ value: ShareDialogTab; label: string; }>; labels: { close: string; shareOptions: string; generalAccess: string; shareLink: string; peopleWithAccess: string; addPeopleByEmail: string; notifyPeople: string; role: string; remove: string; noAccess: string; copy: string; embedUrl: string; embedCode: string; }; visibility: { value: ShareVisibility; label: string; description: string; options: Array>; disabled: boolean; pending: boolean; set: (visibility: ShareVisibility) => void; }; invite: { email: string; setEmail: (email: string) => void; role: ShareRole; setRole: (role: ShareRole) => void; roleOptions: Array>; notifyPeople: boolean; setNotifyPeople: (notify: boolean) => void; showNotifyPeople: boolean; disabled: boolean; pending: boolean; submit: () => void; }; people: ShareDialogPerson[]; removeShare: (share: ResourceShare) => void; removing: boolean; shareUrl?: string; embedUrl?: string; embedCode?: string; copiedField: string | null; copy: (field: string, value: string) => Promise; loading: boolean; error: unknown; refetch: () => unknown; canManage: boolean; } export declare function useShareDialogController({ open, onClose, resourceType, resourceId, resourceTitle, shareUrl, embedUrl, }: ShareDialogControllerOptions): ShareDialogController; //# sourceMappingURL=useShareDialogController.d.ts.map