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