import { default as React } from 'react';
import { RuleGroupType } from 'react-querybuilder';
import { MaterialTableColumnProps } from '../components/material-table/material-table';

export type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';
interface SchemaFields {
    select: string;
    alias: string;
    type: string;
    filter_type?: string;
    filter_name?: string;
    required?: boolean;
    isOrderAllowed?: boolean;
    isDefault?: boolean;
    isFilterAllowed?: boolean;
    label?: string;
    key: string;
    accessorKey?: string;
    joinKey?: string;
    enum?: string | string[];
}
export interface SavedViewType {
    label: ViewType;
    position: number;
}
export interface PageState {
    _id: string | number;
    name: string;
    page_size: number;
    column_order: string[];
    visible_columns: MaterialTableColumnProps[];
    views: SavedViewType[];
    active_view: ViewType;
    filters: RuleGroupType;
    filterQueryString: string;
    sort: Record<any, any> | null;
    search: string;
    enabled_views: ViewType[];
    isShared: boolean;
    column_sizes: Record<string, number>;
}
export interface GeneratedColumnsState {
    columns: MaterialTableColumnProps[];
    orderKeys: string[];
}
export declare const initialFilter: RuleGroupType;
interface PageContextValue {
    pageTemplateId: string;
    activePage: PageState;
    updatePageInfo: (updates: Partial<PageState>) => void;
    loading: boolean;
    isSaving: boolean;
    error: string | null;
    pages: any[];
    savePages: () => void;
    setActivePage: (data: any) => void;
    setPages: React.Dispatch<any>;
    schemaFields: SchemaFields[];
    initializeColumns: (columns: MaterialTableColumnProps[]) => void;
    generatedColumns: GeneratedColumnsState;
    sharedPages: any[];
    updateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;
    formData: Record<string, any>;
    setFormData: (data: Record<string, any>) => void;
}
export declare const defaultPageState: PageState;
interface PageProviderProps {
    children: React.ReactNode;
    routeToColumnsMap?: Record<string, any>;
    routeToResourceMap?: Record<string, any>;
}
export declare const PageContext: React.Context<PageContextValue>;
export declare const PageProvider: React.FC<PageProviderProps>;
export {};
