import type { Grib2Sections } from '..';
import type { Reader } from '../../..';
/** The output of `getGrib2Template4` */
export type Grib2ProductDefinition = ReturnType<typeof getGrib2Template4>;
/**
 * Returns a template generator for the given template number
 * @param template - the template number to generate
 * @param reader - the byte data to read
 * @param sections - the sections of the GRIB2 message that have been parsed so far
 * @returns - generated template data
 */
export declare function getGrib2Template4(template: number, reader: Reader, sections: Grib2Sections): {
    /** Paramater */
    paramater: {
        parameter: string;
        units: string;
        abbrev: string;
        category: string;
    };
    /** Parameter category (see Code [Table 4.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml)) */
    parameterCategory: number;
    /** Parameter number (see Code [Table 4.2](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml)) */
    parameterNumber: number;
    /** Type of generating process (see Code [Table 4.3](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-3.shtml)) */
    genProcessType: {
        code: number;
        value: string;
    };
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Analysis or forecast generating process identifier (see Code [ON388 Table A](https://www.nco.ncep.noaa.gov/pmb/docs/on388/tablea.html)) */
    forecastGenProcess: {
        code: number;
        value: string;
    };
    /** Hours after reference time data cutoff (see Notes) */
    hoursAfterRefTime: number;
    /** Minutes after reference time data cutoff (see Notes) */
    minAfterRefTime: number;
    /** Indicator of unit of time range (see Code [Table 4.4](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-4.shtml)) */
    unitOfTimeRangeIndicator: {
        code: number;
        value: string;
    };
    /** Forecast time in units defined by octet 18 */
    forecastTime: {
        code: number;
        value: Date;
    };
    /** First fixed surface */
    surface1: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of first fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml)) */
    surface1Type: number;
    /** Scale factor of first fixed surface */
    surface1Scale: number;
    /** Scaled value of first fixed surface */
    surface1Value: number;
    /** Second fixed surface */
    surface2: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of second fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml)) */
    surface2Type: number;
    /** Scale factor of second fixed surface */
    surface2Scale: number;
    /** Scaled value of second fixed surface */
    surface2Value: number;
};
/**
 * PRODUCT DEFINITION TEMPLATE 4.0
 *
 * Analysis or forecast at a horizontal level or in
 * a horizontal layer at a point in time.
 *
 * [Read more...](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp4-0.shtml)
 * @param section - the byte data to read
 * @param sections - the sections of the GRIB2 message that have been parsed so far
 * @returns - the parsed template
 */
export declare function grib2Template40(section: Reader, sections: Grib2Sections): {
    /** Paramater */
    paramater: {
        parameter: string;
        units: string;
        abbrev: string;
        category: string;
    };
    /** Parameter category (see Code [Table 4.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml)) */
    parameterCategory: number;
    /** Parameter number (see Code [Table 4.2](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml)) */
    parameterNumber: number;
    /** Type of generating process (see Code [Table 4.3](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-3.shtml)) */
    genProcessType: {
        code: number;
        value: string;
    };
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Analysis or forecast generating process identifier (see Code [ON388 Table A](https://www.nco.ncep.noaa.gov/pmb/docs/on388/tablea.html)) */
    forecastGenProcess: {
        code: number;
        value: string;
    };
    /** Hours after reference time data cutoff (see Notes) */
    hoursAfterRefTime: number;
    /** Minutes after reference time data cutoff (see Notes) */
    minAfterRefTime: number;
    /** Indicator of unit of time range (see Code [Table 4.4](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-4.shtml)) */
    unitOfTimeRangeIndicator: {
        code: number;
        value: string;
    };
    /** Forecast time in units defined by octet 18 */
    forecastTime: {
        code: number;
        value: Date;
    };
    /** First fixed surface */
    surface1: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of first fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml)) */
    surface1Type: number;
    /** Scale factor of first fixed surface */
    surface1Scale: number;
    /** Scaled value of first fixed surface */
    surface1Value: number;
    /** Second fixed surface */
    surface2: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of second fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml)) */
    surface2Type: number;
    /** Scale factor of second fixed surface */
    surface2Scale: number;
    /** Scaled value of second fixed surface */
    surface2Value: number;
};
/**
 * PRODUCT DEFINITION TEMPLATE 4.1
 *
 * Individual ensemble forecast, control and perturbed, at a horizontal
 * level or in a horizontal layer at a point in time.
 *
 * [Read more...](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp4-1.shtml)
 * @param section - the byte data to read
 * @param sections - the sections of the GRIB2 message that have been parsed so far
 * @returns - the parsed template
 */
