1) All these methods are in the @dxtmisha/functional library.
2) Everything that is exported can be used.
3) Use what is in this library if it exists; do not use other libraries if there is an analogue here. Do not create new ones if an analogue already exists here.

The following is the content of "exports" from package.json:
{
  ".": {
    "import": "./dist/library.js",
    "types": "./dist/library.d.ts"
  },
  "./flags": {
    "import": "./dist/flags.js",
    "types": "./dist/flags.d.ts"
  },
  "./types/*": "./dist/*"
}

// File: library.d.ts

/** GET request config for API management. */
export declare type ApiManagementGet<Return extends ApiManagementValue, Type extends ApiManagementValue = Return> = {
    /** API endpoint path */
    path?: RefOrNormal<string | undefined>;
    /** Request options */
    options?: ApiOptions;
    /** Enable reactive updates on path/options change */
    reactivity?: boolean;
    /** Condition to trigger request */
    conditions?: RefType<boolean>;
    /** Custom data transformation */
    transformation?: (data: Type, isResponseContractValid?: ApiDataValidation) => ApiData<Return>;
    /** Validate response contract */
    validateResponseContract?: (data: Type) => ApiDataValidation;
    /** Validation function or class for data */
    typeData?: ((data: Return) => boolean) | any;
    /** Clear data on unmount */
    unmounted?: boolean;
    /** Skeleton data for loading state */
    skeleton?: () => Return;
};

/** Mutation request config (POST, PUT, DELETE). */
export declare type ApiManagementRequest<T, Return extends ApiData<T> = ApiData<T>> = {
    /** Target API endpoint path */
    path?: RefOrNormal<string | undefined>;
    /** Callback after success */
    action?: (data: Return | undefined) => Promise<void> | void;
    /** Transformation before sending */
    transformation?: (data: T) => Return;
    /** Wrap payload in 'data' property */
    toData?: boolean;
    /** Mutation request options */
    options?: ApiOptions;
};

/** Client-side search config for API data. */
export declare type ApiManagementSearch<T extends SearchItem, K extends SearchColumns<T>> = {
    /** Columns to search */
    columns: K;
    /** Reactive search query */
    value?: Ref<string>;
    /** Search algorithm options */
    options?: SearchOptions;
};

/** Base type for API values. */
export declare type ApiManagementValue = ApiDefaultValue | ApiDefaultValue[];

/** Options for api requests */
export declare type ApiOptions = ApiMethodItem | RefOrNormal<ApiFetch>;

declare type BroadcastValueItem<T> = T | string | undefined;

/**
 * Computed property for asynchronous getters.
 * @param getter Async/sync function or value
 * @param initialState initial result
 * @param ignore values to ignore
 * @param debugOptions Vue debugger options
 */
export declare function computedAsync<R>(getter: (() => Promise<R>) | (() => R) | R, initialState?: (() => R) | R, ignore?: R, debugOptions?: DebuggerOptions): ComputedRef<R | undefined>;

/**
 * Computed property dependent on language and conditions.
 * @param getter Main value getter
 * @param getterNone Alternative value if conditions fail or getter is undefined
 * @param conditions Trigger condition
 * @param debugOptions Vue debugger options
 */
export declare function computedByLanguage<T, R extends (T | undefined) = T | undefined>(getter: ComputedGetter<R>, getterNone?: R | (() => R), conditions?: () => boolean, debugOptions?: DebuggerOptions): ComputedRef<R>;

/**
 * Computed property computed on demand and cached.
 * @param getter Value getter
 * @param initialState initial result
 */
export declare function computedEternity<T>(getter: () => Promise<T> | T, initialState?: (() => T) | T): Ref<T, T>;

/** Component binding with class/style support */
export declare type ConstrBind<T> = T & Record<string, any> & {
    key?: string;
    class?: ConstrClass;
    style?: ConstrStyles;
};

/** Constructor class type (string, array, or object) */
export declare type ConstrClass = string | (string | ConstrClass | Undefined)[] | ConstrClassObject;

/** Required main class and additional class list */
export declare type ConstrClasses = {
    main: ConstrClass;
} & ConstrClassList;

/** Map class names to definitions */
export declare type ConstrClassList = Record<string, ConstrClass>;

/** Object for CSS classes with boolean values */
export declare type ConstrClassObject = Record<string, boolean | undefined>;

/** Generic record for constructor components */
export declare type ConstrComponent = Record<string, any>;

/** Component modification with reactive or normal values */
export declare type ConstrComponentMod<P extends ConstrItem> = ConstrItem | {
    [K in keyof P]?: RefOrNormal<P[K]>;
};

