import { OBJECT_IDENTIFIER } from '@wildboar/asn1';
import * as $ from '@wildboar/asn1/functional';
import { type OPERATION } from '../Remote-Operations-Information-Objects/OPERATION.oca.mjs';
/**
 * @summary OPERATION_PACKAGE
 * @description
 *
 * ### ASN.1 Definition:
 *
 * ```asn1
 * OPERATION-PACKAGE ::= CLASS {
 *   &Both      OPERATION OPTIONAL,
 *   &Consumer  OPERATION OPTIONAL,
 *   &Supplier  OPERATION OPTIONAL,
 *   &id        OBJECT IDENTIFIER UNIQUE OPTIONAL
 * }
 * -- continued on the next page
 * WITH SYNTAX {
 *   [OPERATIONS &Both]
 *   [CONSUMER INVOKES &Supplier]
 *   [SUPPLIER INVOKES &Consumer]
 *   [ID &id]
 * }
 * ```
 *
 * @interface
 */
export interface OPERATION_PACKAGE {
    /**
     * @summary A fixed string that can be used for external programs to determine the object class of this object.
     */
    readonly class: 'OPERATION-PACKAGE';
    /**
     * @summary A map of type fields to their corresponding decoders.
     */
    readonly decoderFor: Partial<{
        [_K in keyof OPERATION_PACKAGE]: $.ASN1Decoder<OPERATION_PACKAGE[_K]>;
    }>;
    /**
     * @summary A map of type fields to their corresponding encoders.
     */
    readonly encoderFor: Partial<{
        [_K in keyof OPERATION_PACKAGE]: $.ASN1Encoder<OPERATION_PACKAGE[_K]>;
    }>;
    /**
     * @summary &Both
     */
    readonly '&Both'?: OPERATION[];
    /**
     * @summary &Consumer
     */
    readonly '&Consumer'?: OPERATION[];
    /**
     * @summary &Supplier
     */
    readonly '&Supplier'?: OPERATION[];
    /**
     * @summary &id
     */
    readonly '&id'?: OBJECT_IDENTIFIER;
}
//# sourceMappingURL=OPERATION-PACKAGE.oca.d.mts.map