import type { ExtractPropTypes, InjectionKey, PropType, Ref } from 'vue';
export interface NamedAnchorProvider {
    names: Ref<Set<string>>;
    active: Ref<string | undefined>;
    activate: (name: string) => void;
    register: (name: string) => void;
    unregister: (name: string) => void;
}
export declare const NamedAnchorKey: InjectionKey<NamedAnchorProvider>;
export declare const makeNamedAnchor: <Defaults extends {
    offset?: unknown;
    scrollTarget?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
    offset: unknown extends Defaults["offset"] ? {
        type: (StringConstructor | NumberConstructor)[];
        default: number;
    } : Omit<{
        type: (StringConstructor | NumberConstructor)[];
        default: number;
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["offset"] ? string | number : NonNullable<string | number> | Defaults["offset"]>;
        default: unknown extends Defaults["offset"] ? string | number : NonNullable<string | number> | Defaults["offset"];
    };
    scrollTarget: unknown extends Defaults["scrollTarget"] ? {
        type: PropType<string | HTMLElement>;
    } : Omit<{
        type: PropType<string | HTMLElement>;
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["scrollTarget"] ? string | HTMLElement : Defaults["scrollTarget"] | NonNullable<string | HTMLElement>>;
        default: unknown extends Defaults["scrollTarget"] ? string | HTMLElement : Defaults["scrollTarget"] | NonNullable<string | HTMLElement>;
    };
};
export declare function useNamedAnchor(props: ExtractPropTypes<ReturnType<typeof makeNamedAnchor>>): {
    names: Ref<Set<string>>;
    active: Ref<string | undefined>;
    activate: (name: string) => void;
    register: (name: string) => void;
    unregister: (name: string) => void;
};
export declare const makeNamedAnchorItem: <Defaults extends {
    value?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
    value: unknown extends Defaults["value"] ? {
        type: StringConstructor;
        required: true;
    } : Omit<{
        type: StringConstructor;
        required: true;
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["value"] ? string : string | Defaults["value"]>;
        default: unknown extends Defaults["value"] ? string : string | Defaults["value"];
    };
};
export declare function useNamedAnchorItem(props: ExtractPropTypes<ReturnType<typeof makeNamedAnchorItem>>): {
    isWebHashHistory: import("vue").ComputedRef<boolean | undefined>;
    to: import("vue").ComputedRef<{
        query: {
            anchor: string;
        };
        replace: boolean;
        hash?: undefined;
    } | {
        hash: string;
        replace: boolean;
        query?: undefined;
    }>;
    isActive: import("vue").ComputedRef<boolean>;
    names: Ref<Set<string>>;
    active: Ref<string | undefined>;
    activate: (name: string) => void;
    register: (name: string) => void;
    unregister: (name: string) => void;
};
