import BigNumber from 'bignumber.js';
import { Context, CreateGroupParams, CustomPermissionGroup, InviteExternalAgentParams, KnownPermissionGroup, Namespace, RemoveExternalAgentParams, SecurityToken } from "../../../internal";
import { AgentWithGroup, PermissionGroupType, ProcedureMethod } from "../../../types";
/**
 * Handles all Security Token Permissions related functionality
 */
export declare class Permissions extends Namespace<SecurityToken> {
    /**
     * @hidden
     */
    constructor(parent: SecurityToken, context: Context);
    /**
     * Create a Permission group for this Security Token. Identities can then be assigned to said group as Agents. Agents assigned to a group have said group's permissions over this Security Token
     */
    createGroup: ProcedureMethod<CreateGroupParams, CustomPermissionGroup>;
    /**
     * Invite an Identity to be an Agent with permissions over this Security Token
     */
    inviteAgent: ProcedureMethod<InviteExternalAgentParams, void>;
    /**
     * Revoke an Agent's permissions for this Security Token
     */
    removeAgent: ProcedureMethod<RemoveExternalAgentParams, void>;
    /**
     * Retrieve a single Permission Group by its ID (or type). Passing an ID will fetch a Custom Permission Group,
     *   while passing a type will fetch a Known Permission Group
     *
     * @throws if there is no Permission Group with the passed ID
     */
    getGroup(args: {
        id: BigNumber;
    }): Promise<CustomPermissionGroup>;
    getGroup(args: {
        type: PermissionGroupType;
    }): Promise<KnownPermissionGroup>;
    /**
     * Retrieve all Permission Groups of this Security Token
     */
    getGroups(): Promise<{
        known: KnownPermissionGroup[];
        custom: CustomPermissionGroup[];
    }>;
    /**
     * Retrieve a list of Agents (Identities which have permissions over the Security Token) and
     *   their respective Permission Groups
     */
    getAgents(): Promise<AgentWithGroup[]>;
}
//# sourceMappingURL=Permissions.d.ts.map