export type PetStates = 'stay' | 'follow' | 'vehicle' | 'attacking' | 'sitting' | 'searching' | 'entering_vehicle';

export type PetAnimations = 'sit' | 'itch' | 'laydown' | 'drawattention' | 'bark' | 'taunt' | 'attack';

export interface PetMovingState {
    x: number;
    y: number;
    z: number;
    heading: number;
}

export interface PetVehicleState {
    remoteId: number;
    seat: number;
}

export interface PetState {
    state: PetStates;
    vehicle: PetVehicleState | null;
    attacking: number | null;
    moving: PetMovingState | null;
    animation: PetAnimations | null;
    searching: {
        vehicle?: number;
        player?: number;
        corpse?: Vector3;
    } | null;
}

export interface PetStats {
    id: number;
    hash: string;
    breed: string;
    type: 'dog' | 'cat';
    agility: number;
    can_attack: boolean;
    can_enter_vehicle: boolean;
    special: boolean;
    character_id: number | null;
    faction_id: number | null;
    spawned_by: number;
}

export interface VehiclePetData {
    stats: PetStats;
    state: PetState;
    clothes: [number, number, number, number][] | null;
}

export type PetFactionType = 'law' | 'medic' | 'gov' | 'gang' | 'ocg';
