/*!
 * Copyright (C) Microsoft Corporation. All rights reserved.
 */
/**
 * **Wire Contract Guards — Message Protocol Compile-Time Layer**
 *
 * This file uses TypeScript conditional types to assert exact type equality
 * for every message envelope interface. If any interface changes shape,
 * `tsc` will fail.
 *
 * This file produces no runtime output — it exists solely for `bun run check-types`.
 */
import type { InitCommunicationMessage, InitWithPortMessage, PluginCallMessage, PluginCallStatus, PluginResponseMessage } from './MessageProtocol.js';
type IsExact<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
type Assert<T extends true> = T;
type _InitWithPortMessage = Assert<IsExact<InitWithPortMessage, {
    messageType: 'initCommunicationWithPort';
    instanceId: string;
}>>;
type _InitCommunicationMessage = Assert<IsExact<InitCommunicationMessage, {
    messageType: 'initCommunication';
    antiCSRFToken: string;
}>>;
type _PluginCallMessage = Assert<IsExact<PluginCallMessage, {
    isPluginCall: true;
    callbackId: string;
    /** @deprecated */ service?: string;
    action: string;
    actionArgs: unknown[];
    antiCSRFToken: string | undefined;
}>>;
type _PluginResponseMessage = Assert<IsExact<PluginResponseMessage, {
    isPluginCall: true;
    callbackId: string;
    status: (typeof PluginCallStatus)[keyof typeof PluginCallStatus];
    args: unknown[];
    keepCallback: boolean;
}>>;
type _PluginCallStatusType = Assert<IsExact<(typeof PluginCallStatus)[keyof typeof PluginCallStatus], 0 | 1 | 2>>;
export type _ContractChecks = [
    _InitWithPortMessage,
    _InitCommunicationMessage,
    _PluginCallMessage,
    _PluginResponseMessage,
    _PluginCallStatusType
];
export {};
//# sourceMappingURL=MessageProtocolContracts.typecheck.d.ts.map