/*
 * 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.
 */

sequenceable AgentCard..OHOS.AgentRuntime.AgentCard;
sequenceable OHOS.AAFwk.Want;
sequenceable OHOS.IRemoteObject;
interface OHOS.AAFwk.IAbilityConnection;
rawdata AgentCard..OHOS.AgentRuntime.AgentCardsRawData;
interface OHOS.AgentRuntime.IAgentManager {
    void GetAllAgentCards([out] AgentCardsRawData cards);
    void GetAgentCardsByBundleName([in] String bundleName, [out] AgentCardsRawData cards);
    void GetAgentCardByAgentId([in] String bundleName, [in] String agentId, [out] AgentCard card);
    void GetCallerAgentCardByAgentId([in] String agentId, [out] AgentCard card);
    void RegisterAgentCard([in] AgentCard card);
    void UpdateAgentCard([in] AgentCard card);
    void DeleteAgentCard([in] String bundleName, [in] String agentId);
    void ConnectAgentExtensionAbility([in] Want want, [in] IAbilityConnection connect);
    void DisconnectAgentExtensionAbility([in] IAbilityConnection connect);
    void ConnectServiceExtensionAbility([in] IRemoteObject callerToken, [in] Want want, [in] IAbilityConnection connect);
    void DisconnectServiceExtensionAbility([in] IRemoteObject callerToken, [in] IAbilityConnection connect);
    void NotifyLowCodeAgentComplete([in] String agentId);
    void GetAgentCardTypeForConnect([inout] Want want, [out] int cardType);
    void VerifyAgentConnectRequest([in] Want want, [in] IAbilityConnection connect, [out] String callerIdentity);
    void VerifyAgentDisconnectRequests([in] List<Want> wants, [in] IAbilityConnection connect,
        [out] String callerIdentity);
}