///
import type { HTMLActionArray } from "./hooks/use-actions";
import type { SupportedAs, SupportedElement } from "./internal/elements";
export declare enum Features {
/** No features at all */
None = 0,
/**
* When used, this will allow us to use one of the render strategies.
*
* **The render strategies are:**
* - **Unmount** _(Will unmount the component.)_
* - **Hidden** _(Will hide the component using the [hidden] attribute.)_
*/
RenderStrategy = 1,
/**
* When used, this will allow the user of our component to be in control. This can be used when
* you want to transition based on some state.
*/
Static = 2
}
export declare type TRestProps = T extends SupportedElement ? Omit : {};
export declare type TResolveAs = SupportedAs extends TAsProp ? TDefaultAs : TAsProp;
export declare type TRenderProps = TRestProps> & {
name: string;
slotProps: TSlotProps;
el?: HTMLElement | null;
visible?: boolean;
features?: Features;
as: TAsProp;
static?: boolean;
unmount?: boolean;
/**
* A list of actions to apply to the component's HTML element.
*
* Each action must take the form `[action]` or `[action, options]`:
*
* use={[[action1], [action2, action2Options], [action3]]}
*/
use?: HTMLActionArray;
/**
* The class attribute for this component.
*
* In addition to a regular string, this may be a function that returns a string.
* In that case, the function will be passed this component's slot props as an argument,
* allowing you to conditionally apply classes. See the component's documentation for more.
*/
class?: ((props: TSlotProps) => string) | string;
/**
* The style attribute for this component.
*
* In addition to a regular string, this may be a function that returns a string.
* In that case, the function will be passed this component's slot props as an argument,
* allowing you to conditionally apply styles. See the component's documentation for more.
*/
style?: ((props: TSlotProps) => string) | string;
};
export declare type TInternalProps = "name" | "slotProps" | "el" | "visible" | "features";
export declare type TPassThroughProps = Omit, TInternalProps | "as" | "static" | "unmount"> & {
/** The HTML element the component should render as */
as?: TAsProp;
};