import * as react_jsx_runtime from 'react/jsx-runtime';
import React__default from 'react';
import { S as ShowSkeletonProps } from '../chunks/ShowSkeleton-enwVHCqE.js';

declare const ChildContainer: ({ children, className, }: {
    children: React__default.ReactNode;
    className?: string;
}) => react_jsx_runtime.JSX.Element;

declare const Container: ({ children, className, }: {
    children: React__default.ReactNode;
    className?: string;
}) => react_jsx_runtime.JSX.Element;

type MenuItemConfig = {
    value: string;
    label: string;
    path?: string;
    onClick?: () => void;
    subItems?: {
        label: string;
        onClick: () => void;
    }[];
    /** Função customizada para determinar se o item está ativo */
    isActive?: (pathname: string) => boolean;
};

interface StepNavigatorProps {
    /** Índice atual do passo */
    currentIndex: number;
    /** Total de passos */
    totalSteps: number;
    /** Ação ao clicar em "Anterior" */
    onPrev: () => void;
    /** Ação ao clicar em "Próximo" */
    onNext: () => void;
    /** Desabilita os botões (ex: loading) */
    disabled?: boolean;
    /** Personalização opcional dos rótulos */
    prevLabel?: string;
    nextLabel?: string;
    /** Controla se deve ocultar os botões ao chegar nas extremidades */
    hideEdgeButtons?: boolean;
    className?: string;
}

interface CrudCreatePageProps {
    /** Propriedades de cabeçalho e metadados da página */
    metadata: {
        /** Título da página (tag `<title>`) */
        title: string;
        /** Título principal exibido no cabeçalho (Header) da página */
        headerTitle: string;
        /** Descrição exibida abaixo do título no cabeçalho */
        headerDescription: string;
    };
    /** Ações e controles da página (ex: barra de ferramentas) */
    actions: {
        /** Indica se há uma ação pendente (ex: salvando dados), desabilitando botões */
        isPendingAction?: boolean;
        /** Referência para o formulário principal, usado para submissão via botão de ação do layout */
        formRef: React__default.RefObject<HTMLFormElement | null>;
        /** Rótulo personalizado para a ação principal (opcional) */
        actionLabel?: string;
        /** Elementos React adicionais para renderizar na área de ações (botões extras) */
        actions?: React__default.ReactNode;
    };
    /** Conteúdo principal da página (títulos, formulário, abas, etc.) */
    content: {
        /** Título exibido no corpo da página (acima do formulário/conteúdo) */
        pageTitle: string;
        /** Descrição exibida no corpo da página */
        pageDescription: string;
        /** Elementos de abas (tabs) a serem exibidos */
        tabs?: React__default.ReactNode;
        /** Informações extras a serem exibidas no corpo da página */
        extraInfo?: React__default.ReactNode;
        /** O componente de formulário em si a ser renderizado */
        form: React__default.ReactNode;
        /** Elementos filhos adicionais a serem renderizados */
        children?: React__default.ReactNode;
        /** Classes CSS adicionais para o container principal da página */
        pageClassName?: string;
    };
    /** Configurações do menu de navegação e breadcrumbs (opcional) */
    menu?: {
        /** Caminho (URL) atual para destacar o item ativo no menu */
        currentPath: string;
        /** Lista de itens de configuração do menu */
        menuItems: MenuItemConfig[];
        /** Função de callback acionada ao navegar pelo menu */
        onNavigate: (path: string) => void;
    };
    /** Indica se a página está carregando os dados iniciais (exibe skeleton) */
    isLoading?: boolean;
}
declare function CrudCreatePage({ metadata, actions, content, menu, isLoading, }: CrudCreatePageProps): react_jsx_runtime.JSX.Element;

