declare namespace SgwModel {
  interface FishSpeciesResponse {
    fishes: Fish[];
    total: number;
  }

  interface FishCreateRequest {
    name: string;
    scientific_name?: string;
    group_name?: string;
    rarity_level?: number;
    note?: string;
  }

  interface FishUpdateRequest extends FishCreateRequest {
    id: number;
  }

  interface Fish {
    id?: number;
    name?: string;
    scientific_name?: string;
    group_name?: string;
    species_code?: string;
    note?: string;
    default_unit?: string;
    rarity_level?: number;
    created_at?: Date;
    updated_at?: Date;
    is_deleted?: boolean;
  }

  interface FishRarity {
    id: number;
    code: string;
    label: string;
    description: string;
    iucn_code: string | null;
    cites_appendix: string | null;
    vn_law: boolean;
  }

  interface CreateFishResponse {
    name_ids?: number[];
  }

  interface SearchFishPaginationBody extends MasterModel.SearchPaginationBody {
    order?: string;
    metadata?: {
      group_name?: string;
      rarity_level?: number;
    };
  }
}