/** Constructor emit with event handler signatures */
export declare type ConstrEmit<T extends ConstrItem = ConstrItem> = UnionToIntersection<ConstrEmitItem<{
    [K in keyof T]: (evt: K, ...args: T[K]) => void;
}>>;

/** Extract emit type from constructor item */
export declare type ConstrEmitItem<T extends ConstrItem> = T[keyof T];

export declare type ConstrExpose<E extends Element, EXPOSE extends ConstrItem> = EXPOSE & {
    elementHtml?: ComputedRef<E | undefined>;
};

/** Props for link handling */
export declare type ConstrHrefProps = {
    href?: string;
};

/** Generic record for constructor items */
export declare type ConstrItem = Record<string, any>;

/** Constructor options for component config */
export declare type ConstrOptions<COMP extends ConstrComponent, EMITS extends ConstrItem, P extends ConstrItem> = {
    components?: COMP;
    compMod?: ConstrComponentMod<P>;
    emits?: ConstrEmit<EMITS>;
    classes?: RefType<ConstrClasses>;
    styles?: RefType<ConstrStyles>;
};

/** Constructor prop item */
export declare type ConstrPropItem<T = any> = ConstrPropItemOptions<T> | PropType<T>;

/** Vue prop definition options */
export declare type ConstrPropItemOptions<T = any> = {
    type?: PropType<T>;
    required?: boolean;
    default?: any;
    validator?(value: any, props: any): boolean;
};

/** Component prop definitions */
export declare type ConstrProps<P = Record<string, any>> = {
    [K in keyof P]: ConstrPropItem<P[K]>;
};

/** Constructor registration config */
export declare type ConstrRegistration = {
    flag?: boolean;
    translate?: Record<string, string>;
};

/** Setup interface for component initialization */
export declare type ConstrSetup<E extends Element, CLASSES extends ConstrClasses, SETUP extends ConstrItem> = {
    name: string;
    element: Ref<E | undefined>;
    classes: RefType<CLASSES>;
    styles: RefType<ConstrStyles>;
} & SETUP;

/** Style definitions (object or array) */
export declare type ConstrStyles = Record<string, ConstrStylesItem> | ConstrStyles[];

/** Individual style property */
export declare type ConstrStylesItem = string | null;

/** Value wrapper */
export declare type ConstrValue<T = any> = {
    value?: T;
};

/** Class for date processing. */
export declare class DatetimeRef {
    /**
     * @param date input date
     * @param type output format
     * @param code locale code
     */
    constructor(date: RefOrNormal<NumberOrStringOrDate>, type?: RefOrNormal<GeoDate>, code?: RefOrNormal<string>);
    getItem(): Ref<NumberOrStringOrDate>;
    getDate(): Ref<Date>;
    getDatetime(): Datetime;
    getHoursType(): ComputedRef<GeoHours>;
    getFirstDayCode(): ComputedRef<GeoFirstDay>;
    getYear(): ComputedRef<number>;
    getMonth(): ComputedRef<number>;
    getDay(): ComputedRef<number>;
    getHour(): ComputedRef<number>;
    getMinute(): ComputedRef<number>;
    getSecond(): ComputedRef<number>;
    getMaxDay(): ComputedRef<number>;
    /**
     * @param type format type
     * @param styleOptions representation style
     */
    locale(type?: GeoDate, styleOptions?: Intl.DateTimeFormatOptions['month'] | Intl.DateTimeFormatOptions): ComputedRef<string>;
    /**
     * @param timeZone include time zone
     */
    standard(timeZone?: boolean): ComputedRef<string>;
}

/** Base class for constructor design logic. */
export declare abstract class DesignAbstract<T extends Record<string, any>, C extends Record<string, any>> {
    /**
     * @param props base data
     * @param callback value change callback
     * @param changed tracking data
     */
    constructor(props: T, callback?: ((event: C) => void) | undefined, changed?: string[]);
    /**
     * @param compelled force update
     */
    make(compelled?: boolean): this;
    /**
     * @param compelled force update
     */
    makeCallback(compelled?: boolean): void;
}

/** Async version of DesignAbstract. */
export declare abstract class DesignAsyncAbstract<T extends Record<string, any>, C extends Record<string, any>> extends DesignAbstract<T, C> {
    make(compelled?: boolean): this;
    makeCallback(compelled?: boolean): Promise<void>;
}

/** Tracks edited values. */
export declare class DesignChanged<T extends Record<string, any>> {
    /**
     * @param props base data
     * @param watch tracking keys
     */
    constructor(props: T, watch?: string[]);
    is(name: string | string[]): boolean;
    isChanged(): boolean;
    update(): void;
}