interface CrudEditPageProps {
    /** Propriedades de cabeçalho e metadados da página */
    metadata: {
        /** Título da página (tag `<title>`) */
        title: string;
        /** Título principal exibido no cabeçalho (Header) da página */
        headerTitle: string;
        /** Descrição exibida abaixo do título no cabeçalho */
        headerDescription: string;
    };
    /** Ações e controles da página (ex: salvar, excluir) */
    actions: {
        /** Indica se há uma ação pendente (ex: salvando ou excluindo dados), desabilitando botões */
        isPendingAction?: boolean;
        /** Referência para o formulário principal, usado para submissão via botão de ação do layout */
        formRef: React__default.RefObject<HTMLFormElement | null>;
        /** ID numérico da entidade atual sendo editada (se null, assume-se que não foi encontrada) */
        entityId?: number | null;
        /** Função de callback acionada ao confirmar a exclusão do registro */
        onDelete?: (id: number) => void;
        /** Título da modal de confirmação de exclusão */
        titleModal?: string;
        /** Descrição da modal de confirmação de exclusão */
        descriptionModal?: string;
        /** Elementos React adicionais para renderizar na área de ações (botões extras) */
        customActions?: React__default.ReactNode;
    };
    /** Conteúdo principal da página (títulos, formulário, abas, etc.) */
    content: {
        /** Título exibido no corpo da página (acima do formulário/conteúdo) */
        pageTitle: string;
        /** Descrição exibida no corpo da página */
        pageDescription: string;
        /** Elementos de abas (tabs) a serem exibidos */
        tabs?: React__default.ReactNode;
        /** Informações extras a serem exibidas no corpo da página */
        extraInfo?: React__default.ReactNode;
        /** O componente de formulário em si a ser renderizado */
        form: React__default.ReactNode;
        /** Elementos filhos adicionais a serem renderizados */
        children?: React__default.ReactNode;
        /** Classes CSS adicionais para o wrapper principal de listagem do page content */
        pageClassName?: string;
        /** Título exibido quando o registro não é encontrado (`entityId` ausente) */
        notFoundTitle?: string;
        /** Descrição exibida quando o registro não é encontrado (`entityId` ausente) */
        notFoundDescription?: string;
    };
    /** Configurações do menu de navegação e breadcrumbs (opcional) */
    menu?: {
        /** Caminho (URL) atual para destacar o item ativo no menu */
        currentPath: string;
        /** Lista de itens de configuração do menu */
        menuItems: MenuItemConfig[];
        /** Função de callback acionada ao navegar pelo menu */
        onNavigate: (path: string) => void;
    };
    /** Indica se os dados do registro ainda estão sendo carregados (exibe skeleton caso sim) */
    isLoading?: boolean;
}
declare function CrudEditPage({ metadata, actions, content, menu, isLoading }: CrudEditPageProps): react_jsx_runtime.JSX.Element;

interface CrudListPageProps {
    /** Propriedades de cabeçalho e metadados da página */
    metadata: {
        /** Título da página web (inserido na tag `<title>`) */
        pageTitle: string;
        /** Título principal exibido no cabeçalho (Header) da aplicação */
        headerTitle: string;
        /** Descrição exibida abaixo do título no cabeçalho */
        headerDescription?: string;
    };
    /** Ações e componentes no topo da tabela / barra de ferramentas */
    actions: {
        /** Define se a tabela está em carregamento (desabilita navegação e ações) */
        isLoadingTable?: boolean;
        /** Botões ou elementos de ação (ex: botão de Criar, Exportar) a renderizar ao lado direito */
        actions?: React__default.ReactNode;
        /** Componente da área de importação, posicionado logo abaixo da barra de ações */
        importArea?: React__default.ReactNode;
    };
    /** Conteúdo principal da listagem (filtros, tabelas, etc.) */
    content: {
        /** O conteúdo que compõe a página (normalmente o componente DataTable e seus contêineres e filtros) */
        children: React__default.ReactNode;
    };
    /** Configurações do menu de navegação superior/lateral (opcional) */
    menu?: {
        /** Caminho atual da rota, usado para identificar a aba/menu ativo */
        currentPath: string;
        /** Estrutura que mapeia as opções / abas de navegação do menu */
        menuItems: MenuItemConfig[];
        /** Função chamada quando o usuário clica em algum dos itens de menu */
        onNavigate: (path: string) => void;
    };
}
declare function CrudListPage({ metadata, actions, content, menu }: CrudListPageProps): react_jsx_runtime.JSX.Element;

