import type { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
import type { IamPolicy } from "@stigmer/protos/ai/stigmer/iam/iampolicy/v1/api_pb";
/** Props for {@link GrantAccessForm}. */
export interface GrantAccessFormProps {
    /** Resource kind being granted access to. Determines which roles appear. */
    readonly resourceKind: ApiResourceKind;
    /** Resource kind string (e.g. "organization") for the API resource ref. */
    readonly resourceKindString: string;
    /** ID of the resource being granted access to. */
    readonly resourceId: string;
    /** Fired after a policy is successfully created. */
    readonly onGranted?: (policy: IamPolicy) => void;
    /** Fired when the user cancels. */
    readonly onCancel?: () => void;
    /** Additional CSS class names for the root container. */
    readonly className?: string;
}
/**
 * Form for granting a principal access to a resource.
 *
 * Collects a **principal ID** (identity account), lets the user pick
 * a **role** from the resource's grantable roles, and creates the IAM
 * policy binding.
 *
 * All visual properties flow through `--stgm-*` design tokens.
 *
 * @example
 * ```tsx
 * <GrantAccessForm
 *   resourceKind={ApiResourceKind.organization}
 *   resourceKindString="organization"
 *   resourceId="org-abc123"
 *   onGranted={(policy) => refetchAccessList()}
 *   onCancel={() => setShowForm(false)}
 * />
 * ```
 */
export declare function GrantAccessForm({ resourceKind, resourceKindString, resourceId, onGranted, onCancel, className, }: GrantAccessFormProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=GrantAccessForm.d.ts.map