import { getDllPath } from './utils';
import wchar from './w_char.js';
import ffi from 'ffi-napi';
const EZDLL = (base_dir: string) =>
    ffi.Library(getDllPath(base_dir), {
        ClientLogonEx: ['int32', ['int32', 'int32', wchar, 'int32', 'int32', 'int32', 'int32', 'int32', 'int32']],
        ResultString: [wchar, ['int32']],
        TestConnection: ['int32', []],
        // DllVersion: ['int32', []],
        // ServerVersion: ['int32', []],
        ClientLogoff: ['int32', []],
        // ClientStatus: ['int32', []],
        // LicenseStatus: ['int32', []],
        // GetLicenseType: ['int32', []],
        // GetIniValue: ['int32', []],
        // SetIniValue: ['int32', []],
        // GetClientsCount: ['int32', []],
        SetDateTime: ['int32', ['double']],
        // GetDateTime: ['int32', []],
        // CheckSocketClosed: ['int32', []],
        // ProcessEvents: ['int32', []],
        // GetEventsCount: ['int32', []],
        // GetNextEventType: ['int32', []],
        // DiscardNextEvent: ['int32', []],
        // GetNextPumpEvent: ['int32', []],
        // GetNextPumpEventEx: ['int32', []],
        // GetNextPumpEventEx2: ['int32', []],
        // GetNextPumpEventEx3: ['int32', []],
        // GetNextDeliveryEventEx: ['int32', []],
        // GetNextDeliveryEventEx2: ['int32', []],
        // GetNextDeliveryEventEx3: ['int32', []],
        // GetNextDeliveryEventEx4: ['int32', []],
        // GetNextServerEvent: ['int32', []],
        // GetNextClientEvent: ['int32', []],
        // FireClientEvent: ['int32', []],
        // GetNextDBLogEvent: ['int32', []],
        // GetNextDBLogDeliveryEvent: ['int32', []],
        // GetNextZB2GStatusEvent: ['int32', []],
        // GetNextDBClearDeliveryEvent: ['int32', []],
        // GetNextDBStackDeliveryEvent: ['int32', []],
        // GetNextDBHoseETotalsEvent: ['int32', []],
        // GetNextDBHoseETotalsEventEx: ['int32', []],
        // GetNextDBTriggerEvent: ['int32', []],
        // GetNextAttendantLogonEvent: ['int32', []],
        // GetNextAttendantLogoffEvent: ['int32', []],
        // GetNextDBTankStatusEvent: ['int32', []],
        // GetNextDBTankStatusEventEx: ['int32', []],
        // GetNextDBTankStatusEventEx2: ['int32', []],
        // GetNextCardReadEvent: ['int32', []],
        // GetNextLogEventEvent: ['int32', []],
        // GetNextZeroDeliveryEvent: ['int32', []],
        GetPumpsCount: ['int32', ['int32*']],
        // GetPumpByNumber: ['int32', []],
        // GetPumpByName: ['int32', []],
        GetPumpByOrdinal: ['int32', ['int32', 'int32*']],
        // GetPumpProperties: ['int32', []],
        GetPumpPropertiesEx: [
            'int32',
            [
                'int32',
                'int32*',
                wchar,
                'int16*',
                'int16*',
                'int16*',
                'int16*',
                'int16*',
                'int16*',
                'int16*',
                'int16*',
                'int16*',
                'int32*',
                'int32*',
                'int16*',
                'int16*',
                'int16*',
                'int16*',
                'int32*',
                'int32*',
                'int16*',
                'int16*',
            ],
        ],
        // SetPumpProperties: ['int32', []],
        // SetPumpPropertiesEx: ['int32', []],
        // DeletePump: ['int32', []],
        // GetPumpHosesCount: ['int32', []],
        GetPumpHoseByNumber: ['int32', ['int32', 'int32', 'int32*']],
        // GetPumpStatus: ['int32', []],
        // GetPumpStatusEx: ['int32', []],
        // GetPumpStatusEx2: ['int32', []],
        // PumpStateString: ['string', []],
        // EnablePump: ['int32', []],
        // DisablePump: ['int32', []],
        // SetPumpDefaultPriceLevel: ['int32', []],
        // GetDensity: ['int32', []],
        // ScheduleBeep: ['int32', []],
        // FlashLEDS: ['int32', []],
        // PrepayReserve: ['int32', []],
        // PrepayCancel: ['int32', []],
        // PrepayAuthorise: ['int32', []],
        // PreauthReserve: ['int32', []],
        // PreauthCancel: ['int32', []],
        // PreauthAuthorise: ['int32', []],
        // PaymentReserve: ['int32', []],
        // PaymentCancel: ['int32', []],
        // PaymentAuthorise: ['int32', []],
        // AttendantAuthorise: ['int32', []],
        // Authorise: ['int32', []],
        // CancelAuthorise: ['int32', []],
        // TempStop: ['int32', []],
        // ReAuthorise: ['int32', []],
        // TerminateDelivery: ['int32', []],
        // LoadPreset: ['int32', []],
        // LoadPresetWithPrice: ['int32', []],
        // TagAuthorise: ['int32', []],
        // AllStop: ['int32', []],
        // AllAuthorise: ['int32', []],
        // AllReAuthorise: ['int32', []],
        // AllStopIfIdle: ['int32', []],
        // ReadAllTanks: ['int32', []],
        GetAllPumpStatuses: ['int32', [wchar, wchar, wchar]],
        GetDeliveriesCount: ['int32', ['int32*']],
        GetDeliveryByOrdinal: ['int32', ['int32', 'int32*']],
        // GetDeliveryProperties: ['int32', []],
        // GetDeliveryPropertiesEx: ['int32', []],
        // GetDeliveryPropertiesEx2: ['int32', []],
        // GetDeliveryPropertiesEx3: ['int32', []],
        GetDeliveryPropertiesEx4: [
            'int32',
            [
                'int32',
                'int32*',
                'int16*',
                'int16*',
                'double*',
                'int16*',
                'double*',
                'double*',
                'double*',
                'double*',
                'int32*',
                'int32*',
                'int32*',
                'int32*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'int64*',
                'int32*',
                'int32*',
                'double*',
            ],
        ],
        // SetDeliveryProperties: ['int32', []],
        // SetDeliveryPropertiesEx: ['int32', []],
        // SetDeliveryPropertiesEx2: ['int32', []],
        // SetDeliveryPropertiesEx3: ['int32', []],
        // SetDeliveryPropertiesEx4: ['int32', []],
        LockDelivery: ['int32', ['int32']],
        UnlockDelivery: ['int32', ['int32']],
        ClearDelivery: ['int32', ['int32', 'int16']],
        // LockAndClearDelivery: ['int32', []],
        // SetNextDeliveryID: ['int32', []],
        // AckDeliveryDBLog: ['int32', []],
        // GetDeliveryIDByOrdinalNotLogged: ['int32', []],
        // GetDeliveriesCountNotLogged: ['int32', []],
        // AckDeliveryVolLog: ['int32', []],
        // GetDeliveryIDByOrdinalNotVolLogged: ['int32', []],
        // GetDeliveriesCountNotVolLogged: ['int32', []],
        // GetAllDeliveriesCount: ['int32', []],
        // GetAllDeliveryByOrdinal: ['int32', []],
        // GetDeliverySummary: ['int32', []],
        // GetDeliverySummaryEx: ['int32', []],
        // GetDeliverySummaryEx2: ['int32', []],
        // GetDeliverySummaryEx3: ['int32', []],
        // SetDeliveryExt: ['int32', []],
        // GetDeliveryExt: ['int32', []],
        // GetPumpDeliveryProperties: ['int32', []],
        // GetPumpDeliveryPropertiesEx: ['int32', []],
        // GetPumpDeliveryPropertiesEx2: ['int32', []],
        // GetPumpDeliveryPropertiesEx3: ['int32', []],
        // GetPumpDeliveryPropertiesEx4: ['int32', []],
        // ReserveTypestring: ['string', []],
        // GetDuration: ['int32', []],
        // StackCurrentDelivery: ['int32', []],
        // DeliveryStatestring: ['string', []],
        // DeliveryTypestring: ['string', []],
        GetHosesCount: ['int32', ['int32*']],
        GetHoseByOrdinal: ['int32', ['int32', 'int32*']],
        // GetHoseProperties: ['int32', []],
        // GetHosePropertiesEx: ['int32', []],
        GetHosePropertiesEx2: [
            'int32',
            [
                'int32',
                'int32*',
                'int32*',
                'int32*',
                'int32*',
                'double*',
                'double*',
                'double*',
                'double*',
                'int16*',
                'double*',
                'double*',
                'int16*',
            ],
        ],
        // SetHoseProperties: ['int32', []],
        // SetHosePropertiesEx: ['int32', []],
        // SetHosePropertiesEx2: ['int32', []],
        // DeleteHose: ['int32', []],
        // GetHosePrices: ['int32', []],
        // GetHoseSummary: ['int32', []],
        GetHoseSummaryEx: [
            'int32',
            [
                'int32',
                'int32*',
                'int32*',
                'int32*',
                'int32*',
                wchar,
                'int32*',
                'int32*',
                wchar,
                'int32*',
                'int32*',
                wchar,
                wchar,
                wchar,
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'int16*',
            ],
        ],
        // SetHoseETotals: ['int32', []],
        SetHosePrices: ['int32', ['int32', 'int16', 'int16', 'double', 'double']],
        // SetHosePricesMT: ['int32', []],
        GetGradesCount: ['int32', ['int32*']],
        // GetGradeByNumber: ['int32', []],
        // GetGradeByName: ['int32', []],
        GetGradeByOrdinal: ['int32', ['int32', 'int32*']],
        // GetGradeProperties: ['int32', []],
        GetGradePropertiesEx: ['int32', ['int32', 'int32*', wchar, wchar, wchar, 'int16*']],
        // SetGradeProperties: ['int32', []],
        SetGradePropertiesEx: ['int32', ['int32', 'int32', wchar, wchar, wchar, 'int16']],
        DeleteGrade: ['int32', ['int32']],
        SetGradePrice: ['int32', ['int32', 'int16', 'double']],
        GetGradePrice: ['int32', ['int32', 'int16', 'double*']],
        GetTanksCount: ['int32', ['int32*']],
        // GetTankByNumber: ['int32', []],
        // GetTankByName: ['int32', []],
        GetTankByOrdinal: ['int32', ['int32', 'int32*']],
        // GetTankProperties: ['int32', []],
        GetTankPropertiesEx: [
            'int32',
            [
                'int32',
                'int32*',
                wchar,
                'int32*',
                'int16*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'double*',
                'int32*',
                'int16*',
                'int32*',
            ],
        ],
        // SetTankProperties: ['int32', []],
        // SetTankPropertiesEx: ['int32', []],
        // DeleteTank: ['int32', []],
        // GetTankSummary: ['int32', []],
        // GetTankSummaryEx: ['int32', []],
        // GetPortsCount: ['int32', []],
        // GetPortByNumber: ['int32', []],
        // GetPortByName: ['int32', []],
        // GetPortByOrdinal: ['int32', []],
        // GetPortProperties: ['int32', []],
        // SetPortProperties: ['int32', []],
        // RemovePort: ['int32', []],
        // GetZB2GConfig: ['int32', []],
        // GetSerialNo: ['int32', []],
        // GetDeviceDetails: ['int32', []],
        // ResetDevice: ['int32', []],
        // RequestVersion: ['int32', []],
        GetAttendantsCount: ['int32', ['int32*']],
        GetAttendantByOrdinal: ['int32', ['int32', 'int32*']],
        // GetAttendantByNumber: ['int32', []],
        // GetAttendantByName: ['int32', []],
        // GetAttendantProperties: ['int32', []],
        GetAttendantPropertiesEx: [
            'int32',
            ['int32', 'int32*', wchar, wchar, wchar, wchar, 'int16*', 'int16*', 'int16*', 'int16*', 'int16*'],
        ],
        // SetAttendantProperties: ['int32', []],
        // SetAttendantPropertiesEx: ['int32', []],
        // GetAttendantState: ['int32', []],
        // DeleteAttendant: ['int32', []],
        // AttendantLogon: ['int32', []],
        // AttendantLogoff: ['int32', []],
        GetCardClientsCount: ['int32', ['int32*']],
        GetCardClientByOrdinal: ['int32', ['int32', 'int32*']],
        // GetCardClientByNumber: ['int32', []],
        // GetCardClientByName: ['int32', []],
        // GetCardClientProperties: ['int32', []],
        // GetCardClientPropertiesEx: ['int32', []],
        GetCardClientPropertiesEx2: [
            'int32',
            [
                'int32',
                'int32*',
                wchar,
                wchar,
                'int16*',
                'int16*',
                wchar,
                'int16*',
                'int16*',
                'int16*',
                'double*',
                'int16*',
                'double*',
                'int64*',
            ],
        ],
        // SetCardClientProperties: ['int32', []],
        // SetCardClientPropertiesEx: ['int32', []],
        // SetCardClientPropertiesEx2: ['int32', []],
        // DeleteCardClient: ['int32', []],
        // GetCardReadsCount: ['int32', []],
        // GetCardReadByNumber: ['int32', []],
        // GetCardReadByName: ['int32', []],
        // GetCardReadByOrdinal: ['int32', []],
        // GetCardReadProperties: ['int32', []],
        // SetCardReadProperties: ['int32', []],
        // DeleteCardRead: ['int32', []],
        // GetCardType: ['int32', []],
        // GetZigBeeCount: ['int32', []],
        // GetZigBeeByNumber: ['int32', []],
        // GetZigBeeByName: ['int32', []],
        // GetZigBeeByOrdinal: ['int32', []],
        // GetZigBeeProperties: ['int32', []],
        // SetZigBeeProperties: ['int32', []],
        // DeleteZigBee: ['int32', []],
        // GetSensorsCount: ['int32', []],
        // GetSensorByNumber: ['int32', []],
        // GetSensorByName: ['int32', []],
        // GetSensorByOrdinal: ['int32', []],
        // GetSensorProperties: ['int32', []],
        // SetSensorProperties: ['int32', []],
        // SetSensorStatus: ['int32', []],
        // GetSensorStatus: ['int32', []],
        // DeleteSensor: ['int32', []],
        // GetLogEventCount: ['int32', []],
        // GetLogEventByOrdinal: ['int32', []],
        // GetLogEventProperties: ['int32', []],
        // SetLogEventProperties: ['int32', []],
        // DeleteLogEvent: ['int32', []],
        // ClearLogEvent: ['int32', []],
        // AckLogEvent: ['int32', []],
        // SetClientType: ['int32', []],
        // SetSaleItemProperties: ['int32', []],
        // DeleteSaleItem: ['int32', []],
        // SaleItemLock: ['int32', []],
        // SaleItemUnlock: ['int32', []],
        // SaleItemClear: ['int32', []],
        // SaleItemLockAndClear: ['int32', []],
        // SaleItemAckDBLog: ['int32', []],
        // SaleItemAckVolLog: ['int32', []],
        // GetSaleItemProperties: ['int32', []],
        // GetSaleItemsCount: ['int32', []],
        // GetSaleItemByOrdinal: ['int32', []],
        // GetSaleItemsCountEx: ['int32', []],
        // GetSaleItemByOrdinalEx: ['int32', []],
        // GetSaleItemSummary: ['int32', []],
    });

export default EZDLL;