interface CrudShowPageProps<TId extends string | number = string | number> {
    /** Propriedades de cabeçalho e metadados da página */
    metadata: {
        /** Título da página (tag `<title>`) */
        title: string;
        /** Título principal exibido no cabeçalho (Header) da página */
        headerTitle: string;
        /** Descrição exibida abaixo do título no cabeçalho */
        headerDescription: string;
    };
    /** Ações e controles de registro na visualização (ex: editar, excluir) */
    actions: {
        /** Indica se há uma ação pendente ativada, desabilitando a maioria dos cliques em botões de ação */
        isPendingAction?: boolean;
        /** ID do registro a ser visualizado. Se omitido/nulo, a página exibirá estado de Not Found */
        entityId?: TId | null | undefined;
        /** Função de callback acionada na exclusão do registro */
        onDelete?: (id: TId) => void;
        /** Função de callback acionada ao solicitar edição (navega/abre modal de edição) */
        onEdit?: (id: TId) => void;
        /** Título da modal de expurgação do registro (confirmação da deleção) */
        titleModal?: string;
        /** Descrição informativa que aparece na modal de expurgação do registro */
        descriptionModal?: string;
        /** Bôtões/Links extras que você deseja incorporar diretamente na barra de menus, substituindo os actions padrão se os providos não atenderem (código arbitrário de barra de ferramentas) */
        customActions?: React__default.ReactNode;
    };
    /** Conteúdo e estados principais para visualização */
    content: {
        /** Componente customizado Skeleton exibido durante carregamento (substitui inteiramente o Skeleton padrão da lib) */
        skeleton?: React__default.ReactNode;
        /** Propriedades que parametrizam o componente integrado ShowSkeleton do ivt-lib caso você não informe seu próprio skeleton na prop acima. */
        skeletonProps?: ShowSkeletonProps;
        /** Título do componente `ShowNotFound` exibido se não encontrado nenhum entityId ou o registro estiver faltando */
        notFoundTitle: string;
        /** Descrição para detalhar o tipo de NotFound (`Registro xyz requisitado na url... não encontrado`) */
        notFoundDescription: string;
        /** Cabeçalho interno informando a aba ativa (Visualização dos Detalhes, etc) a sobre o form-group */
        pageTitle: string;
        /** Breve descrição interna contextualizando os campos detalhados exibidos pelo ShowPage */
        pageDescription: string;
        /** Área opcional alinhada no corpo da página para componentes soltos/parágrafos extras antes dos child nodes principais (Detalhes do registro) */
        extraInfo?: React__default.ReactNode;
        /** Conteúdo minucioso renderizado (os detalhes dos campos da View/Registro) */
        children?: React__default.ReactNode;
    };
    /** Configurações de seções de menus/rotas para a Entidade corrente (opcional) */
    menu?: {
        /** Caminho base ativado sublinhado entre navegações do MenuBar */
        currentPath: string;
        /** As demais aberturas tabuladas por url configurados no header/menubar local. Array limitando acesso e seções do menu */
        menuItems: MenuItemConfig[];
        /** Dispara ação de clique num tablink de seções paralelas contiguas para tal entidade */
        onNavigate: (path: string) => void;
    };
    /** Define se a tela carrega do backend seus dados; O Skeleton fará a cobertura visual caso true */
    isLoading?: boolean;
}
declare function CrudShowPage<TId extends string | number = string | number>({ metadata, actions, content, menu, isLoading, }: CrudShowPageProps<TId>): react_jsx_runtime.JSX.Element;

interface LayoutActionsProps {
    children: React__default.ReactNode;
    className?: string;
}
declare function LayoutActions({ children, className }: LayoutActionsProps): react_jsx_runtime.JSX.Element;

interface ListItemProps {
    title: string;
    value: any;
    linkHref?: string;
    isBoolean?: boolean;
    className?: string;
    hasTooltip?: boolean;
    tooltipContent?: React__default.ReactNode;
}
declare const ListItem: React__default.FC<ListItemProps>;

interface PageComponentProps {
    title: string;
    description: string;
    children?: React__default.ReactNode;
    extraInfo?: React__default.ReactNode;
    extraDescription?: React__default.ReactNode;
    tabs?: React__default.ReactNode;
    form?: React__default.ReactNode;
    className?: string;
    classNames?: {
        container?: string;
        childContainer?: string;
        sectionInfo?: string;
        contentWrapper?: string;
        tabsWrapper?: string;
    };
}
declare const PageComponent: React__default.FC<PageComponentProps>;

interface SectionInfoProps {
    title?: string;
    description?: string;
    className?: string;
    extraDescription?: React__default.ReactNode;
}
declare const SectionInfo: React__default.FC<SectionInfoProps>;

interface ShowDetailsItem extends ListItemProps {
    isVisible?: boolean;
}
interface ShowDetailsProps extends React__default.HTMLAttributes<HTMLElement> {
    items?: ShowDetailsItem[];
    stepNavigator?: StepNavigatorProps;
}
declare const ShowDetails: React__default.FC<ShowDetailsProps>;

interface ShowNotFoundProps {
    title: string;
    description: string;
}
declare const ShowNotFound: React__default.FC<ShowNotFoundProps>;

export { ChildContainer, Container, CrudCreatePage, CrudEditPage, CrudListPage, CrudShowPage, LayoutActions, ListItem, PageComponent, SectionInfo, ShowDetails, ShowNotFound };
export type { CrudCreatePageProps, CrudEditPageProps, CrudListPageProps, CrudShowPageProps, LayoutActionsProps, ListItemProps, PageComponentProps, ShowDetailsItem, ShowDetailsProps };
