import { Context, CustomPermissionGroup, Identity, KnownPermissionGroup, Namespace, SecurityToken, SetPermissionGroupParams, WaivePermissionsParams } from "../../../internal";
import { EventIdEnum as EventId, ModuleIdEnum as ModuleId } from "../../../middleware/types";
import { EventIdentifier, ProcedureMethod, ResultSet, TokenWithGroup, TxTag } from "../../../types";
/**
 * Handles all Token Permissions (External Agents) related functionality on the Identity side
 */
export declare class TokenPermissions extends Namespace<Identity> {
    /**
     * @hidden
     */
    constructor(parent: Identity, context: Context);
    /**
     * Retrieve all the Security Tokens over which this Identity has permissions, with the corresponding Permission Group
     */
    get(): Promise<TokenWithGroup[]>;
    /**
     * Check whether this Identity has specific transaction Permissions over a Security Token
     */
    hasPermissions(args: {
        token: SecurityToken | string;
        transactions: TxTag[] | null;
    }): Promise<boolean>;
    /**
     * Retrieve this Identity's Permission Group for a specific Security Token
     */
    getGroup({ token, }: {
        token: string | SecurityToken;
    }): 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 Security Token
     *
     * @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({ token, }: {
        token: string | SecurityToken;
    }): Promise<EventIdentifier | null>;
    /**
     * Abdicate from the current Permissions Group for a given Security Token. This means that this Identity will no longer have any permissions over said Token
     */
    waive: ProcedureMethod<WaivePermissionsParams, void>;
    /**
     * Assign this Identity to a different Permission Group for a given Security Token
     */
    setGroup: ProcedureMethod<SetPermissionGroupParams, CustomPermissionGroup | KnownPermissionGroup>;
    /**
     * Retrieve all Events triggered by Operations this Identity has performed on a specific Security Token
     *
     * @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: {
        token: string | SecurityToken;
        moduleId?: ModuleId;
        eventId?: EventId;
        size?: number;
        start?: number;
    }): Promise<ResultSet<EventIdentifier>>;
}
//# sourceMappingURL=TokenPermissions.d.ts.map