import type { Invitation } from "@stigmer/protos/ai/stigmer/iam/invitation/v1/api_pb";
/** Props for {@link InvitationRedemption}. */
export interface InvitationRedemptionProps {
    /** The invitation token from the invite URL. */
    readonly token: string;
    /**
     * Whether the current user is authenticated.
     *
     * When `false`, the component shows a "Sign in to accept" CTA
     * instead of the accept button. When `true` or omitted, the
     * accept button calls `redeem` directly.
     *
     * @default true
     */
    readonly isAuthenticated?: boolean;
    /**
     * Fired after the invitation is successfully redeemed.
     *
     * The returned {@link Invitation} contains the organization and
     * role information needed for post-redemption navigation
     * (e.g. redirecting to the org dashboard).
     */
    readonly onAccepted?: (invitation: Invitation) => void;
    /**
     * Fired when an unauthenticated user clicks "Sign in to accept".
     *
     * The host application controls what "sign in" means — this
     * callback typically triggers a redirect to the login page with
     * a return URL back to the invite page.
     */
    readonly onAuthRequired?: () => void;
    /** Additional CSS class names for the root container. */
    readonly className?: string;
}
/**
 * Self-contained invite acceptance flow.
 *
 * Fetches the invitation preview by token (public endpoint, no auth
 * required), displays the organization info and role being offered,
 * and provides an accept button that redeems the invitation.
 *
 * Handles all states: loading, invalid (expired / revoked / fully
 * redeemed), authentication required, redemption in flight,
 * success, and error — with appropriate UX for each.
 *
 * The component is auth-agnostic: it delegates authentication
 * decisions to the host application via `isAuthenticated` and
 * `onAuthRequired` props. Platform builders who render this
 * component only for authenticated users can ignore both props.
 *
 * All visual properties flow through `--stgm-*` design tokens.
 *
 * @example
 * ```tsx
 * <InvitationRedemption
 *   token={tokenFromUrl}
 *   onAccepted={(inv) => router.push("/dashboard")}
 * />
 *
 * <InvitationRedemption
 *   token={tokenFromUrl}
 *   isAuthenticated={!!currentUser}
 *   onAccepted={(inv) => router.push(`/org/${inv.metadata?.org}`)}
 *   onAuthRequired={() => router.push(`/login?return=/invite/${token}`)}
 * />
 * ```
 */
export declare function InvitationRedemption({ token, isAuthenticated, onAccepted, onAuthRequired, className, }: InvitationRedemptionProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=InvitationRedemption.d.ts.map