import shipsData from '../../data/ships.json';
import { ShipArchetype, ShipSize, SlotWithGunports, SlotWithGunportsAcrossDecks } from '../types/ShipProperties';
import { Contract } from './contracts';
import { Item } from './items';
import { Material } from './materials';
import { Season } from './seasons';
export declare class Ship {
    readonly id: string;
    readonly size: ShipSize;
    readonly type: string;
    readonly archetype: ShipArchetype;
    readonly contract: Contract | undefined;
    readonly blueprint: string | string[] | undefined;
    readonly obtainable: string | Item | Array<string | Item> | Array<Array<string | Item> | Item | string> | undefined;
    readonly season: Season | undefined;
    readonly hitpoints: number;
    readonly braceStrength: number;
    readonly braceStrengthRecovery: number;
    readonly stamina: number | undefined;
    readonly baseRank: number;
    readonly requiredRank: string | undefined;
    readonly contact: string | undefined;
    readonly sailSpeed: {
        halfSail: number;
        fullSail: number;
        travelSail: number;
    };
    readonly cargo: {
        cargoSlots: number;
        cargoMaxWeight: number;
    };
    readonly required: Map<Material, number> | undefined;
    readonly slots: {
        attachement?: SlotWithGunports;
        frontWeapon?: SlotWithGunportsAcrossDecks;
        leftSideWeapon?: SlotWithGunportsAcrossDecks;
        rightSideWeapon?: SlotWithGunportsAcrossDecks;
        aftWeapon?: SlotWithGunportsAcrossDecks;
        auxiliaryWeapon?: SlotWithGunports;
        furniture?: SlotWithGunports;
        ultimate?: SlotWithGunports;
    };
    readonly perks: string[];
    readonly dateAdded: Date;
    readonly lastUpdated: Date;
    constructor(id: string, size: ShipSize, type: string, archetype: ShipArchetype, contract: Contract | undefined, blueprint: string | string[] | undefined, obtainable: string | Item | Array<string | Item> | Array<Array<string | Item> | Item | string> | undefined, season: Season | undefined, hitpoints: number, braceStrength: number, braceStrengthRecovery: number, stamina: number | undefined, baseRank: number, requiredRank: string | undefined, contact: string | undefined, sailSpeed: {
        halfSail: number;
        fullSail: number;
        travelSail: number;
    }, cargo: {
        cargoSlots: number;
        cargoMaxWeight: number;
    }, required: Map<Material, number> | undefined, slots: {
        attachement?: SlotWithGunports;
        frontWeapon?: SlotWithGunportsAcrossDecks;
        leftSideWeapon?: SlotWithGunportsAcrossDecks;
        rightSideWeapon?: SlotWithGunportsAcrossDecks;
        aftWeapon?: SlotWithGunportsAcrossDecks;
        auxiliaryWeapon?: SlotWithGunports;
        furniture?: SlotWithGunports;
        ultimate?: SlotWithGunports;
    }, perks: string[], dateAdded: Date, lastUpdated: Date);
    static fromRawData(rawData: any): Ship;
    static loadShips(): Record<string, Ship>;
}
type Ships = {
    [K in keyof typeof shipsData]: Ship;
};
export declare const Ships: Ships;
export {};
//# sourceMappingURL=ships.d.ts.map