import { BOOLEAN, OBJECT_IDENTIFIER, ABSTRACT_SYNTAX } from '@wildboar/asn1';
import * as $ from '@wildboar/asn1/functional';
import { type CONTRACT } from '../Remote-Operations-Information-Objects/CONTRACT.oca.mjs';
import { type REALIZATION } from '../Remote-Operations-Information-Objects-extensions/REALIZATION.oca.mjs';
/**
 * @summary APPLICATION_CONTEXT
 * @description
 *
 * ### ASN.1 Definition:
 *
 * ```asn1
 * APPLICATION-CONTEXT ::= CLASS {
 *   &probe                   BOOLEAN DEFAULT FALSE,
 *   &acknowledge             BOOLEAN DEFAULT FALSE,
 *   &associationContract     CONTRACT,
 *   &associationRealization  REALIZATION OPTIONAL,
 *   &transferRealization     REALIZATION,
 *   &AbstractSyntaxes        ABSTRACT-SYNTAX,
 *   &applicationContextName  OBJECT IDENTIFIER UNIQUE
 * }
 * WITH SYNTAX {
 *   [PROBE &probe]
 *   [ACKNOWLEDGE &acknowledge]
 *   CONTRACT &associationContract
 *   [ESTABLISHED BY &associationRealization]
 *   INFORMATION TRANSFER BY &transferRealization
 *   ABSTRACT SYNTAXES &AbstractSyntaxes
 *   APPLICATION CONTEXT NAME &applicationContextName
 * }
 * ```
 *
 * @interface
 */
export interface APPLICATION_CONTEXT {
    /**
     * @summary A fixed string that can be used for external programs to determine the object class of this object.
     */
    readonly class: 'APPLICATION-CONTEXT';
    /**
     * @summary A map of type fields to their corresponding decoders.
     */
    readonly decoderFor: Partial<{
        [_K in keyof APPLICATION_CONTEXT]: $.ASN1Decoder<APPLICATION_CONTEXT[_K]>;
    }>;
    /**
     * @summary A map of type fields to their corresponding encoders.
     */
    readonly encoderFor: Partial<{
        [_K in keyof APPLICATION_CONTEXT]: $.ASN1Encoder<APPLICATION_CONTEXT[_K]>;
    }>;
    /**
     * @summary &probe
     */
    readonly '&probe'?: BOOLEAN;
    /**
     * @summary &acknowledge
     */
    readonly '&acknowledge'?: BOOLEAN;
    /**
     * @summary &associationContract
     */
    readonly '&associationContract'?: CONTRACT;
    /**
     * @summary &associationRealization
     */
    readonly '&associationRealization'?: REALIZATION<any>;
    /**
     * @summary &transferRealization
     */
    readonly '&transferRealization'?: REALIZATION<any>;
    /**
     * @summary &AbstractSyntaxes
     */
    readonly '&AbstractSyntaxes'?: ABSTRACT_SYNTAX[];
    /**
     * @summary &applicationContextName
     */
    readonly '&applicationContextName'?: OBJECT_IDENTIFIER;
}
//# sourceMappingURL=APPLICATION-CONTEXT.oca.d.mts.map