export declare class DesignComp<COMP extends ConstrComponent, P extends ConstrItem> extends DesignComponents<COMP, P> {
}

/** Manages connected components. */
export declare class DesignComponents<COMP extends ConstrComponent, P extends ConstrItem> {
    /**
     * @param components list of components
     * @param modification modification data
     */
    constructor(components?: COMP, modification?: ConstrComponentMod<P> | undefined);
    is<K extends keyof COMP>(name: K): name is K;
    get<K extends keyof COMP>(name: K): COMP[K];
    getModification<K extends keyof P>(index?: K & string | string, props?: P[K] | Record<string, any>): Record<string, any> | undefined;
    render<K extends keyof COMP, PK extends keyof P>(name: K & string, props?: P[PK] & ConstrItem | ConstrItem, children?: RawChildren | RawSlots, index?: PK & string | string): VNode[];
    renderOne<K extends keyof COMP, PK extends keyof P>(name: K & string, props?: P[PK] & ConstrItem | ConstrItem, children?: RawChildren | RawSlots, index?: PK & string | string): VNode | undefined;
    renderAdd<K extends keyof COMP, PK extends keyof P>(item: any[], name: K & string, props?: P[PK] & ConstrItem | ConstrItem, children?: RawChildren | RawSlots, index?: PK & string | string): this;
}

/** Base class for functional component constructors. */
export declare abstract class DesignConstructorAbstract<E extends Element, COMP extends ConstrComponent, EMITS extends ConstrItem, EXPOSE extends ConstrItem, SLOTS extends ConstrItem, CLASSES extends ConstrClasses, P extends ConstrItem> {
    protected constructor(name: string, props: Readonly<P>, options?: ConstrOptions<COMP, EMITS, P> | undefined);
    getName(): string;
    getDesign(): string;
    getSubClass(name: string | string[]): string;
    getStatusClass(name: string | string[]): string;
    getStyle(name: string | string[]): string;
    getAttrs(): ConstrItem;
    expose(): ConstrExpose<E, EXPOSE>;
    render(): () => VNode | (VNode | any)[] | undefined;
}

/** Vue plugin for functional services. */
export declare const dxtFunctionalPlugin: Plugin_2;

/** Global effect scope. */
export declare class EffectScopeGlobal {
    static run<T>(fn: () => T): T | undefined;
}

/** Event management with Ref. */
export declare class EventRef<E extends ElementOrWindow, O extends Event, D extends Record<string, any> = Record<string, any>> extends EventItem<E, O, D> {
    constructor(elementSelector?: RefOrNormal<ElementOrString<E> | undefined>, elementSelectorControl?: RefOrNormal<ElementOrString<HTMLElement>>, type?: string | string[], listener?: EventListenerDetail<O, D>, options?: EventOptions, detail?: D);
}

/**
 * Creates managed singleton with application, provide, or local strategy.
 * @param callback init function
 * @param type strategy (global, provide, local)
 * @remarks Use for API services, state, or external SDKs.
 * @example
 * export const useUserApi = executeUseGlobal(() => useApiGet('/api/user'));
 */
export declare function executeUse<R, O extends any[], RI extends ExecuteUseReturn<R> = ExecuteUseReturn<R>>(callback: (...args: O) => R, type?: ExecuteUseType): ((...args: O) => RI) | (() => RI);

/** Global singleton helper. */
export declare function executeUseGlobal<R>(callback: () => R): (() => Readonly<R & {
    init(): Readonly<R>;
    destroyExecute?(): void;
}>);

/** Init global callbacks. */
export declare function executeUseGlobalInit(): void;

/** Local singleton helper. */
export declare function executeUseLocal<R, O extends any[]>(callback: (...args: O) => R): ((...args: O) => Readonly<R & {
    init(): Readonly<R>;
    destroyExecute?(): void;
}>);

/** Component-scoped singleton helper. */
export declare function executeUseProvide<R, O extends any[]>(callback: (...args: O) => R): ((...args: O) => Readonly<R & {
    init(): Readonly<R>;
    destroyExecute?(): void;
}>);

/** Singleton return type. */
export declare type ExecuteUseReturn<R> = Readonly<R & {
    init(): Readonly<R>;
    destroyExecute?(): void;
}>;

/** Singleton strategies. */
export declare enum ExecuteUseType {
    global = "global",
    provide = "provide",
    local = "local"
}

