export * from '../@types/common';
export * from '../@types/page';
export * from '../@types/pagination-model';
export interface BaseComponentProps {
    className?: string;
    style?: React.CSSProperties;
    'data-testid'?: string;
}
export interface ThemeConfig {
    mode: 'light' | 'dark';
    primaryColor?: any;
    direction: 'ltr' | 'rtl';
}
export interface ERPUIProviderProps {
    theme?: ThemeConfig;
    children: React.ReactNode;
}
export interface LibraryReduxSlices {
    share?: any;
    header?: any;
    reportsTitleBar?: any;
}
export interface ReduxIntegration {
    slices: LibraryReduxSlices;
    middleware: any[];
}
export interface SelectOption {
    label: string;
    value: any;
    disabled?: boolean;
}
export interface TableColumn {
    id: string;
    label: string;
    minWidth?: number;
    align?: 'left' | 'right' | 'center';
    format?: (value: any) => string;
}
export interface PaginationProps {
    count: number;
    page: number;
    rowsPerPage: number;
    onPageChange: (event: unknown, newPage: number) => void;
    onRowsPerPageChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
}
export interface FormField {
    name: string;
    label: string;
    type: string;
    required?: boolean;
    validation?: any;
}
export interface ApiResponse<T = any> {
    success: boolean;
    data?: T;
    message?: string;
    error?: string;
}
export interface Language {
    code: string;
    name: string;
    direction: 'ltr' | 'rtl';
    flag?: string;
}
export interface LanguageContextType {
    currentLanguage: Language;
    availableLanguages: Language[];
    changeLanguage: (languageCode: string) => void;
    t: (key: string, params?: Record<string, any>) => string;
}
export interface User {
    id: string;
    name: string;
    email: string;
    role?: string;
    permissions?: string[];
}
export interface AuthContextType {
    user: User | null;
    isAuthenticated: boolean;
    login: (credentials: any) => Promise<void>;
    logout: () => void;
    loading: boolean;
}
export interface PageContextType {
    currentPage: string;
    setCurrentPage: (page: string) => void;
    breadcrumbs: any[];
    setBreadcrumbs: (breadcrumbs: any[]) => void;
}
export interface Permission {
    resource: string;
    action: string;
    granted: boolean;
}
export interface PermissionContextType {
    permissions: Permission[];
    hasPermission: (resource: string, action: string) => boolean;
    loading: boolean;
}
