import {AdminSystemConfiguration} from "@/types/admin/page/props/admin-system-configuration";
import {PageProps} from "@/types/page";
import {Form, List, Edit, ParentEntity, SettingsSection, SettingsGroup, WebauthnForm} from "@/types/admin/page/props/base";
import {ManagePasskeys} from "@/types/modules/administrator-user";

export interface AdminPageProps extends PageProps {
    configuration: AdminSystemConfiguration;
}

export interface AdminLoginPageProps extends AdminPageProps {
    form?: Form;
    webauthnForm: WebauthnForm,
}

export interface AdminDetailPageProps<EditType> extends AdminPageProps {
    edit: Edit<EditType>;
    form?: Form;
}

export interface AdminAdminUserAccessMethodsPageProps extends AdminPageProps {
    passwordForm: Form;
    passkeys: ManagePasskeys;
    userAuthorizedToManage: boolean;
}

export interface AdminListPageProps<EntityType> extends AdminPageProps {
    list: List<EntityType>;
    parentEntity?: ParentEntity<EntityType>;
}

export interface AdminSettingsPageProps extends AdminPageProps {
    groups: Array<SettingsGroup>;
    settingsSections: Array<SettingsSection>;
}