/** Functional plugin configuration. */
export declare interface FunctionalPluginOptions {
    api?: ApiConfig;
    translate?: TranslateConfig;
    metaSuffix?: string;
    icons?: IconsConfig;
    router?: Router;
    errorCauses?: ErrorCenterCauseList;
}

/** Management class for Flags. */
export declare class GeoFlagRef {
    constructor(code?: RefOrNormal<string>);
    getCode(): Ref<string>;
    get(code?: string): ComputedRef<GeoFlagItem | undefined>;
    getFlag(code?: string): ComputedRef<string | undefined>;
    getList(codes?: string[]): ComputedRef<GeoFlagItem[]>;
    getNational(codes?: string[]): ComputedRef<GeoFlagNational[]>;
}

/** Reactive formatting for numbers and dates. */
export declare class GeoIntlRef {
    constructor(code?: RefOrNormal<string>);
    display(value?: RefOrNormal<string>, typeOptions?: Intl.DisplayNamesOptions['type'] | Intl.DisplayNamesOptions): ComputedRef<string>;
    languageName(value?: RefOrNormal<string>, style?: Intl.RelativeTimeFormatStyle): ComputedRef<string>;
    countryName(value?: RefOrNormal<string>, style?: Intl.RelativeTimeFormatStyle): ComputedRef<string>;
    number(value: RefOrNormal<NumberOrString>, options?: Intl.NumberFormatOptions): ComputedRef<string>;
    decimal(): ComputedRef<string>;
    currency(value: RefOrNormal<NumberOrString>, currencyOptions?: RefOrNormal<string | Intl.NumberFormatOptions>, numberOnly?: boolean): ComputedRef<string>;
    currencySymbol(currency: RefOrNormal<string>, currencyDisplay?: keyof Intl.NumberFormatOptionsCurrencyDisplayRegistry): ComputedRef<string>;
    unit(value: RefOrNormal<NumberOrString>, unitOptions?: string | Intl.NumberFormatOptions): ComputedRef<string>;
    sizeFile(value: RefOrNormal<NumberOrString>, unitOptions?: 'byte' | 'kilobyte' | 'megabyte' | 'gigabyte' | 'terabyte' | 'petabyte' | Intl.NumberFormatOptions): ComputedRef<string>;
    percent(value: RefOrNormal<NumberOrString>, options?: Intl.NumberFormatOptions): ComputedRef<string>;
    percentBy100(value: RefOrNormal<NumberOrString>, options?: Intl.NumberFormatOptions): ComputedRef<string>;
    plural(value: RefOrNormal<NumberOrString>, words: string, options?: Intl.PluralRulesOptions, optionsNumber?: Intl.NumberFormatOptions): ComputedRef<string>;
    date(value: RefOrNormal<NumberOrStringOrDate>, type?: GeoDate, styleOptions?: Intl.DateTimeFormatOptions['month'] | Intl.DateTimeFormatOptions, hour24?: boolean): ComputedRef<string>;
    relative(value: RefOrNormal<NumberOrStringOrDate>, styleOptions?: Intl.RelativeTimeFormatStyle | Intl.RelativeTimeFormatOptions, todayValue?: Date): ComputedRef<string>;
    relativeLimit(value: RefOrNormal<NumberOrStringOrDate>, limit: number, todayValue?: Date, relativeOptions?: Intl.RelativeTimeFormatStyle | Intl.RelativeTimeFormatOptions, dateOptions?: Intl.DateTimeFormatOptions['month'] | Intl.DateTimeFormatOptions, type?: GeoDate, hour24?: boolean): ComputedRef<string>;
    relativeByValue(value: RefOrNormal<NumberOrString>, unit: Intl.RelativeTimeFormatUnit, styleOptions?: Intl.RelativeTimeFormatStyle | Intl.RelativeTimeFormatOptions): ComputedRef<string>;
    month(value?: RefOrNormal<NumberOrStringOrDate>, style?: Intl.DateTimeFormatOptions['month']): ComputedRef<string>;
    months(style?: Intl.DateTimeFormatOptions['month']): ComputedRef<ItemValue<number | undefined>[]>;
    weekday(value?: RefOrNormal<NumberOrStringOrDate>, style?: Intl.DateTimeFormatOptions['weekday']): ComputedRef<string>;
    weekdays(style?: Intl.DateTimeFormatOptions['weekday']): ComputedRef<ItemValue<number | undefined>[]>;
    time(value: RefOrNormal<NumberOrStringOrDate>): ComputedRef<string>;
    sort<T>(data: RefOrNormal<T[]>, compareFn?: (a: T, b: T) => [string, string]): ComputedRef<T[]>;
}

