import { z } from '@hono/zod-openapi';
import { SupplierSchema, CreateSupplierDto, UpdateSupplierDto } from '../schemas/supplier.mt.schema';
import { UserSupplierSchema, CreateUserSupplierDto, UpdateUserSupplierDto } from '../schemas/user-supplier.mt.schema';
import { AdminSupplierSchema, CreateAdminSupplierDto, UpdateAdminSupplierDto } from '../schemas/admin-supplier.mt.schema';

export type Supplier = z.infer<typeof SupplierSchema>;
export type CreateSupplier = z.infer<typeof CreateSupplierDto>;
export type UpdateSupplier = z.infer<typeof UpdateSupplierDto>;

export type UserSupplier = z.infer<typeof UserSupplierSchema>;
export type CreateUserSupplier = z.infer<typeof CreateUserSupplierDto>;
export type UpdateUserSupplier = z.infer<typeof UpdateUserSupplierDto>;

export type AdminSupplier = z.infer<typeof AdminSupplierSchema>;
export type CreateAdminSupplier = z.infer<typeof CreateAdminSupplierDto>;
export type UpdateAdminSupplier = z.infer<typeof UpdateAdminSupplierDto>;

export interface SupplierQueryOptions {
  page?: number;
  limit?: number;
  search?: string;
  state?: number;
  createdBy?: number;
}

export interface SupplierStats {
  total: number;
  active: number;
  inactive: number;
  todayLogins: number;
}