import { type ReactNode } from "react";
import { type AccessGranularPermission, type IUser, type ShareStatus } from "@gooddata/sdk-model";
import { type CurrentUserPermissions, type IShareDialogInteractionData, type ShareDialogInteractionGranteeData, type ShareDialogInteractionType } from "../types.js";
import { type GranteeItem } from "./types.js";
interface IComponentInteractionData extends ShareDialogInteractionGranteeData {
    type: ShareDialogInteractionType;
}
type ComponentInteractionContextType = {
    onInteraction: (data: IComponentInteractionData) => void;
    currentUser: IUser;
};
/**
 * @internal
 */
export declare const useComponentInteractionContext: () => ComponentInteractionContextType;
interface IComponentInteractionProps {
    onInteraction: (data: IShareDialogInteractionData) => void;
    currentUser: IUser;
    currentUserPermissions: CurrentUserPermissions;
    isCurrentUserWorkspaceManager: boolean;
    sharedObjectStatus: ShareStatus;
    isSharedObjectLocked: boolean;
    children?: ReactNode;
}
/**
 * @internal
 */
export declare function ComponentInteractionProvider({ children, onInteraction, currentUser, currentUserPermissions, isCurrentUserWorkspaceManager, isSharedObjectLocked, sharedObjectStatus }: IComponentInteractionProps): import("react/jsx-runtime").JSX.Element;
export declare const useShareDialogInteraction: () => {
    openInteraction: () => void;
    closeInteraction: () => void;
    saveInteraction: () => void;
    permissionsDropdownOpenInteraction: (grantee: GranteeItem, isExistingGrantee: boolean, granteeEffectivePermission: AccessGranularPermission) => void;
    permissionsChangeInteraction: (grantee: GranteeItem, isExistingGrantee: boolean, granteeEffectivePermission: AccessGranularPermission, granteeUpdatedPermission: AccessGranularPermission) => void;
    permissionsRemoveInteraction: (grantee: GranteeItem, isExistingGrantee: boolean, granteeEffectivePermission: AccessGranularPermission) => void;
    granteeAddInteraction: (grantee: GranteeItem) => void;
    availableGranteeListOpenInteraction: (numberOfAvailableGrantees: number) => void;
};
export {};
//# sourceMappingURL=ComponentInteractionContext.d.ts.map