/*
 * Copyright (c) 2026 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package OHOS.CliTool;

import ICliToolData;
import ICliToolManagerScheduler;
sequenceable CliSessionInfo..OHOS.CliTool.CliSessionInfo;
sequenceable ExecCmdParam..OHOS.CliTool.ExecCmdParam;
sequenceable ExecToolParam..OHOS.CliTool.ExecToolParam;
sequenceable OHOS.CliTool.ToolSummary;
sequenceable ToolInfo..OHOS.CliTool.ToolInfo;
rawdata ToolInfo..OHOS.CliTool.ToolsRawData;
sequenceable FunctionInfo..OHOS.CliTool.FunctionInfo;
rawdata FunctionInfo..OHOS.CliTool.FunctionsRawData;

interface ICliToolManager {
    void GetAllToolSummaries([out] ToolSummary[] summaries);
    void GetToolInfoByName([in] String name, [out] ToolInfo tool);
    void GetAllToolInfos([out] ToolsRawData tools);
    void ExecTool([in] ExecToolParam param, [in] String eventId, [in] ICliToolManagerScheduler scheduler);
    void ExecCmd([in] ExecCmdParam param, [in] String eventId, [in] ICliToolManagerScheduler scheduler, [in] String subscriptionId);
    void SubscribeSession([in] String sessionId, [in] String subscriptionId, [in] ICliToolManagerScheduler scheduler);
    void UnsubscribeSession([in] String sessionId, [in] String subscriptionId);
    void ClearSession([in] String sessionId);
    void QuerySession([in] String sessionId, [out] CliSessionInfo session);
    void SendMessage([in] String sessionId, [in] String inputText, [in] String eventId,
        [in] ICliToolManagerScheduler scheduler);
    void BatchQueryPermissionBySubCommand([in] List<Command> cmds, [out] List<CommandPermission> cmdPermissions);
    void RegisterFunction([in] FunctionInfo function);
    void BatchRegisterFunctions([in] FunctionsRawData functions, [out] int successCount);
    void GetFunctionInfo([in] String functionNamespace, [in] String functionName, [out] FunctionInfo function);
    void UnregisterFunction([in] String functionNamespace, [in] String functionName);
    void UnregisterIntentFunctionsByNamespace([in] String functionNamespace);
    void ResetNamespaceFunctions([in] String functionNamespace, [in] FunctionsRawData functions, [out] int successCount);
    void GetAllFunctions([out] FunctionsRawData functions);
    [oneway] void BatchRegisterFunctionsAsync([in] FunctionsRawData functions);
    [oneway] void UnregisterIntentFunctionsByNamespaceAsync([in] String functionNamespace);
    [oneway] void ResetNamespaceFunctionsAsync([in] String functionNamespace, [in] FunctionsRawData functions);
}