/** Reactive geographic data access. */
export declare class GeoRef {
    static get(): Ref<GeoItemFull>;
    static getCountry(): ComputedRef<string>;
    static getLanguage(): ComputedRef<string>;
    static getStandard(): ComputedRef<string>;
    static getFirstDay(): ComputedRef<string>;
    static set(code: string): void;
}

/** Generates properties for subcomponents. */
export declare function getBind<T, R extends ItemList>(value: T | R | undefined | null, nameExtra?: ItemList | string, name?: string, except?: boolean): ConstrBind<R>;

/** Generates reactive properties for subcomponents. */
export declare function getBindRef<T, R extends ItemList>(value: RefOrNormal<T | R> | undefined, nameExtra?: RefOrNormal<ItemList> | string, name?: string): ComputedRef<R>;

/** Get class name from props. */
export declare function getClassName<T extends ItemList>(props?: T): string | undefined;

/** Generate render key. */
export declare function getIndexForRender<T extends ItemList>(name: string | any, props?: T, index?: string): string | undefined;

/** Get injected value. */
export declare function getInject<T>(name: string): T | undefined;

/** Get request options. */
export declare const getOptions: (options?: ApiOptions) => RefOrNormal<ApiFetch>;

/** Unwrap Ref or return value. */
export declare function getRef<T>(item: RefOrNormal<T>): T;

export declare type LazyItem = {
    status: ShallowRef<boolean>;
    ratio: ShallowRef<number>;
    entry: ShallowRef<IntersectionObserverEntry | undefined>;
    stopWatch: () => void;
};

export declare type LazyItemByMargin = {
    rootMargin: string;
    item: any;
};

export declare type LazyList = Record<string, LazyItem>;

/** List item structure. */
export declare type ListDataBasic = {
    label?: NumberOrString;
    value?: any;
    search?: string;
};

/** List items with state. */
export declare type ListDataFull<Item extends ListDataBasic = ListDataBasic> = ListDataFullItem<Item>[];

/** List item state properties. */
export declare type ListDataFullItem<Item extends ListDataBasic = ListDataBasic> = ListDataItem<Item> & {
    focus: boolean;
    highlight?: string;
    selected: boolean;
    disabled?: boolean;
};

/** List item with type and index. */
export declare type ListDataItem<Item extends ListDataBasic = ListDataBasic> = ConstrBind<Item & {
    parent?: string;
    type: ListType;
    index: string;
}>;

/** Manages data list state and selection. */
export declare class ListDataRef {
    constructor(list: RefOrNormal<ListListInput | undefined>, focus?: RefType<ListSelectedItem | undefined> | undefined, highlight?: RefType<string | undefined> | undefined, highlightLengthStart?: RefType<number | undefined> | undefined, filterMode?: RefType<boolean | undefined> | undefined, selected?: RefType<ListSelectedList | undefined> | undefined, keyValue?: RefType<string | undefined> | undefined, keyLabel?: RefType<string | undefined> | undefined, lite?: RefType<number | undefined> | undefined, min?: RefOrNormal<number | string | undefined>, max?: RefOrNormal<number | string | undefined>, parent?: string | undefined);
    readonly data: ComputedRef<ListList>;
    readonly liteData: ComputedRef<ListList>;
    readonly fullData: ComputedRef<ListDataFull>;
    readonly map: ComputedRef<ListList>;
    readonly mapItems: ComputedRef<ListList>;
    readonly items: ComputedRef<ListList>;
    readonly highlightFirstItem: ComputedRef<number>;
    readonly isSelected: ComputedRef<boolean>;
    readonly isSelectedMin: ComputedRef<boolean>;
    readonly isSelectedMax: ComputedRef<boolean>;
    readonly selectedList: ComputedRef<ListList>;
    readonly selectedListInGroup: ComputedRef<ListList>;
    readonly selectedNames: ComputedRef<ListNames>;
    readonly selectedValues: ComputedRef<any[]>;
    isLite(): boolean;
    isFocus(): boolean;
    isHighlight(): boolean;
    isHighlightActive(): boolean;
    getLength(): number;
    getLengthByMap(): number;
    getLengthByItems(): number;
    getFocus(): ListSelectedItem | undefined;
    getHighlight(): string | undefined;
    getHighlightLengthStart(): number;
    getSelected(): ListSelectedList | undefined;
    getSelectedByStep(step: number): ListSelectedItem | undefined;
    getSelectedNext(): ListSelectedItem | undefined;
    getSelectedPrev(): ListSelectedItem | undefined;
    getItemByStep(item: ListDataItem, step: number): ListDataItem | undefined;
    getItemNext(item: ListDataItem): ListDataItem | undefined;
    getItemPrev(item: ListDataItem): ListDataItem | undefined;
    getIndexByStep(index: string, step: number): ListDataItem | undefined;
    getIndexNext(index: string): ListDataItem | undefined;
    getIndexPrev(index: string): ListDataItem | undefined;
    getItemByIndex(index?: string): {
        key: number;
        item: ListDataItem;
    } | undefined;
    getItemByKey(key: number): ListDataItem | undefined;
    getFirstItemByParent(parent: string | undefined): ListDataItem | undefined;
    getLastItemByParent(parent: string | undefined): ListDataItem | undefined;
    getSubList(item: ListDataItem): ListDataRef;
}