export declare function grib2Template41(section: Reader, sections: Grib2Sections): {
    /** Paramater */
    paramater: {
        parameter: string;
        units: string;
        abbrev: string;
        category: string;
    };
    /** Parameter category (see Code [Table 4.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml)) */
    parameterCategory: number;
    /** Parameter number (see Code [Table 4.2](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml)) */
    parameterNumber: number;
    /** Type of generating process (see Code [Table 4.3](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-3.shtml)) */
    genProcessType: {
        code: number;
        value: string;
    };
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Forecast generating process identifier (see Code [ON388 Table A](https://www.nco.ncep.noaa.gov/pmb/docs/on388/tablea.html)) */
    forecastGenProcess: {
        code: number;
        value: string;
    };
    /** Hours after reference time data cutoff (see Notes) */
    hoursAfterRefTime: number;
    /** Minutes after reference time data cutoff (see Notes) */
    minAfterRefTime: number;
    /** Indicator of unit of time range (see Code [Table 4.4](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-4.shtml)) */
    unitOfTimeRangeIndicator: {
        code: number;
        value: string;
    };
    /** Forecast time in units defined by octet 18 */
    forecastTime: {
        code: number;
        value: Date;
    };
    /** First fixed surface */
    surface1: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of first fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml), result stored in `surface1`) */
    surface1Type: number;
    /** Scale factor of first fixed surface */
    surface1Scale: number;
    /** Scaled value of first fixed surface */
    surface1Value: number;
    /** Second fixed surface */
    surface2: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of second fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml) result stored in `surface2`) */
    surface2Type: number;
    /** Scale factor of second fixed surface */
    surface2Scale: number;
    /** Scaled value of second fixed surface */
    surface2Value: number;
    /** Type of ensemble forecast (see Code [Table 4.6](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-6.shtml)) */
    ensembleForecastType: {
        code: number;
        value: string;
    };
    /** Perturbation number */
    perturbationNumber: number;
    /** Number of forecasts in ensemble */
    numForecastsInEnsemble: number;
};
/**
 * PRODUCT DEFINITION TEMPLATE 4.2
 *
 * Derived forecast, based on all ensemble members at a horizontal
 * level or in a horizontal layer at a point in time.
 *
 * [Read more...](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp4-2.shtml)
 * @param section - the byte data to read
 * @param sections - the sections of the GRIB2 message that have been parsed so far
 * @returns - the parsed template
 */
export declare function grib2Template42(section: Reader, sections: Grib2Sections): {
    /** Paramater */
    paramater: {
        parameter: string;
        units: string;
        abbrev: string;
        category: string;
    };
    /** Parameter category (see Code [Table 4.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml)) */
    parameterCategory: number;
    /** Parameter number (see Code [Table 4.2](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml)) */
    parameterNumber: number;
    /** Type of generating process (see Code [Table 4.3](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-3.shtml)) */
    genProcessType: {
        code: number;
        value: string;
    };
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Forecast generating process identifier (see Code [ON388 Table A](https://www.nco.ncep.noaa.gov/pmb/docs/on388/tablea.html)) */
    forecastGenProcess: {
        code: number;
        value: string;
    };
    /** Hours after reference time data cutoff (see Notes) */
    hoursAfterRefTime: number;
    /** Minutes after reference time data cutoff */
    minAfterRefTime: number;
    /** Indicator of unit of time range (see Code [Table 4.4](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-4.shtml)) */
    unitOfTimeRangeIndicator: {
        code: number;
        value: string;
    };
    /** Forecast time in units defined by octet 18 */
    forecastTime: {
        code: number;
        value: Date;
    };
    /** First fixed surface */
    surface1: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of first fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml)) */
    surface1Type: number;
    /** Scale factor of first fixed surface */
    surface1Scale: number;
    /** Scaled value of first fixed surface */
    surface1Value: number;
    /** Second fixed surface */
    surface2: {
        scale: number;
        value: number;
        type: string;
        unit: string;
    };
    /** Type of second fixed surface (see Code [Table 4.5](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml)) */
    surface2Type: number;
    /** Scale factor of second fixed surface */
    surface2Scale: number;
    /** Scaled value of second fixed surface */
    surface2Value: number;
    /** Derived forecast type (see Code [Table 4.7](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-7.shtml)) */
    derivedForecastType: {
        code: number;
        value: string;
    };
    /** Number of forecasts in the ensemble */
    numForecastsInEnsemble: number;
};
/**
 * Calculate Forecast Time
 * @param refTime Reference time of GRIB Packet
 * @param offset Number of units to offset the ref time by
 * @param unitOfTime unit of time of offset
 * @returns - the forecast time
 */
export declare function calculateForecastTime(refTime: Date, offset: number, unitOfTime: string): Date;
//# sourceMappingURL=templates.d.ts.map