// components/optimization_guide/public/mojom/model_broker.mojom-webui.ts is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import { mojo } from '//resources/mojo/mojo/public/js/bindings.js';
import { DownloadObserverRemote as onDeviceModel_mojom_DownloadObserverRemote } from './download_observer.mojom-webui.js';
import { SessionPendingReceiver as onDeviceModel_mojom_SessionPendingReceiver, TextSafetySessionPendingReceiver as onDeviceModel_mojom_TextSafetySessionPendingReceiver, CapabilitiesSpec as onDeviceModel_mojom_CapabilitiesSpec, SessionParamsSpec as onDeviceModel_mojom_SessionParamsSpec } from './on_device_model.mojom-webui.js';
import { ProtoWrapperSpec as mojoBase_mojom_ProtoWrapperSpec } from '//resources/mojo/mojo/public/mojom/base/proto_wrapper.mojom-webui.js';
export const OnDeviceFeatureSpec = { $: mojo.internal.Enum() };
export var OnDeviceFeature;
(function (OnDeviceFeature) {
    OnDeviceFeature[OnDeviceFeature["MIN_VALUE"] = 0] = "MIN_VALUE";
    OnDeviceFeature[OnDeviceFeature["MAX_VALUE"] = 12] = "MAX_VALUE";
    OnDeviceFeature[OnDeviceFeature["kCompose"] = 0] = "kCompose";
    OnDeviceFeature[OnDeviceFeature["kTest"] = 1] = "kTest";
    OnDeviceFeature[OnDeviceFeature["kPromptApi"] = 2] = "kPromptApi";
    OnDeviceFeature[OnDeviceFeature["kHistorySearch"] = 3] = "kHistorySearch";
    OnDeviceFeature[OnDeviceFeature["kSummarize"] = 4] = "kSummarize";
    OnDeviceFeature[OnDeviceFeature["kHistoryQueryIntent"] = 5] = "kHistoryQueryIntent";
    OnDeviceFeature[OnDeviceFeature["kScamDetection"] = 6] = "kScamDetection";
    OnDeviceFeature[OnDeviceFeature["kPermissionsAi"] = 7] = "kPermissionsAi";
    OnDeviceFeature[OnDeviceFeature["kWritingAssistanceApi"] = 8] = "kWritingAssistanceApi";
    OnDeviceFeature[OnDeviceFeature["kOnDeviceSpeechRecognition"] = 9] = "kOnDeviceSpeechRecognition";
    OnDeviceFeature[OnDeviceFeature["kProofreaderApi"] = 10] = "kProofreaderApi";
    OnDeviceFeature[OnDeviceFeature["kClassifier"] = 11] = "kClassifier";
    OnDeviceFeature[OnDeviceFeature["kSpeechRecognitionSmallExpertModel"] = 12] = "kSpeechRecognitionSmallExpertModel";
})(OnDeviceFeature || (OnDeviceFeature = {}));
export const ModelUnavailableReasonSpec = { $: mojo.internal.Enum() };
export var ModelUnavailableReason;
(function (ModelUnavailableReason) {
    ModelUnavailableReason[ModelUnavailableReason["MIN_VALUE"] = 0] = "MIN_VALUE";
    ModelUnavailableReason[ModelUnavailableReason["MAX_VALUE"] = 4] = "MAX_VALUE";
    ModelUnavailableReason[ModelUnavailableReason["kUnknown"] = 0] = "kUnknown";
    ModelUnavailableReason[ModelUnavailableReason["kNotSupported"] = 2] = "kNotSupported";
    ModelUnavailableReason[ModelUnavailableReason["kPendingAssets"] = 3] = "kPendingAssets";
    ModelUnavailableReason[ModelUnavailableReason["kPendingUsage"] = 4] = "kPendingUsage";
})(ModelUnavailableReason || (ModelUnavailableReason = {}));
export const ModelNotSupportedDetailedReasonSpec = { $: mojo.internal.Enum() };
export var ModelNotSupportedDetailedReason;
(function (ModelNotSupportedDetailedReason) {
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["MIN_VALUE"] = 1] = "MIN_VALUE";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["MAX_VALUE"] = 9] = "MAX_VALUE";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kFeatureNotEnabled"] = 1] = "kFeatureNotEnabled";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kGpuBlocked"] = 2] = "kGpuBlocked";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kTooManyRecentCrashes"] = 3] = "kTooManyRecentCrashes";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kSafetyConfigNotAvailableForFeature"] = 4] = "kSafetyConfigNotAvailableForFeature";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kFeatureExecutionNotEnabled"] = 5] = "kFeatureExecutionNotEnabled";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kValidationFailed"] = 6] = "kValidationFailed";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kModelNotEligible"] = 7] = "kModelNotEligible";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kInsufficientDiskSpace"] = 8] = "kInsufficientDiskSpace";
    ModelNotSupportedDetailedReason[ModelNotSupportedDetailedReason["kModelAdaptationNotAvailable"] = 9] = "kModelAdaptationNotAvailable";
})(ModelNotSupportedDetailedReason || (ModelNotSupportedDetailedReason = {}));
export class ModelSolutionPendingReceiver {
    handle;
    constructor(handle) {
        this.handle = mojo.internal.interfaceSupport.getEndpointForReceiver(handle);
    }
    bindInBrowser(scope = 'context') {
        mojo.internal.interfaceSupport.bind(this.handle, 'optimization_guide.mojom.ModelSolution', scope);
    }
}
export class ModelSolutionRemote {
    proxy;
    $;
    onConnectionError;
    constructor(handle) {
        this.proxy =
            new mojo.internal.interfaceSupport.InterfaceRemoteBase(ModelSolutionPendingReceiver, handle);
        this.$ = new mojo.internal.interfaceSupport.InterfaceRemoteBaseWrapper(this.proxy);
        this.onConnectionError = this.proxy.getConnectionErrorEventRouter();
    }
    createSession(session, params) {
        this.proxy.sendMessage(1699117478, ModelSolution_CreateSession_ParamsSpec.$, null, [
            session,
            params
        ], false);
    }
    createTextSafetySession(session) {
        this.proxy.sendMessage(209378402, ModelSolution_CreateTextSafetySession_ParamsSpec.$, null, [
            session
        ], false);
    }
    reportHealthyCompletion() {
        this.proxy.sendMessage(803583820, ModelSolution_ReportHealthyCompletion_ParamsSpec.$, null, [], false);
    }
}
;
/**
 * An object which receives request messages for the ModelSolution
 * mojom interface. Must be constructed over an object which implements that
 * interface.
 */