export declare type ListList<Item extends ListDataBasic = ListDataBasic> = ListDataItem<Item>[];

export declare type ListListInput<Item extends ListDataBasic = ListDataBasic> = ListListInputItem<Item>[] | string[] | Record<string, ListListInputItem<Item>> | Record<string, string>;

export declare type ListListInputItem<Item extends ListDataBasic = ListDataBasic> = ConstrBind<Item>;

export declare type ListName = string | number | undefined;

export declare type ListNames = ListName[];

export declare type ListRecord<Item extends ListDataBasic = ListDataBasic> = ListList<Item> | Record<string, any>;

export declare type ListSelectedItem = NumberOrStringOrBoolean;

export declare type ListSelectedList = ListSelectedItem | ListSelectedItem[];

export declare type ListType = 'item' | 'space' | 'line' | 'subtitle' | 'html' | 'menu' | 'menu-group' | 'group';

export declare type RawChildren = string | number | boolean | VNode | VNodeArrayChildren | (() => any);

export declare type RawSlots = {
    [name: string]: unknown;
    $stable?: boolean;
};

export declare type RefOrNormal<T> = RefType<T> | T;

export declare type RefType<T> = ComputedRef<T> | Ref<T>;

export declare type RefUndefined<T> = RefType<T | undefined>;

/** Rendering helper. */
export declare function render<T extends ItemList>(name: string | any, props?: T, children?: RawChildren | RawSlots, index?: string): VNode;

/** Router navigation management. */
export declare class RouterItemRef {
    static get(): Router;
    static getLink(name: string, params?: any, query?: any): string | undefined;
    static getHref(name?: string, params?: any, query?: any): ConstrHrefProps;
    static push(to: string | RouteLocationRaw): void;
    static set(router: Router): void;
    static setOneTime(router: Router): void;
    static rawToHref(to?: string | RouteLocationRaw): ConstrHrefProps;
}

/** Reactive scrollbar width. */
export declare class ScrollbarWidthRef {
    readonly item: Ref<boolean | undefined, boolean | undefined>;
    readonly width: Ref<number, number>;
    constructor();
    readonly is: ComputedRef<boolean>;
}

export declare type SearchListInput<T extends SearchItem> = SearchListValueRef<T> | (() => SearchListValueRef<T>);

export declare type SearchListValueRef<T extends SearchItem> = RefOrNormal<SearchListValue<T>>;

/** Global API conditions setter. */
export declare const setApiRefGlobalConditions: (conditions: RefType<any>) => void;

/** Update Ref value. */
export declare function setRef<T>(item: Ref<T>, value: T): void;

/** Shorthand for useTranslateRef. */
export declare const t: <T extends string[]>(names: T) => ShallowRef<TranslateList<T>>;

/** Merge objects with class/style merging. */
export declare function toBind<R extends ItemList = ItemList>(extra: ItemList, value: ItemList): ConstrBind<R>;

/** Merge multiple objects with class/style merging. */
export declare function toBinds<R extends ItemList = ItemList>(...values: (ItemList | undefined)[]): ConstrBind<R>;

/** Wrap value in Ref. */
export declare function toRefItem<T>(item: RefOrNormal<T>): Ref<T>;

export declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;

/** Execute async API request immediately. */
export declare function useApiAsyncRef<R, T = R>(path?: RefOrNormal<string | undefined>, options?: ApiOptions, reactivity?: boolean, conditions?: RefType<boolean>, transformation?: (data: T, isResponseContractValid?: ApiDataValidation) => ApiData<R>, validateResponseContract?: (data: T) => ApiDataValidation, unmounted?: boolean, apiInstance?: ApiInstance): UseApiRef<R>;

/** API delete request. */
export declare function useApiDelete<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
    loading: Ref<boolean, boolean>;
    send(request?: Request | undefined): Promise<Return | undefined>;
};

