import { CustomPermissionGroup, KnownPermissionGroup, Procedure, SecurityToken } from "../../internal";
import { Identity, TransactionPermissions, TxGroup } from "../../types";
import { MaybePostTransactionValue, ProcedureAuthorization } from "../../types/internal";
interface TokenBase {
    /**
     * Security Token over which the Identity will be granted permissions
     */
    token: string | SecurityToken;
}
interface TransactionsParams extends TokenBase {
    transactions: TransactionPermissions;
}
interface TxGroupParams extends TokenBase {
    transactionGroups: TxGroup[];
}
/**
 * This procedure can be called with:
 *   - A Security Token's existing Custom Permission Group. The Identity will be assigned as an Agent of that Group for that Token
 *   - A Known Permission Group and a Security Token. The Identity will be assigned as an Agent of that Group for that Token
 *   - A set of Transaction Permissions and a Security Token. A Custom Permission Group will be created for that Token with those permissions, and
 *     the Identity will be assigned as an Agent of that Group for that Token
 *   - An array of [[TxGroup]]s that represent a set of permissions. A Custom Permission Group will be created with those permissions, and
 *     the Identity will be assigned as an Agent of that Group for that Token
 */
export interface SetPermissionGroupParams {
    group: KnownPermissionGroup | CustomPermissionGroup | TransactionsParams | TxGroupParams;
}
/**
 * @hidden
 */
export declare type Params = SetPermissionGroupParams & {
    identity: Identity;
};
/**
 * @hidden
 */
export interface Storage {
    token: SecurityToken;
}
/**
 * @hidden
 */
export declare function prepareSetPermissionGroup(this: Procedure<Params, CustomPermissionGroup | KnownPermissionGroup, Storage>, args: Params): Promise<MaybePostTransactionValue<CustomPermissionGroup | KnownPermissionGroup>>;
/**
 * @hidden
 */
export declare function getAuthorization(this: Procedure<Params, CustomPermissionGroup | KnownPermissionGroup, Storage>): ProcedureAuthorization;
/**
 * @hidden
 */
export declare function prepareStorage(this: Procedure<Params, CustomPermissionGroup | KnownPermissionGroup, Storage>, { group }: Params): Storage;
/**
 * @hidden
 */
export declare const setPermissionGroup: () => Procedure<Params, CustomPermissionGroup | KnownPermissionGroup, Storage>;
export {};
//# sourceMappingURL=setPermissionGroup.d.ts.map