// resources/js/types/global.ts

import type { route as routeFn } from 'ziggy-js';

declare global {
    const route: typeof routeFn;
    
    interface Window {
        can: (permission: string) => boolean;
        __: (key: string) => string;
    }
    
    function can(permission: string): boolean;
    function __(key: string): string;
}

export interface Permission {
    id: number;
    name: string;
    guard_name: string;
    created_at: string;
    updated_at: string;
}

export interface Role {
    id: number;
    uid: string;
    name: string;
    slug: string;
    guard_name: string;
    can_edit: number;
    can_delete: number;
    permissions: Permission[];
    created_at: string;
    updated_at: string;
    deleted_at?: string;
}

export interface User {
    id: number;
    name: string;
    email: string;
    email_verified_at: string | null;
    created_at: string;
    updated_at: string;
    permissions: string[];
    roles: string[];
}

export interface ModulePermissions {
    [module: string]: string[];
}

export interface PageProps {
    auth: {
        user: User;
    };
    roles: Role[];
    permissions: Record<string, Permission[]>;
    modulePermissions: ModulePermissions;
    flash: {
        success?: string;
        error?: string;
    };
}

export interface FormData {
    name: string;
    permissions: string[];
}

export interface Breadcrumb {
    title: string;
    href: string;
}