export class ModelSolutionReceiver {
    helper_internal_;
    $;
    onConnectionError;
    constructor(impl) {
        this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(ModelSolutionRemote);
        this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
        this.helper_internal_.registerHandler(1699117478, ModelSolution_CreateSession_ParamsSpec.$, null, impl.createSession.bind(impl), false);
        this.helper_internal_.registerHandler(209378402, ModelSolution_CreateTextSafetySession_ParamsSpec.$, null, impl.createTextSafetySession.bind(impl), false);
        this.helper_internal_.registerHandler(803583820, ModelSolution_ReportHealthyCompletion_ParamsSpec.$, null, impl.reportHealthyCompletion.bind(impl), false);
        this.onConnectionError = this.helper_internal_.getConnectionErrorEventRouter();
    }
}
export class ModelSolution {
    static get $interfaceName() {
        return "optimization_guide.mojom.ModelSolution";
    }
    /**
     * Returns a remote for this interface which sends messages to the browser.
     * The browser must have an interface request binder registered for this
     * interface and accessible to the calling document's frame.
     */
    static getRemote() {
        let remote = new ModelSolutionRemote;
        remote.$.bindNewPipeAndPassReceiver().bindInBrowser();
        return remote;
    }
}
/**
 * An object which receives request messages for the ModelSolution
 * mojom interface and dispatches them as callbacks. One callback receiver exists
 * on this object for each message defined in the mojom interface, and each
 * receiver can have any number of listeners added to it.
 */
