import { EntityTypes, Short, Extended, Any } from './trakt-entity.model.cjs'; import { TraktApiIds } from './trakt-id.model.cjs'; import { TraktImage } from './trakt-image.model.cjs'; import '@dvcol/common-utils/common/models'; import './trakt-client.model.cjs'; import '@dvcol/base-http-client'; import '@dvcol/common-utils/http/fetch'; import '../api/trakt-api.filters.cjs'; type BaseTraktPerson = { name: string; ids: TraktApiIds; }; declare const TraktPersonJob: { readonly Production: "production"; readonly Art: "art"; readonly Crew: "crew"; readonly CostumeAndMakeUp: "costume & make-up"; readonly Directing: "directing"; readonly Writing: "writing"; readonly Sound: "sound"; readonly Camera: "camera"; readonly VisualEffects: "visual effects"; readonly Lighting: "lighting"; readonly Editing: "editing"; }; type TraktPersonJobs = (typeof TraktPersonJob)[keyof typeof TraktPersonJob]; type TraktPersonExtended = BaseTraktPerson & { social_ids: { twitter: string; facebook: string; instagram: string; wikipedia: string; }; biography: string; /** Calendar Date in ISO 8601 format (YYYY-MM-DD) */ birthday: string; death: string; birthplace: string; homepage: string; gender: 'male' | 'female' | 'non_binary'; known_for_department: TraktPersonJobs; /** Timestamp in ISO 8601 GMT format (YYYY-MM-DD'T'hh:mm:ss.sssZ) */ updated_at: string; images: TraktImage; }; type TraktPerson

= P extends Short ? BaseTraktPerson : P extends Extended ? TraktPersonExtended : BaseTraktPerson & Partial; type BaseTraktCastMember

= { characters: string[]; person: TraktPerson

; }; type TraktCastMember = T extends 'episodes' ? BaseTraktCastMember

& { episode_count: number; series_regular?: boolean; } : T extends Short ? BaseTraktCastMember

: BaseTraktCastMember

& { episode_count?: number; series_regular?: boolean; }; type BaseTraktCrewMember

= { jobs: string[]; person: TraktPerson

; }; type TraktCrewMember = T extends 'episodes' ? BaseTraktCrewMember

& { episode_count: number; } : T extends Short ? BaseTraktCrewMember

: BaseTraktCrewMember

& { episode_count?: number; }; type TraktCrew = Partial[]>>; type BaseTraktCast = { cast: TraktCastMember[]; crew: TraktCrew; }; type TraktCastExtended = BaseTraktCast & { guest_stars: TraktCastMember[]; }; type TraktCast = T extends 'guest_stars' ? TraktCastExtended : T extends Short ? BaseTraktCast : BaseTraktCast & Partial>; type TraktPersonUpdate

= { /** Timestamp in ISO 8601 GMT format (YYYY-MM-DD'T'hh:mm:ss.sssZ) */ updated_at: string; person: TraktPerson

; }; export { type BaseTraktPerson, type TraktCast, type TraktCastMember, type TraktCrew, type TraktCrewMember, type TraktPerson, type TraktPersonExtended, TraktPersonJob, type TraktPersonJobs, type TraktPersonUpdate };