/** API get request. */
export declare function useApiGet<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
    loading: Ref<boolean, boolean>;
    send(request?: Request | undefined): Promise<Return | undefined>;
};

/**
 * Orchestrates API loading, search, formatting, and mutations.
 * @remarks Recommended with `executeUse` for centralized state.
 * @example
 * const products = useApiManagementRef({ path: '/api/v1/products' }, { price: (v) => `${v} USD` });
 */
export declare function useApiManagementRef<Return extends ApiManagementValue, FormattersOptions extends FormattersOptionsList, Post extends Record<string, any>, Put extends Record<string, any>, Delete extends Record<string, any>, Type extends ApiManagementValue = Return, Item extends ArrayToItem<Return> = ArrayToItem<Return>, ItemFormatters extends FormattersListColumns<Item, FormattersOptions>[number] = FormattersListColumns<Item, FormattersOptions>[number], Columns extends SearchColumns<ItemFormatters> = []>(propsGet: ApiManagementGet<Return, Type>, formattersOptions?: FormattersOptions, searchOptions?: ApiManagementSearch<Item, Columns>, postRequest?: ApiManagementRequest<Post>, putRequest?: ApiManagementRequest<Put>, deleteRequest?: ApiManagementRequest<Delete>, action?: () => Promise<void> | void, apiInstance?: ApiInstance): {
    isValid: ComputedRef<boolean>;
    list: ComputedRef<SearchFormatList<ItemFormatters, Columns>>;
    readonly data: ComputedRef<ApiData<Return> | undefined>;
    readonly length: ComputedRef<number>;
    lengthData: ComputedRef<number>;
    starting: ComputedRef<boolean>;
    reading: Ref<boolean, boolean>;
    loading: Ref<boolean, boolean>;
    loadingSearch: Ref<boolean, boolean> | undefined;
    loadingPost: Ref<boolean, boolean> | undefined;
    loadingPut: Ref<boolean, boolean> | undefined;
    loadingDelete: Ref<boolean, boolean> | undefined;
    isSearch: ComputedRef<boolean> | undefined;
    search: Ref<string, string> | undefined;
    reset: () => Promise<void>;
    abort: () => void;
    sendPost: (request?: ApiFetch["request"]) => Promise<ApiData<Post> | undefined>;
    sendPut: (request?: ApiFetch["request"]) => Promise<ApiData<Put> | undefined>;
    sendDelete: (request?: ApiFetch["request"]) => Promise<ApiData<Delete> | undefined>;
};

/** API post request. */
export declare function useApiPost<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
    loading: Ref<boolean, boolean>;
    send(request?: Request | undefined): Promise<Return | undefined>;
};

/** API put request. */
export declare function useApiPut<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
    loading: Ref<boolean, boolean>;
    send(request?: Request | undefined): Promise<Return | undefined>;
};

/** API Ref return interface. */
export declare interface UseApiRef<R> {
    data: ComputedRef<ApiData<R> | undefined>;
    item: Ref<ApiData<R> | undefined>;
    isResponseContractValid: ComputedRef<boolean>;
    responseValidationResult: ComputedRef<ApiDataValidation | undefined>;
    length: ComputedRef<number>;
    starting: ComputedRef<boolean>;
    loading: Ref<boolean>;
    reading: Ref<boolean>;
    isStarting(): boolean;
    isLoading(): boolean;
    isReading(): boolean;
    getItem(): ApiData<R> | undefined;
    init(): void;
    initSsr(): void;
    reset(): Promise<void>;
    stop(): void;
    abort(): void;
}

/** Reactive API request management. */
export declare function useApiRef<R, T = R>(path?: RefOrNormal<string | undefined>, options?: ApiOptions, reactivity?: boolean, conditions?: RefType<boolean>, transformation?: (data: T, isResponseContractValid?: ApiDataValidation) => ApiData<R>, validateResponseContract?: (data: T) => ApiDataValidation, unmounted?: boolean, apiInstance?: ApiInstance): UseApiRef<R>;

/** General API request. */
export declare function useApiRequest<T, Request extends ApiFetch['request'] = ApiFetch['request'], Return extends ApiData<T> = ApiData<T>>(path?: RefOrNormal<string | undefined>, method?: ApiMethodItem, action?: (data: Return | undefined) => Promise<void> | void, transformation?: (data: T) => Return, toData?: boolean, options?: ApiOptions, apiInstance?: ApiInstance): {
    loading: Ref<boolean, boolean>;
    send(request?: Request): Promise<Return | undefined>;
};