export class ModelSolutionCallbackRouter {
    helper_internal_;
    $;
    router_;
    createSession;
    createTextSafetySession;
    reportHealthyCompletion;
    onConnectionError;
    constructor() {
        this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(ModelSolutionRemote);
        this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
        this.router_ = new mojo.internal.interfaceSupport.CallbackRouter;
        this.createSession =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(1699117478, ModelSolution_CreateSession_ParamsSpec.$, null, this.createSession.createReceiverHandler(false /* expectsResponse */), false);
        this.createTextSafetySession =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(209378402, ModelSolution_CreateTextSafetySession_ParamsSpec.$, null, this.createTextSafetySession.createReceiverHandler(false /* expectsResponse */), false);
        this.reportHealthyCompletion =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(803583820, ModelSolution_ReportHealthyCompletion_ParamsSpec.$, null, this.reportHealthyCompletion.createReceiverHandler(false /* expectsResponse */), false);
        this.onConnectionError = this.helper_internal_.getConnectionErrorEventRouter();
    }
    /**
     * @param id An ID returned by a prior call to addListener.
     * @return True iff the identified listener was found and removed.
     */
    removeListener(id) {
        return this.router_.removeListener(id);
    }
}
export class ModelSubscriberPendingReceiver {
    handle;
    constructor(handle) {
        this.handle = mojo.internal.interfaceSupport.getEndpointForReceiver(handle);
    }
    bindInBrowser(scope = 'context') {
        mojo.internal.interfaceSupport.bind(this.handle, 'optimization_guide.mojom.ModelSubscriber', scope);
    }
}
export class ModelSubscriberRemote {
    proxy;
    $;
    onConnectionError;
    constructor(handle) {
        this.proxy =
            new mojo.internal.interfaceSupport.InterfaceRemoteBase(ModelSubscriberPendingReceiver, handle);
        this.$ = new mojo.internal.interfaceSupport.InterfaceRemoteBaseWrapper(this.proxy);
        this.onConnectionError = this.proxy.getConnectionErrorEventRouter();
    }
    unavailable(reason, detailedReason) {
        this.proxy.sendMessage(1333582340, ModelSubscriber_Unavailable_ParamsSpec.$, null, [
            reason,
            detailedReason
        ], false);
    }
    available(config, solution) {
        this.proxy.sendMessage(743151742, ModelSubscriber_Available_ParamsSpec.$, null, [
            config,
            solution
        ], false);
    }
    capabilitiesUpdated(capabilities) {
        this.proxy.sendMessage(1324464963, ModelSubscriber_CapabilitiesUpdated_ParamsSpec.$, null, [
            capabilities
        ], false);
    }
}
;
/**
 * An object which receives request messages for the ModelSubscriber
 * mojom interface. Must be constructed over an object which implements that
 * interface.
 */
export class ModelSubscriberReceiver {
    helper_internal_;
    $;
    onConnectionError;
    constructor(impl) {
        this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(ModelSubscriberRemote);
        this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
        this.helper_internal_.registerHandler(1333582340, ModelSubscriber_Unavailable_ParamsSpec.$, null, impl.unavailable.bind(impl), false);
        this.helper_internal_.registerHandler(743151742, ModelSubscriber_Available_ParamsSpec.$, null, impl.available.bind(impl), false);
        this.helper_internal_.registerHandler(1324464963, ModelSubscriber_CapabilitiesUpdated_ParamsSpec.$, null, impl.capabilitiesUpdated.bind(impl), false);
        this.onConnectionError = this.helper_internal_.getConnectionErrorEventRouter();
    }
}
export class ModelSubscriber {
    static get $interfaceName() {
        return "optimization_guide.mojom.ModelSubscriber";
    }
    /**
     * Returns a remote for this interface which sends messages to the browser.
     * The browser must have an interface request binder registered for this
     * interface and accessible to the calling document's frame.
     */
    static getRemote() {
        let remote = new ModelSubscriberRemote;
        remote.$.bindNewPipeAndPassReceiver().bindInBrowser();
        return remote;
    }
}
/**
 * An object which receives request messages for the ModelSubscriber
 * mojom interface and dispatches them as callbacks. One callback receiver exists
 * on this object for each message defined in the mojom interface, and each
 * receiver can have any number of listeners added to it.
 */
