import { CSSProperties, ComponentChildren, JSX } from "preact";

//#region src/components/OverflowText.d.ts
type PropsWithChildren<T = {}> = T & {
  children?: ComponentChildren;
};
type CSSPropertiesWithVars = CSSProperties & {
  [key: `--${string}`]: string | number | undefined;
};
interface MarkerProps extends PropsWithChildren {}
type TruncateMode = 'truncate' | 'fruncate';
interface OverflowTextProps extends PropsWithChildren {
  mode?: TruncateMode;
  style?: Omit<CSSPropertiesWithVars, 'height' | 'overflow'>;
  className?: string;
  marker?: ComponentChildren | ((props: MarkerProps) => ComponentChildren);
  variant?: 'default' | 'fade';
}
type MiddleTruncateProps = Omit<OverflowTextProps, 'mode' | 'children'> & AllowableContentGroups & {
  minimumLength?: number;
  priority?: 'start' | 'end' | 'equal';
  split?: 'center' | 'extension' | 'leaf-path' | number | SplitOffset | CustomSplitFn;
};
type MiddleTruncateFilteredProps = Pick<MiddleTruncateProps, 'priority' | 'variant'> & {
  splitIndex?: number;
  splitOffset?: number;
};
type CustomSplitFn = (contents: string, props?: MiddleTruncateFilteredProps) => [string, string];
type SplitOffsetType = 'last' | 'first';
type SplitOffset = [SplitOffsetType, number];
type AllowableContentGroups = {
  children?: never;
  contents: [ComponentChildren, ComponentChildren];
} | {
  contents?: never;
  children: string;
};
declare const splitCenter: CustomSplitFn;
declare const splitExtension: CustomSplitFn;
declare const splitLeafPath: CustomSplitFn;
declare const splitByIndex: CustomSplitFn;
declare const splitLast: CustomSplitFn;
declare const splitFirst: CustomSplitFn;
declare function OverflowText({
  children,
  mode,
  marker,
  variant,
  ...props
}: OverflowTextProps): JSX.Element;
declare function Truncate({
  children,
  ...props
}: Omit<OverflowTextProps, 'mode'>): JSX.Element;
declare function Fruncate({
  children,
  ...props
}: Omit<OverflowTextProps, 'mode'>): JSX.Element;
declare function MiddleTruncate({
  children,
  contents,
  priority,
  split,
  minimumLength,
  className,
  style,
  ...props
}: MiddleTruncateProps): JSX.Element | null;
//#endregion
export { CSSPropertiesWithVars, CustomSplitFn, Fruncate, MarkerProps, MiddleTruncate, MiddleTruncateFilteredProps, MiddleTruncateProps, OverflowText, OverflowTextProps, SplitOffset, SplitOffsetType, Truncate, TruncateMode, splitByIndex, splitCenter, splitExtension, splitFirst, splitLast, splitLeafPath };
//# sourceMappingURL=OverflowText.d.ts.map