import { Buffer } from 'buffer/';
/**
 * @description Returns a template generator for the given template number
 * @param template Template number
 * @returns Template generator
 */
export declare const getTemplate4: (template: number) => (section: Buffer) => {
    /** Paramater category (see Code [Table 4.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml)) */
    parameterCategory: number;
    /** Paramater 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: number;
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Forecast generating process identified (see Code [ON388 Table A](https://www.nco.ncep.noaa.gov/pmb/docs/on388/tablea.html)) */
    forecastGenProcess: number;
    /** Hours after reference time data cutoff */
    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: number;
    /** Forecast time offset */
    forecastTimeOffset: number;
    /** 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;
    /** 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;
};
/**
 * @description Returns a template map for the given template number
 * @param table Template number
 * @returns Template Map
 */
export declare const lookupTemplate4: (template: number) => ((discipline: number, refTime: Date, templateValues: ReturnType<typeof template40>) => {
    /** Paramater */
    paramater: {
        name: string;
        units: string;
        abbrev: string;
        category: string;
    };
    /** Type of generating process */
    genProcessType: string;
    /** Forecast generating process identified */
    forecastGenProcess: string;
    /** Indicator of unit of time range */
    unitOfTimeRangeIndicator: string;
    /** Forecast time */
    forecastTime: Date;
    /** First fixed surface */
    surface1: {
        scale: number;
        value: number;
        name: string;
        units: null;
    } | {
        scale: number;
        value: number;
        name: string;
        units: string;
    };
    /** Second fixed surface */
    surface2: {
        scale: number;
        value: number;
        name: string;
        units: null;
    } | {
        scale: number;
        value: number;
        name: string;
        units: string;
    };
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Hours after reference time data cutoff */
    hoursAfterRefTime: number;
    /** Minutes after reference time data cutoff */
    minAfterRefTime: number;
    /** Forecast time offset */
    forecastTimeOffset: number;
}) | ((discipline: number, refTime: Date, templateValues: ReturnType<typeof template42>) => {
    /** Paramater */
    paramater: {
        name: string;
        units: string;
        abbrev: string;
        category: string;
    };
    /** Type of generating process */
    genProcessType: string;
    /** Forecast generating process identified */
    forecastGenProcess: string;
    /** Indicator of unit of time range */
    unitOfTimeRangeIndicator: string;
    /** Forecast time */
    forecastTime: Date;
    /** First fixed surface */
    surface1: {
        scale: number;
        value: number;
        name: string;
        units: null;
    } | {
        scale: number;
        value: number;
        name: string;
        units: string;
    };
    /** Second fixed surface */
    surface2: {
        scale: number;
        value: number;
        name: string;
        units: null;
    } | {
        scale: number;
        value: number;
        name: string;
        units: string;
    };
    /** Derived forecast */
    derivedForecast: string;
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Hours after reference time data cutoff */
    hoursAfterRefTime: number;
    /** Minutes after reference time data cutoff */
    minAfterRefTime: number;
    /** Forecast time offset */
    forecastTimeOffset: number;
    /** Number of forecasts in the ensemble */
    numberOfForecast: number;
});
/**
 * Product Definition Template 4.0
 *
 * [Read more...](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp4-0.shtml)
 */
declare const template40: (section: Buffer) => {
    /** Paramater category (see Code [Table 4.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml)) */
    parameterCategory: number;
    /** Paramater 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: number;
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Forecast generating process identified (see Code [ON388 Table A](https://www.nco.ncep.noaa.gov/pmb/docs/on388/tablea.html)) */
    forecastGenProcess: number;
    /** Hours after reference time data cutoff */
    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: number;
    /** Forecast time offset */
    forecastTimeOffset: number;
    /** 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;
    /** 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.2
 *
 * [Read more...](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp4-2.shtml)
 */
declare const template42: (section: Buffer) => {
    /** Paramater category (see Code [Table 4.1](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml)) */
    parameterCategory: number;
    /** Paramater 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: number;
    /** Background generating process identifier (defined by originating centre) */
    backgroundGenProcess: number;
    /** Forecast generating process identified (see Code [ON388 Table A](https://www.nco.ncep.noaa.gov/pmb/docs/on388/tablea.html)) */
    forecastGenProcess: number;
    /** Hours after reference time data cutoff */
    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: number;
    /** Forecast time offset */
    forecastTimeOffset: number;
    /** 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;
    /** 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 (see Code [Table 4.7](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-7.shtml)) */
    derivedForecast: number;
    /** Number of forecasts in the ensemble */
    numberOfForecast: number;
};
export {};
