import { DataTypes } from "@etsoo/shared";
import React from "react";
import { CommonPageProps } from "./CommonPage";
import type { OperationMessageHandlerAll } from "../messages/OperationMessageHandler";
import { ViewContainerProps } from "../ViewContainer";
import { StackProps } from "@mui/material/Stack";
/**
 * View page action bar
 * @param props Props
 * @returns Component
 */
export declare function ViewPageActionBar(props: StackProps & {
    actionPaddings?: number | Record<string, string | number>;
}): import("react/jsx-runtime").JSX.Element;
/**
 * View page props
 */
export interface ViewPageProps<T extends DataTypes.StringRecord> extends Omit<CommonPageProps, "children">, Omit<ViewContainerProps<T>, "data" | "refresh"> {
    /**
     * Actions
     */
    actions?: React.ReactNode | ((data: T, refresh: () => PromiseLike<void>) => React.ReactNode);
    /**
     * Paddings between actions
     */
    actionPaddings?: number | Record<string, string | number>;
    /**
     * Children
     */
    children?: React.ReactNode | ((data: T, refresh: () => PromiseLike<void>) => React.ReactNode);
    /**
     * Load data
     */
    loadData: () => PromiseLike<T | undefined>;
    /**
     * Pull to refresh data
     */
    pullToRefresh?: boolean;
    /**
     * Support refresh
     */
    supportRefresh?: boolean;
    /**
     * Operation message handler
     */
    operationMessageHandler?: OperationMessageHandlerAll | {
        id: number;
        types: string[];
    };
    /**
     * Title bar
     * @param data Data to render
     * @returns
     */
    titleBar?: (data: T) => React.ReactNode;
}
/**
 * View page
 * @param props Props
 */
export declare function ViewPage<T extends DataTypes.StringRecord>(props: ViewPageProps<T>): import("react/jsx-runtime").JSX.Element;