/** Multi-tab reactive variable. */
export declare function useBroadcastValueRef<T>(name: string, defaultValue?: T | string | (() => (T | string))): Ref<BroadcastValueItem<T>>;

/** Reactive cookie management. */
export declare function useCookieRef<T>(name: string, defaultValue?: T | string | (() => (T | string)), options?: CookieOptions): Ref<T | string | undefined>;

/** Reactive formatting for lists. */
export declare function useFormattersRef<Options extends FormattersOptionsList = FormattersOptionsList, List extends FormattersListProp = FormattersListProp>(list: RefType<List | undefined>, options: Options): {
    listFormat: ComputedRef<FormattersReturn<List, Options>>;
    length: ComputedRef<number>;
};

/** Access formatting logic. */
export declare function useGeoIntlRef(): GeoIntlRef;

/** Reactive hash management. */
export declare function useHashRef<T>(name: string, defaultValue?: T | (() => T)): ShallowRef<T>;

/** Track element appearance by margin. */
export declare const useLazyItemByMarginRef: (element: RefType<HTMLElement | undefined>, rootMargin: string) => {
    lazyItemStatus: any;
    readonly lazyItem: any;
};

/** Track elements appearance via IntersectionObserver. */
export declare const useLazyRef: (options?: IntersectionObserverInit) => {
    intersectionObserver: IntersectionObserver | undefined;
    getItem(element: HTMLElement): LazyItem;
    addLazyItem(element: Ref<HTMLElement | undefined>): ShallowRef<boolean, boolean>;
    removeLazyItem: (element?: HTMLElement) => void;
    disconnectLazy: () => void | undefined;
};

/** Get loading status. */
export declare function useLoadingRef(): ShallowRef<boolean, boolean>;

/** Reactive meta tags management. */
export declare const useMeta: () => Readonly<{
    meta: typeof MetaStatic;
    title: Ref<string, string>;
    keyword: Ref<string, string>;
    description: Ref<string, string>;
    author: Ref<string, string>;
    image: Ref<string, string>;
    canonical: Ref<string, string>;
    robots: Ref<MetaRobots, MetaRobots>;
    siteName: Ref<string, string>;
    getHtmlMeta: () => string;
    setSuffix: (suffix: string) => typeof MetaStatic;
} & {
    init(): Readonly<{
        meta: typeof MetaStatic;
        title: Ref<string, string>;
        keyword: Ref<string, string>;
        description: Ref<string, string>;
        author: Ref<string, string>;
        image: Ref<string, string>;
        canonical: Ref<string, string>;
        robots: Ref<MetaRobots, MetaRobots>;
        siteName: Ref<string, string>;
        getHtmlMeta: () => string;
        setSuffix: (suffix: string) => typeof MetaStatic;
    }>;
    destroyExecute?(): void;
}>;

/** Router link list management. */
export declare const useRouterList: <T extends ListDataBasic>(list: RefType<ConstrBind<T>[] | undefined>, selected?: Ref<string> | string, hasTo?: boolean) => {
    item: ComputedRef<T | undefined>;
    selected: Ref<string, string>;
    label: ComputedRef<NumberOrString>;
    list: ComputedRef<ConstrBind<T>[]>;
    to: (name?: string) => void;
    toMain(): void;
};

/** Search logic for reactive data. */
export declare function useSearchRef<T extends SearchItem, K extends SearchColumns<T>>(list: SearchListInput<T>, columns: K, value?: Ref<string>, options?: SearchOptions): {
    isSearch: ComputedRef<boolean>;
    search: Ref<string, string>;
    loading: Ref<boolean, boolean>;
    listSearch: ComputedRef<SearchFormatList<T, K>>;
    length: ComputedRef<number>;
};

/** Search state with debounce/delay. */
export declare function useSearchValueRef<T extends SearchItem, K extends SearchColumns<T>>(item: SearchList<T, K>, value?: Ref<string>): {
    search: Ref<string, string>;
    searchDelay: Ref<string, string>;
    loading: Ref<boolean, boolean>;
};

/** Reactive session storage. */
export declare function useSessionRef<T>(name: string, defaultValue?: T | (() => T)): Ref<T | undefined>;

/** Reactive local storage. */
export declare function useStorageRef<T>(name: string, defaultValue?: T | (() => T), cache?: number): Ref<T | undefined>;

/**
 * Returns reactive translation list.
 * @example const translations = useTranslateRef(['home.title'] as const);
 */
export declare function useTranslateRef<T extends (string | string[])[]>(names: T, translateInstance?: TranslateInstance): ShallowRef<TranslateList<T>>;

export * from "@dxtmisha/functional-basic";
export { }