import { DataTypes } from '@etsoo/shared';
import { SiteTab } from '../dto/site/SiteTab';
import { ArticleLink } from '../dto/site/ArticleLink';
import { SitePageProps, SiteTabPageProps } from '../props/SitePageProps';
import { StaticTabPageProps } from '../props/StaticTabPageProps';
/**
 * Site utilities
 * 网站工具
 */
export declare namespace SiteUtils {
    /**
     * Check the content should be considered as no content
     * @param content Check content
     * @returns Result
     */
    function checkNoContent(content?: string): boolean;
    /**
     * Format article URL
     * 格式化文章链接
     * @param item Article link item
     * @returns Result
     */
    function formatLink(item: ArticleLink): string;
    /**
     * Format tab URL
     * 格式化栏目地址
     * @param tab Tab
     * @returns Result
     */
    function formatUrl(tab: SiteTab): string;
    /**
     * Get JSON data
     * @param jsonData JSON data
     * @returns Result
     */
    function getJsonData<T>(jsonData: unknown): T | undefined;
    /**
     * Get placement
     * @param p Placement
     * @returns Style classes
     */
    function getPlacement(p: DataTypes.PlacementEnum): "top-0 start-0" | "top-0 start-50 translate-middle-x" | "top-0 end-0" | "top-50 start-0 translate-middle-y" | "top-50 start-50 translate-middle" | "top-50 end-0 translate-middle-y" | "bottom-0 start-0" | "bottom-0 start-50 translate-middle-x" | "bottom-0 end-0";
    /**
     * Get culture resource
     * @param key key
     * @returns Resource
     */
    function get<T = string>(key: string): T | undefined;
    /**
     * Get string resource
     * @param key key
     * @param defaultLabel Default label
     * @returns Resource
     */
    function getLabel(key: string, defaultLabel?: string): string;
    /**
     * Get multiple tring resources
     * @param keys Keys
     */
    function getLabels<T extends string>(...keys: T[]): {
        [K in T]: string;
    };
    /**
     * Is site tab page props
     * 是否为网站栏目页面属性
     * @param props Page props
     * @returns Result
     */
    function isSiteTabPageProps(props: SitePageProps): props is SiteTabPageProps;
    /**
     * Is static tab page props
     * 是否为静态栏目页面属性
     * @param props Page props
     * @returns Result
     */
    function isStaticTabPageProps(props: SiteTabPageProps): props is StaticTabPageProps;
    /**
     * Setup
     * @param culture Culture, like zh-Hans
     * @param customResources Custom resurces
     */
    function setup(culture: string, customResources: DataTypes.StringRecord): void;
    /**
     * Toggle button spinner show / hide
     * @param button Button
     * @param startSide In start side or not, default false
     */
    function toggleButtonSpinner(button: HTMLButtonElement, startSide?: boolean): void;
}
