import type { AccessResource, AccessVisibility, AccessExtraSection } from "./types.js";
/** Props for {@link ManageAccessDialog}. */
export interface ManageAccessDialogProps {
    /** Whether the dialog is open. */
    readonly open: boolean;
    /** Called when the dialog should open or close. */
    readonly onOpenChange: (open: boolean) => void;
    /** The resource whose access is managed. */
    readonly resource: AccessResource;
    /**
     * General access (visibility) axis. Omit for resources without visibility
     * (e.g. sessions, workflow executions).
     */
    readonly visibility?: AccessVisibility;
    /**
     * An optional resource-specific section appended below People (e.g.
     * workflow-instance run observability).
     */
    readonly extraSection?: AccessExtraSection;
}
/**
 * The one canonical "Manage access" dialog, mounted identically across every
 * resource with a detail surface. Composes the platform's two access axes into
 * a single Drive/GitHub-style modal: *General access* (visibility) over
 * *People with access* (explicit grants), plus an optional resource-specific
 * section.
 *
 * Each section renders only when it applies:
 * - **General access** — only when {@link ManageAccessDialogProps.visibility}
 *   is provided. Delegates to {@link ResourceVisibilityControl}, which owns
 *   level selection and the `can_edit` gate.
 * - **People with access** — only when the resource kind has grantable roles
 *   (`hasGrantableRoles`, proto-generated single source of truth). Delegates
 *   to {@link PeopleWithAccess}, which gates grant/revoke on `can_grant_access`.
 * - **Extra section** — only when provided.
 *
 * The body mounts lazily (only while `open`) so its access-list fetch never
 * fires on a closed dialog. Built on the native `<dialog>` element for focus
 * trapping and escape handling, matching the SDK's modal convention. All
 * visual properties flow through `--stgm-*` design tokens.
 *
 * Most hosts mount it indirectly via {@link ManageAccessButton} (a visible
 * trigger) or {@link useManageAccess} (a kebab-menu action). Render it directly
 * only when you own the open-state.
 *
 * @example
 * ```tsx
 * const [open, setOpen] = useState(false);
 *
 * // A blueprint has both axes: General access (visibility) over People.
 * <ManageAccessDialog
 *   open={open}
 *   onOpenChange={setOpen}
 *   resource={{ kind: ApiResourceKind.agent, kindString: "agent", id, org, name }}
 *   visibility={{ kind: "agent", current: visibility, org, onChanged: refetch }}
 * />
 * ```
 */
export declare function ManageAccessDialog({ open, onOpenChange, resource, visibility, extraSection, }: ManageAccessDialogProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=ManageAccessDialog.d.ts.map