export class ModelSubscriberCallbackRouter {
    helper_internal_;
    $;
    router_;
    unavailable;
    available;
    capabilitiesUpdated;
    onConnectionError;
    constructor() {
        this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(ModelSubscriberRemote);
        this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
        this.router_ = new mojo.internal.interfaceSupport.CallbackRouter;
        this.unavailable =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(1333582340, ModelSubscriber_Unavailable_ParamsSpec.$, null, this.unavailable.createReceiverHandler(false /* expectsResponse */), false);
        this.available =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(743151742, ModelSubscriber_Available_ParamsSpec.$, null, this.available.createReceiverHandler(false /* expectsResponse */), false);
        this.capabilitiesUpdated =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(1324464963, ModelSubscriber_CapabilitiesUpdated_ParamsSpec.$, null, this.capabilitiesUpdated.createReceiverHandler(false /* expectsResponse */), false);
        this.onConnectionError = this.helper_internal_.getConnectionErrorEventRouter();
    }
    /**
     * @param id An ID returned by a prior call to addListener.
     * @return True iff the identified listener was found and removed.
     */
    removeListener(id) {
        return this.router_.removeListener(id);
    }
}
export class ModelBrokerPendingReceiver {
    handle;
    constructor(handle) {
        this.handle = mojo.internal.interfaceSupport.getEndpointForReceiver(handle);
    }
    bindInBrowser(scope = 'context') {
        mojo.internal.interfaceSupport.bind(this.handle, 'optimization_guide.mojom.ModelBroker', scope);
    }
}
export class ModelBrokerRemote {
    proxy;
    $;
    onConnectionError;
    constructor(handle) {
        this.proxy =
            new mojo.internal.interfaceSupport.InterfaceRemoteBase(ModelBrokerPendingReceiver, handle);
        this.$ = new mojo.internal.interfaceSupport.InterfaceRemoteBaseWrapper(this.proxy);
        this.onConnectionError = this.proxy.getConnectionErrorEventRouter();
    }
    subscribe(options, subscriber) {
        this.proxy.sendMessage(757574585, ModelBroker_Subscribe_ParamsSpec.$, null, [
            options,
            subscriber
        ], false);
    }
    getConfig(feature) {
        return this.proxy.sendMessage(612739861, ModelBroker_GetConfig_ParamsSpec.$, ModelBroker_GetConfig_ResponseParamsSpec.$, [
            feature
        ], false);
    }
    addModelDownloadProgressObserver(useCase, observer) {
        this.proxy.sendMessage(257906549, ModelBroker_AddModelDownloadProgressObserver_ParamsSpec.$, null, [
            useCase,
            observer
        ], false);
    }
    requestAssetsFor(useCase) {
        this.proxy.sendMessage(1338917054, ModelBroker_RequestAssetsFor_ParamsSpec.$, null, [
            useCase
        ], false);
    }
}
;
/**
 * An object which receives request messages for the ModelBroker
 * mojom interface. Must be constructed over an object which implements that
 * interface.
 */
export class ModelBrokerReceiver {
    helper_internal_;
    $;
    onConnectionError;
    constructor(impl) {
        this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(ModelBrokerRemote);
        this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
        this.helper_internal_.registerHandler(757574585, ModelBroker_Subscribe_ParamsSpec.$, null, impl.subscribe.bind(impl), false);
        this.helper_internal_.registerHandler(612739861, ModelBroker_GetConfig_ParamsSpec.$, ModelBroker_GetConfig_ResponseParamsSpec.$, impl.getConfig.bind(impl), false);
        this.helper_internal_.registerHandler(257906549, ModelBroker_AddModelDownloadProgressObserver_ParamsSpec.$, null, impl.addModelDownloadProgressObserver.bind(impl), false);
        this.helper_internal_.registerHandler(1338917054, ModelBroker_RequestAssetsFor_ParamsSpec.$, null, impl.requestAssetsFor.bind(impl), false);
        this.onConnectionError = this.helper_internal_.getConnectionErrorEventRouter();
    }
}
export class ModelBroker {
    static get $interfaceName() {
        return "optimization_guide.mojom.ModelBroker";
    }
    /**
     * Returns a remote for this interface which sends messages to the browser.
     * The browser must have an interface request binder registered for this
     * interface and accessible to the calling document's frame.
     */
    static getRemote() {
        let remote = new ModelBrokerRemote;
        remote.$.bindNewPipeAndPassReceiver().bindInBrowser();
        return remote;
    }
}
/**
 * An object which receives request messages for the ModelBroker
 * mojom interface and dispatches them as callbacks. One callback receiver exists
 * on this object for each message defined in the mojom interface, and each
 * receiver can have any number of listeners added to it.
 */
