import { type ComponentType, type ReactElement } from "react";
import { type StyleProp, type ViewStyle } from "../../style/index.js";
import { type ButtonProps } from "../../atoms/button/button.shared.js";
import { type EmptyStateSkin } from "./empty-state.styles.js";
export interface EmptyStateProps {
/**
* The glyph shown in the disc: a monochrome `` element (cloned with the
* tone's tint and the disc's glyph size, so it follows `success`/default like the
* disc wash does; a semantic color boolean on the element still wins) or an
* emoji/character string.
*/
icon?: string | ReactElement;
/** Short, neutral headline naming the empty result. */
title?: string;
/** One reassuring line, ideally pointing at the next step. */
description?: string;
/** When set, renders a primary action button below the description. */
actionLabel?: string;
/** Called when the action button is pressed. */
onAction?: () => void;
success?: boolean;
bordered?: boolean;
compact?: boolean;
/** E2E hook forwarded to the root element. */
testID?: string;
/** Outer layout composition only (width/flex within a parent), never a restyle hook. */
style?: StyleProp;
}
export type ButtonComponent = ComponentType;
/**
* Build an EmptyState from a platform skin.
*
* `Button` is the platform-correct action atom the EmptyState composes. Each
* platform's thin `.tsx`/`.ios`/`.android` file passes the Button it already
* resolves for that platform, so the action matches the molecule's platform on
* every build path (notably the WEB docs 3-up preview, where a barrel import would
* otherwise resolve the web atom). Defaults to the web-base Button when omitted,
* which is also correct on a real device (Metro resolves the right extension there
* regardless).
*/
export declare function createEmptyState(skin: EmptyStateSkin, Button?: ButtonComponent): (props: EmptyStateProps) => import("react").JSX.Element;
//# sourceMappingURL=empty-state.shared.d.ts.map