import type { UAMethod, UAObject, UAProperty } from "node-opcua-address-space-base";
import type { UAString, UInt32 } from "node-opcua-basic-types";
import type { LocalizedText } from "node-opcua-data-model";
import type { DataType } from "node-opcua-variant";

import type { EnumApplication } from "./enum_application";
import type { UAApplicationConfigurationFile } from "./ua_application_configuration_file";
import type { UACertificateGroupFolder } from "./ua_certificate_group_folder";
import type { UATransactionDiagnostics } from "./ua_transaction_diagnostics";

// ----- this file has been automatically generated - do not edit

/**
 * |                |                                                            |
 * |----------------|------------------------------------------------------------|
 * |namespace       |http://opcfoundation.org/UA/                                |
 * |nodeClass       |ObjectType                                                  |
 * |typedDefinition |ServerConfigurationType i=12581                             |
 * |isAbstract      |false                                                       |
 */
export interface UAServerConfiguration_Base {
    applicationUri?: UAProperty<UAString, DataType.String>;
    productUri?: UAProperty<UAString, DataType.String>;
    applicationType?: UAProperty<EnumApplication, DataType.Int32>;
    applicationNames?: UAProperty<LocalizedText[], DataType.LocalizedText>;
    serverCapabilities: UAProperty<UAString[], DataType.String>;
    supportedPrivateKeyFormats: UAProperty<UAString[], DataType.String>;
    maxTrustListSize: UAProperty<UInt32, DataType.UInt32>;
    multicastDnsEnabled: UAProperty<boolean, DataType.Boolean>;
    hasSecureElement?: UAProperty<boolean, DataType.Boolean>;
    supportsTransactions?: UAProperty<boolean, DataType.Boolean>;
    inApplicationSetup?: UAProperty<boolean, DataType.Boolean>;
    updateCertificate: UAMethod;
    createSelfSignedCertificate?: UAMethod;
    deleteCertificate?: UAMethod;
    getCertificates?: UAMethod;
    applyChanges: UAMethod;
    cancelChanges?: UAMethod;
    createSigningRequest: UAMethod;
    getRejectedList: UAMethod;
    resetToServerDefaults?: UAMethod;
    certificateGroups: UACertificateGroupFolder;
    transactionDiagnostics?: UATransactionDiagnostics;
    configurationFile?: UAApplicationConfigurationFile;
}
export interface UAServerConfiguration extends UAObject, UAServerConfiguration_Base {}