import PqDiff from "./PqDiff";
declare namespace OpenXDA {
    namespace Lists {
        const AssetTypes: Types.AssetTypeName[];
        const MeasurementTypes: Types.MeasurementTypeName[];
        const MeasurementCharacteristics: Types.MeasurementCharacteristicName[];
        const Phases: Types.PhaseName[];
        const EventTypes: Types.EventTypeName[];
        const NoteTypes: Types.NoteTypeName[];
        const NoteApplications: Types.NoteApplicationName[];
        const NoteTags: Types.NoteTagName[];
    }
    namespace Types {
        type AssetTypeName = 'Line' | 'LineSegment' | 'Breaker' | 'Bus' | 'CapacitorBank' | 'Transformer' | 'CapacitorBankRelay' | 'DER' | 'Generation' | 'StationAux' | 'StationBattery';
        type MeasurementTypeName = PqDiff.Types.MeasurementType | 'Digital';
        type MeasurementCharacteristicName = PqDiff.Types.MeasurementCharacteristic | 'BreakerStatus' | 'TCE';
        type PhaseName = PqDiff.Types.Phase;
        type EventTypeName = 'Sag' | 'Swell' | 'Transient' | 'Fault' | 'Interruption' | 'RecloseIntoFault' | 'BreakerOpen' | 'Other' | 'Test' | 'Snapshot';
        type NoteTypeName = 'Meter' | 'Event' | 'Asset' | 'Location' | 'Customer' | 'User' | 'Company';
        type NoteApplicationName = 'OpenMIC' | 'OpenXDA' | 'MiMD' | 'SystemCenter' | 'OpenHistorian' | 'All' | 'SEbrowser';
        type NoteTagName = 'General' | 'Configuration' | 'Diagnostic' | 'Compliance';
        type DetailedAsset = (Breaker | Bus | CapBank | Line | Transformer | CapBankRelay | DER | Generation | StationAux | StationBattery);
        interface EventType {
            ID: number;
            Name: EventTypeName;
            Description: string;
            Selected?: boolean;
            ShowInFilter: boolean;
            Category?: string;
        }
        interface Meter {
            ID: number;
            AssetKey: string;
            Alias: string;
            Make: string;
            Model: string;
            Name: string;
            ShortName: string;
            TimeZone: string;
            LocationID: number;
            Description: string;
            Selected?: boolean;
        }
        interface Location {
            ID: number;
            LocationKey: string;
            Name: string;
            Alias: string;
            ShortName: string;
            Latitude: number;
            Longitude: number;
            Description: string;
        }
        interface Disturbance {
            ID: number;
            EventID: number;
            PhaseID: number;
            Magnitude: number;
            PerUnitMagnitude: number;
            DurationSeconds: number;
        }
        interface SCADAPoint {
            ID: number;
            BreakerID: number;
            Point: string;
        }
        interface Channel {
            ID: number;
            Meter: string;
            Asset: string;
            MeasurementType: string;
            MeasurementCharacteristic: string;
            Phase: string;
            Name: string;
            Adder: number;
            Multiplier: number;
            SamplesPerHour: number;
            PerUnitValue: number;
            HarmonicGroup: number;
            Description: string;
            Enabled: boolean;
            Series: Series[];
            ConnectionPriority: number;
            Trend: boolean;
        }
        interface Series {
            ID: number;
            ChannelID: number;
            SeriesType: string;
            SourceIndexes: string;
        }
        interface Note {
            ID: number;
            NoteTypeID: number;
            ReferenceTableID: number;
            Note: string;
            UserAccount?: string;
            Timestamp: string;
            NoteApplicationID: number;
            NoteTagID: number;
        }
        interface NoteApplication {
            ID: number;
            Name: NoteApplicationName;
        }
        interface NoteTag {
            ID: number;
            Name: NoteTagName;
        }
        interface Company {
            ID: number;
            CompanyTypeID: number;
            CompanyID: string;
            Name: string;
            Description: string;
        }
        interface CompanyMeter {
            ID: number;
            CompanyID: number;
            MeterID: number;
            DisplayName: string;
            Enabled: boolean;
        }
        interface Customer {
            ID: number;
            CustomerKey: string;
            Name: string;
            Phone: string;
            Description: string;
            LSCVS: boolean;
            PQIFacilityID: number;
        }
        interface EventTag {
            ID: number;
            Name: string;
            Description: string;
            ShowInFilter: boolean;
        }
        interface MATLABAnalytic {
            ID: number;
            AssemblyName: string;
            MethodName: string;
            SettingSQL: string;
            LoadOrder: number;
        }
        interface MATLABAnalyticEventType {
            ID: number;
            MATLABAnalyticID: number;
            EventTypeID: number;
        }
        interface MATLABAnalyticAssetType {
            ID: number;
            MATLABAnalyticID: number;
            AssetTypeID: number;
        }
        interface MagDurCurve {
            ID: number;
            Name: string;
            Area: string;
            Color: string;
        }
        interface Asset {
            ID: number;
            VoltageKV: number;
            AssetKey: string;
            Description: string;
            AssetName: string;
            AssetType: AssetTypeName;
            Spare: boolean;
            Channels: Array<Channel>;
        }
        interface MeterAsset extends Asset {
            FaultDetectionLogic: string;
            Designation: string;
        }
        interface Breaker extends Asset {
            ThermalRating: number;
            Speed: number;
            TripTime: number;
            PickupTime: number;
            TripCoilCondition: number;
            SCADAPoint?: string;
            SpareBreakerID?: number;
            AirGapResistor: boolean;
        }
        interface Bus extends Asset {
        }
        interface CapBank extends Asset {
            NumberOfBanks: number;
            CapacitancePerBank: number;
            CktSwitcher: string;
            MaxKV: number;
            UnitKV: number;
            UnitKVAr: number;
            NegReactanceTol: number;
            PosReactanceTol: number;
            Nparalell: number;
            Nseries: number;
            NSeriesGroup: number;
            NParalellGroup: number;
            Fused: boolean;
            VTratioBus: number;
            NumberLVCaps: number;
            NumberLVUnits: number;
            LVKVAr: number;
            LVKV: number;
            LVNegReactanceTol: number;
            LVPosReactanceTol: number;
            UpperXFRRatio: number;
            LowerXFRRatio: number;
            Nshorted: number;
            BlownFuses: number;
            BlownGroups: number;
            RelayPTRatioPrimary: number;
            Rv: number;
            Rh: number;
            Compensated: boolean;
            NLowerGroups: number;
            ShortedGroups: number;
            Sh: number;
            RelayPTRatioSecondary: number;
        }
        interface CapBankRelay extends Asset {
            OnVoltageThreshhold: number;
            CapBankNumber: number;
        }
        interface Line extends Asset {
            MaxFaultDistance: number;
            MinFaultDistance: number;
            Detail: LineDetail;
        }
        interface LineSegment extends Asset {
            R0: number;
            X0: number;
            R1: number;
            X1: number;
            ThermalRating: number;
            Length: number;
            IsEnd: boolean;
            FromBus?: string;
            ToBus?: string;
        }
        interface LineSegmentConnections {
            ID: number;
            ParentSegment: number;
            ChildSegment: number;
        }
        interface SourceImpedance {
            ID: number;
            AssetLocationID: number;
            RSrc: number;
            XSrc: number;
        }
        interface Transformer extends Asset {
            R0: number;
            X0: number;
            R1: number;
            X1: number;
            ThermalRating: number;
            PrimaryVoltageKV: number;
            SecondaryVoltageKV: number;
            Tap: number;
            TertiaryVoltageKV: number;
            SecondaryWinding: number;
            PrimaryWinding: number;
            TertiaryWinding: number;
        }
        interface LineDetail {
            R0: number;
            X0: number;
            R1: number;
            X1: number;
            ThermalRating: number;
            Length: number;
        }
        interface DER extends Asset {
            FullRatedOutputCurrent: number;
            VoltageLevel: 'Low' | 'Medium';
        }
        interface Generation extends Asset {
        }
        interface StationAux extends Asset {
        }
        interface StationBattery extends Asset {
        }
        interface AssetLocation {
            ID: number;
            AssetID: number;
            LocationID: number;
        }
        interface EventTypeAssetType {
            ID: number;
            EventTypeID: number;
            AssetTypeID: number;
        }
        interface AssetConnection {
            ID: number;
            AssetRelationshipTypeID: number;
            Parent: string;
            Child: string;
        }
        interface Phase {
            ID: number;
            Name: PhaseName;
            Description: string;
        }
        interface MeasurementType {
            ID: number;
            Name: MeasurementTypeName;
            Description: string;
        }
        interface MeasurementCharacteristic {
            ID: number;
            Name: MeasurementCharacteristicName;
            Description: string;
        }
        interface AssetType {
            ID: number;
            Name: AssetTypeName;
            Description: string;
        }
        interface AssetConnectionType {
            ID: number;
            Name: string;
            Description: string;
            BiDirectional: boolean;
            JumpConnection: string;
            PassThrough: string;
        }
        interface NoteType {
            ID: number;
            Name: NoteTypeName;
            ReferenceTableName: string;
            Label?: string;
        }
        interface MeterConfiguration {
            ID: number;
            MeterID: number;
            DiffID: number;
            ConfigKey: string;
            ConfigText: string;
            RevisionMajor: number;
            RevisionMinor: number;
        }
        interface DataFile {
            ID: number;
            FileGroupID: number;
            FilePath: string;
            FilePathHash: number;
            FileSize: number;
            CreationTime: string;
            LastWriteTime: string;
            LastAccessTime: string;
            MeterID: number;
            DataStartTime: string;
            ProcessingEndTime: string;
            ProcessingState: number;
        }
        interface DataOperationFailure {
            ID: number;
            DataOperationID: number;
            DataOperationTypeName: string;
            FileGroupID: number;
            Log: string;
            StackTrace: string;
            TimeOfFailure: string;
        }
        interface CompanyType {
            ID: number;
            Name: string;
            Description: string;
        }
        interface CustomerAccess {
            ID: number;
            CustomerID: number;
            PQViewSiteID: number;
        }
        interface AssetGroup {
            ID: number;
            Name: string;
            DisplayDashboard: boolean;
            AssetGroups: number;
            Meters: number;
            Assets: number;
            Users: number;
            DisplayEmail: boolean;
        }
        interface DataOperation {
            ID: number;
            AssemblyName: string;
            TypeName: string;
            LoadOrder: number;
        }
        interface DataReader {
            ID: number;
            FilePattern: string;
            AssemblyName: string;
            TypeName: string;
            LoadOrder: number;
        }
        interface RemoteXDAInstance {
            ID: number;
            Name: string;
            Address: string;
            Frequency: string;
            APIToken: string;
            RegistrationKey: string;
        }
        interface MetersToDataPush {
            ID: number;
            RemoteXDAInstanceID: number;
            LocalXDAMeterID: number;
            RemoteXDAMeterID: number;
            RemoteXDAName: string;
            RemoteXDAAssetKey: string;
            Obsfucate: boolean;
            Synced: boolean;
        }
        interface RemoteXDAMeter extends MetersToDataPush {
            LocalAlias: string;
            LocalMeterName: string;
            LocalAssetKey: string;
            RemoteAlias: string;
        }
        interface AssetsToDataPush {
            ID: number;
            RemoteXDAInstanceID: number;
            LocalXDAAssetID: number;
            RemoteXDAAssetID: number;
            RemoteXDAAssetKey: string;
            Obsfucate: boolean;
            Synced: boolean;
            RemoteAssetCreatedByDataPusher: boolean;
        }
        interface RemoteXDAAsset extends AssetsToDataPush {
            LocalAssetName: string;
            LocalAssetKey: string;
            RemoteAssetName: string;
            RemoteAssetKey: string;
        }
    }
}
export default OpenXDA;
export { OpenXDA };
