/**
 * AIS记录
 */
export interface AISRecord {
    mmsi?: number;
    name?: string;
    imo?: number;
    callSign?: string;
    lat?: number;
    lng?: number;
    length?: number;
    width?: number;
    draught?: number;
    sog?: number;
    cog?: number;
    hdg?: number;
    rot?: number;
    eta?: string;
    destination?: string;
    positionTime?: number;
    status?: number;
    labelCn?: string;
    labelEn?: string;
    method?: string;
    vendor?: string;
    deleted?: boolean;
    utc?: string;
    vesselType?: string;
    flag?: string;
    clasz?: string;
    build?: string;
    dwt?: number;
    grt?: number;
    net?: number;
    meteo?: string;
    type?: string;
}
export interface VesselRecord {
    mmsi?: number;
    name?: string;
    imo?: number;
    callSign?: string;
    length?: number;
    breadth?: number;
    draught?: number;
    deadweight?: number;
    vendor?: string;
    score?: number;
    type?: string;
}
export interface AuthToken {
    accessToken: string;
    tokenType?: string;
    expiresIn?: number;
    scope?: string;
    jti?: string;
    issuedAt?: string;
}
export declare class AISImpl {
    /**
     * 解析AIS状态码
     * @param status
     */
    parseStatus(status: number): {
        labelCn: string;
        labelEn: string;
    };
}
export declare class MyVesselImpl extends AISImpl {
    private readonly clientId;
    private readonly clientSecret;
    private token;
    constructor(clientId: string, clientSecret: string);
    authToken(options?: {
        requestId?: string;
    }): Promise<void>;
    checkToken(options?: {
        requestId?: string;
    }): Promise<AuthToken | undefined>;
    /**
     * 模糊查询
     * @param kw
     * @param options
     */
    suggest(kw: string, options?: {
        requestId?: string;
        ps?: number;
    }): Promise<any>;
    /**
     * imo/mmsi 精确查询
     * @param imo
     * @param options
     */
    search(imo: number, options?: {
        requestId?: string;
        ps?: number;
    }): Promise<{
        mmsi?: undefined;
        imo?: undefined;
        callSign?: undefined;
        name?: undefined;
        nameCn?: undefined;
        type?: undefined;
        flagName?: undefined;
        clasz?: undefined;
        dateOfBuild?: undefined;
        deadweight?: undefined;
        grossTonnage?: undefined;
        netTonnage?: undefined;
        teu?: undefined;
        length?: undefined;
        breadth?: undefined;
        height?: undefined;
        draught?: undefined;
        speed?: undefined;
        passengerCapacity?: undefined;
        vendor?: undefined;
        raw?: undefined;
    } | {
        mmsi: any;
        imo: number | null;
        callSign: any;
        name: any;
        nameCn: any;
        type: any;
        flagName: any;
        clasz: any;
        dateOfBuild: any;
        deadweight: any;
        grossTonnage: any;
        netTonnage: any;
        teu: any;
        length: any;
        breadth: any;
        height: any;
        draught: any;
        speed: any;
        passengerCapacity: any;
        vendor: string;
        raw: any;
    }>;
    archives(mmsi: any, options?: {
        requestId?: string;
    }): Promise<any>;
    realTimePosition(mmsi: number, options?: {
        requestId?: string;
    }): Promise<AISRecord>;
    /**
     * @param from 始发点坐标 { lng, lat }
     * @param to 目的点坐标 { lng, lat }
     * @param crossMonths 规划月份 [1,...,12]
     * @param excludeNodes 排除关键节点, [node.code]
     * @param excludeSeas  排除水域, [sea.code]
     * @param options { requiretId: '请求ID', useAIModel: '启用AI算法', withECA: '是否计算低硫区航行距离', withSpecial: '是否计算穿越的特战区列表和海盗区列表', draught: '最大吃水' }
     */
    calculateRoute(from: {
        lng?: number;
        lat?: number;
        code?: string;
    }, to: {
        lng?: number;
        lat?: number;
        code?: string;
    }, crossMonths: number[], excludeNodes: string[], excludeSeas: string[], options?: {
        requestId?: string;
        useAIModel?: boolean;
        withECA?: boolean;
        withSpecial?: boolean;
        draught?: number;
    }): Promise<any>;
    trajectory(mmsi: number, startTime: string, endTime: string, offset: number, scale?: boolean, options?: {
        requestId?: string;
    }): Promise<AISRecord[]>;
    private trajectoryIn30Day;
}
export declare class HifleetImpl extends AISImpl {
    private readonly token;
    constructor(token: string);
    realTimePosition(mmsi: number, options?: {
        requestId?: string;
    }): Promise<AISRecord>;
    search(kw: string, options?: {
        requestId?: string;
    }): Promise<VesselRecord>;
    suggest(kw: string, options?: {
        requestId?: string;
    }): Promise<VesselRecord>;
    trajectory(mmsi: number, startTime: string, endTime: string, offset: number, scale?: boolean, options?: {
        requestId?: string;
    }): Promise<AISRecord[]>;
}
export declare class ShipxyImpl extends AISImpl {
    private readonly token;
    constructor(token: string);
    realTimePosition(mmsi: number, options?: {
        requestId?: string;
    }): Promise<AISRecord>;
    trajectory(mmsi: number, startTime: string, endTime: string, offset: number, scale?: boolean, options?: {
        requestId?: string;
    }): Promise<AISRecord[]>;
}
export declare class MyShipImpl extends AISImpl {
    private readonly token;
    constructor(token: string);
    getShipId(mmsi: any, options?: {
        requestId?: string;
    }): Promise<string>;
    getShipInfo(shipId: string, options?: {
        requestId?: string;
    }): Promise<AISRecord>;
    realTimePosition(mmsi: number, options?: {
        requestId?: string;
    }): Promise<AISRecord>;
    trajectory(mmsi: number, startTime: string, endTime: string, offset: number, scale?: boolean, options?: {
        requestId?: string;
    }): Promise<AISRecord[]>;
    private trajectoryIn30Day;
}