export class ModelBrokerCallbackRouter {
    helper_internal_;
    $;
    router_;
    subscribe;
    getConfig;
    addModelDownloadProgressObserver;
    requestAssetsFor;
    onConnectionError;
    constructor() {
        this.helper_internal_ = new mojo.internal.interfaceSupport.InterfaceReceiverHelperInternal(ModelBrokerRemote);
        this.$ = new mojo.internal.interfaceSupport.InterfaceReceiverHelper(this.helper_internal_);
        this.router_ = new mojo.internal.interfaceSupport.CallbackRouter;
        this.subscribe =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(757574585, ModelBroker_Subscribe_ParamsSpec.$, null, this.subscribe.createReceiverHandler(false /* expectsResponse */), false);
        this.getConfig =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(612739861, ModelBroker_GetConfig_ParamsSpec.$, ModelBroker_GetConfig_ResponseParamsSpec.$, this.getConfig.createReceiverHandler(true /* expectsResponse */), false);
        this.addModelDownloadProgressObserver =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(257906549, ModelBroker_AddModelDownloadProgressObserver_ParamsSpec.$, null, this.addModelDownloadProgressObserver.createReceiverHandler(false /* expectsResponse */), false);
        this.requestAssetsFor =
            new mojo.internal.interfaceSupport.InterfaceCallbackReceiver(this.router_);
        this.helper_internal_.registerHandler(1338917054, ModelBroker_RequestAssetsFor_ParamsSpec.$, null, this.requestAssetsFor.createReceiverHandler(false /* expectsResponse */), false);
        this.onConnectionError = this.helper_internal_.getConnectionErrorEventRouter();
    }
    /**
     * @param id An ID returned by a prior call to addListener.
     * @return True iff the identified listener was found and removed.
     */
    removeListener(id) {
        return this.router_.removeListener(id);
    }
}
export const ModelSolutionConfigSpec = { $: {} };
export const ModelSubscriptionOptionsSpec = { $: {} };
export const ModelSolution_CreateSession_ParamsSpec = { $: {} };
export const ModelSolution_CreateTextSafetySession_ParamsSpec = { $: {} };
export const ModelSolution_ReportHealthyCompletion_ParamsSpec = { $: {} };
export const ModelSubscriber_Unavailable_ParamsSpec = { $: {} };
export const ModelSubscriber_Available_ParamsSpec = { $: {} };
export const ModelSubscriber_CapabilitiesUpdated_ParamsSpec = { $: {} };
export const ModelBroker_Subscribe_ParamsSpec = { $: {} };
export const ModelBroker_GetConfig_ParamsSpec = { $: {} };
export const ModelBroker_GetConfig_ResponseParamsSpec = { $: {} };
export const ModelBroker_AddModelDownloadProgressObserver_ParamsSpec = { $: {} };
export const ModelBroker_RequestAssetsFor_ParamsSpec = { $: {} };
mojo.internal.Struct(ModelSolutionConfigSpec.$, 'ModelSolutionConfig', [
    mojo.internal.StructField('featureConfig', 0, 0, mojoBase_mojom_ProtoWrapperSpec.$, null, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('textSafetyConfig', 8, 0, mojoBase_mojom_ProtoWrapperSpec.$, null, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('modelVersions', 16, 0, mojoBase_mojom_ProtoWrapperSpec.$, null, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('modelCapabilities', 24, 0, onDeviceModel_mojom_CapabilitiesSpec.$, null, false /* nullable */, 0, undefined, undefined),
], [[0, 40],]);
mojo.internal.Struct(ModelSubscriptionOptionsSpec.$, 'ModelSubscriptionOptions', [
    mojo.internal.StructField('useCase', 0, 0, mojo.internal.String, null, false /* nullable */, 0, undefined, undefined),
], [[0, 16],]);
mojo.internal.Struct(ModelSolution_CreateSession_ParamsSpec.$, 'ModelSolution_CreateSession_Params', [
    mojo.internal.StructField('session', 0, 0, mojo.internal.InterfaceRequest(onDeviceModel_mojom_SessionPendingReceiver), null, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('params', 8, 0, onDeviceModel_mojom_SessionParamsSpec.$, null, false /* nullable */, 0, undefined, undefined),
], [[0, 24],]);
mojo.internal.Struct(ModelSolution_CreateTextSafetySession_ParamsSpec.$, 'ModelSolution_CreateTextSafetySession_Params', [
    mojo.internal.StructField('session', 0, 0, mojo.internal.InterfaceRequest(onDeviceModel_mojom_TextSafetySessionPendingReceiver), null, false /* nullable */, 0, undefined, undefined),
], [[0, 16],]);
mojo.internal.Struct(ModelSolution_ReportHealthyCompletion_ParamsSpec.$, 'ModelSolution_ReportHealthyCompletion_Params', [], [[0, 8],]);
mojo.internal.Struct(ModelSubscriber_Unavailable_ParamsSpec.$, 'ModelSubscriber_Unavailable_Params', [
    mojo.internal.StructField('reason', 0, 0, ModelUnavailableReasonSpec.$, 0, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('detailed_reason_$flag', 4, 0, mojo.internal.Bool, false, false /* nullable */, 0, {
        isPrimary: true,
        linkedValueFieldName: "detailed_reason_$value",
        originalFieldName: "detailedReason",
    }, undefined),
    mojo.internal.StructField('detailed_reason_$value', 8, 0, ModelNotSupportedDetailedReasonSpec.$, 1, false /* nullable */, 0, {
        isPrimary: false,
        originalFieldName: "detailedReason",
    }, undefined),
], [[0, 24],]);
mojo.internal.Struct(ModelSubscriber_Available_ParamsSpec.$, 'ModelSubscriber_Available_Params', [
    mojo.internal.StructField('config', 0, 0, ModelSolutionConfigSpec.$, null, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('solution', 8, 0, mojo.internal.InterfaceProxy(ModelSolutionRemote), null, false /* nullable */, 0, undefined, undefined),
], [[0, 24],]);
mojo.internal.Struct(ModelSubscriber_CapabilitiesUpdated_ParamsSpec.$, 'ModelSubscriber_CapabilitiesUpdated_Params', [
    mojo.internal.StructField('capabilities', 0, 0, onDeviceModel_mojom_CapabilitiesSpec.$, null, false /* nullable */, 0, undefined, undefined),
], [[0, 16],]);
mojo.internal.Struct(ModelBroker_Subscribe_ParamsSpec.$, 'ModelBroker_Subscribe_Params', [
    mojo.internal.StructField('options', 0, 0, ModelSubscriptionOptionsSpec.$, null, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('subscriber', 8, 0, mojo.internal.InterfaceProxy(ModelSubscriberRemote), null, false /* nullable */, 0, undefined, undefined),
], [[0, 24],]);
mojo.internal.Struct(ModelBroker_GetConfig_ParamsSpec.$, 'ModelBroker_GetConfig_Params', [
    mojo.internal.StructField('feature', 0, 0, OnDeviceFeatureSpec.$, 0, false /* nullable */, 0, undefined, undefined),
], [[0, 16],]);
mojo.internal.Struct(ModelBroker_GetConfig_ResponseParamsSpec.$, 'ModelBroker_GetConfig_ResponseParams', [
    mojo.internal.StructField('config', 0, 0, mojoBase_mojom_ProtoWrapperSpec.$, null, true /* nullable */, 0, undefined, undefined),
], [[0, 16],]);
mojo.internal.Struct(ModelBroker_AddModelDownloadProgressObserver_ParamsSpec.$, 'ModelBroker_AddModelDownloadProgressObserver_Params', [
    mojo.internal.StructField('useCase', 0, 0, mojo.internal.String, null, false /* nullable */, 0, undefined, undefined),
    mojo.internal.StructField('observer', 8, 0, mojo.internal.InterfaceProxy(onDeviceModel_mojom_DownloadObserverRemote), null, false /* nullable */, 0, undefined, undefined),
], [[0, 24],]);
mojo.internal.Struct(ModelBroker_RequestAssetsFor_ParamsSpec.$, 'ModelBroker_RequestAssetsFor_Params', [
    mojo.internal.StructField('useCase', 0, 0, mojo.internal.String, null, false /* nullable */, 0, undefined, undefined),
], [[0, 16],]);
