import { ChangeEvent } from 'react';
/**
 * Interface for the select card state
 */
export interface ISelectCardState {
    /**
     * When `true`, adds the item to the selected state holder.
     */
    checked: boolean;
    /**
     * Gives an explicit id to each item in the set.
     */
    id?: string | number;
}
/**
 * Interface for the select card onChange options
 */
export interface ISelectCardOnChangeOptions {
    /**
     * When `true`, doesn't fire the user's `onChange`
     */
    internal?: boolean;
}
/**
 * Interface for the select card context
 */
export interface ISelectCardContext {
    /**
     * Callback function that is triggered when the selection state changes.
     *
     * @callback OnChangeCallback
     * @param {ChangeEvent<HTMLInputElement>} [e] - The native HTML input change event.
     * @param {ISelectCardState} [state] - The current state of the select card component after the change.
     * @returns {void}
     */
    onChange?: (e?: ChangeEvent<HTMLInputElement>, state?: ISelectCardState, options?: ISelectCardOnChangeOptions) => void;
    /**
     * Sets how many cards the user can select, either 'single' (radio buttons) or 'multiple' (checkboxes)
     */
    selectionMode: "single" | "multiple";
    /**
     * Used internally to create a UUID for the HTML `name` property on radios.
     */
    radioName: string;
    /**
     * Creates a set of ids that are selected.
     */
    selection: Set<string | number>;
    /**
     * When `true`, indicates that selection is controlled at the group level via the `value` prop.
     * @default false
     */
    isGroupControlled?: boolean;
    /**
     * When `true`, the group was given a `defaultValue` and owns the initial selection state.
     * Individual `SelectCard` mount syncs should be skipped to avoid overriding it.
     * @default false
     */
    hasGroupDefault?: boolean;
    /**
     * When `true`, displays a checkbox or radio indicator in a separate column on the left side of the card.
     * The indicator type (checkbox or radio) is automatically determined by the selection mode from SelectCard.Group context.
     * @default false
     */
    showSelectIndicator?: boolean;
}
export declare const SelectCardContext: import('react').Context<ISelectCardContext | null>;
/**
 * Custom hook for accessing the SelectCard context.
 * @returns The SelectCard context or null if not within a SelectCardProvider
 */
export declare const useSelectCardContext: () => ISelectCardContext | null;
