/*
 * Copyright (c) 2023 Qualcomm Technologies, Inc.
 * All Rights Reserved.
 * Confidential and Proprietary - Qualcomm Technologies, Inc.
 */
include "IHlosDaemonCB.idl"

/**
 * @section IHlosDaemon_Overview
 */
/** @cond */
interface IHlosDaemon {
/** @endcond */

    /**
    @brief Register IHlosDaemonCB and update the earliest timeout.

    @param[out] nextTimeOut - The earliest timeout in license store.

    @return Object_OK on success.
    */
    method registerTimeOutCB(in IHlosDaemonCB hlosDaemonCb, out uint64 nextTimeOut);

    /**
    @brief Call IPFMCallback_Notify for each affected callbacks
           and update the earliest timeout.

    @param[out] nextTimeOut - The earliest timeout in license store.

    @return Object_OK on success.
    */
    method timeOut(out uint64 nextTimeOut);

    /**
    @brief Register a death notifier object in the case of TA crashes.

    @param[in] notifier - The death notifier object to be registered
                          and to get notified when TA crashes.

    @return Object_OK on success.
    */
    method registerTADeathNotifier(in interface notifier);

    /**
    @brief Register a death notifier object in the case of TA crashes.

    @param[in] notifier - The death notifier object to be registered
                          and to get notified when TA crashes.

    @param[out] notifierCallbackHandle - An opaque object that must be held by the
                                         callee for the lifetime of the callback. When
                                         done with the callback, the callee must call
                                         Object_release on this object.

    @return Object_OK on success.
    */
    method registerTADeathNotifierWithHandle(in interface notifier, out interface notifierCallbackHandle);
    /* @} */ /* end_addtogroup IHlosDaemon */
};