import { Asset, Context, CustomPermissionGroup, Identity, KnownPermissionGroup, Namespace, SetPermissionGroupParams, WaivePermissionsParams } from "../../../internal";
import { EventIdEnum as EventId, ModuleIdEnum as ModuleId } from "../../../middleware/types";
import { AssetWithGroup, CheckPermissionsResult, EventIdentifier, ProcedureMethod, ResultSet, SignerType, TxTag } from "../../../types";
/**
 * Handles all Asset Permissions (External Agents) related functionality on the Identity side
 */
export declare class AssetPermissions extends Namespace<Identity> {
    /**
     * @hidden
     */
    constructor(parent: Identity, context: Context);
    /**
     * Retrieve all the Assets over which this Identity has permissions, with the corresponding Permission Group
     */
    get(): Promise<AssetWithGroup[]>;
    /**
     * Check whether this Identity has specific transaction Permissions over an Asset
     */
    checkPermissions(args: {
        asset: Asset | string;
        transactions: TxTag[] | null;
    }): Promise<CheckPermissionsResult<SignerType.Identity>>;
    /**
     * Check whether this Identity has specific transaction Permissions over an Asset
     *
     * @deprecated in favor of `checkPermissions`
     */
    hasPermissions(args: {
        asset: Asset | string;
        transactions: TxTag[] | null;
    }): Promise<boolean>;
    /**
     * Retrieve this Identity's Permission Group for a specific Asset
     */
    getGroup({ asset, }: {
        asset: string | Asset;
    }): Promise<CustomPermissionGroup | KnownPermissionGroup>;
    /**
     * Retrieve the identifier data (block number, date and event index) of the event that was emitted when this Identity was enabled/added as
     *   an Agent with permissions over a specific Asset
     *
     * @note uses the middleware
     * @note there is a possibility that the data is not ready by the time it is requested. In that case, `null` is returned
     */
    enabledAt({ asset }: {
        asset: string | Asset;
    }): Promise<EventIdentifier | null>;
    /**
     * Abdicate from the current Permissions Group for a given Asset. This means that this Identity will no longer have any permissions over said Asset
     */
    waive: ProcedureMethod<WaivePermissionsParams, void>;
    /**
     * Assign this Identity to a different Permission Group for a given Asset
     */
    setGroup: ProcedureMethod<SetPermissionGroupParams, CustomPermissionGroup | KnownPermissionGroup>;
    /**
     * Retrieve all Events triggered by Operations this Identity has performed on a specific Asset
     *
     * @param opts.moduleId - filters results by module
     * @param opts.eventId - filters results by event
     * @param opts.size - page size
     * @param opts.start - page offset
     *
     * @note uses the middleware
     * @note supports pagination
     */
    getOperationHistory(opts: {
        asset: string | Asset;
        moduleId?: ModuleId;
        eventId?: EventId;
        size?: number;
        start?: number;
    }): Promise<ResultSet<EventIdentifier>>;
}
//# sourceMappingURL=AssetPermissions.d.ts.map