import { Account, AuthorizationRequest, Context, InviteAccountParams, ModifySignerPermissionsParams, RemoveSecondaryAccountsParams, SubsidizeAccountParams } from "./internal";
import { AccountBalance, NoArgsProcedureMethod, ProcedureMethod, SubCallback, UnsubCallback } from "./types";
/**
 * Handles functionality related to Account Management
 */
export declare class AccountManagement {
    private context;
    /**
     * @hidden
     */
    constructor(context: Context);
    /**
     * Remove a list of secondary Accounts associated with the signing Identity
     */
    removeSecondaryAccounts: ProcedureMethod<RemoveSecondaryAccountsParams, void>;
    /**
     * Revoke all permissions of a list of secondary Accounts associated with the signing Identity
     */
    revokePermissions: ProcedureMethod<{
        secondaryAccounts: Account[];
    }, void>;
    /**
     * Modify all permissions of a list of secondary Accounts associated with the signing Identity
     */
    modifyPermissions: ProcedureMethod<ModifySignerPermissionsParams, void>;
    /**
     * Send an invitation to an Account to join the signing Identity as a secondary Account
     *
     * @note this will create an AuthorizationRequest which has to be accepted by
     *   the corresponding Account. An Account can
     *   fetch its pending Authorization Requests by calling `authorizations.getReceived`
     */
    inviteAccount: ProcedureMethod<InviteAccountParams, AuthorizationRequest>;
    /**
     * Freeze all of the secondary Accounts in the signing Identity. This means revoking their permission to perform any operation on the blockchain and freezing their funds until the Accounts are unfrozen via [[unfreezeSecondaryAccounts]]
     */
    freezeSecondaryAccounts: NoArgsProcedureMethod<void>;
    /**
     * Unfreeze all of the secondary Accounts in the signing Identity. This will restore their permissions as they were before being frozen
     */
    unfreezeSecondaryAccounts: NoArgsProcedureMethod<void>;
    /**
     * Send an Authorization Request to an Account to subsidize its transaction fees
     *
     * @note this will create an AuthorizationRequest which has to be accepted by
     *   the beneficiary Account. An Account can fetch its pending Authorization Requests by calling `authorizations.getReceived`
     */
    subsidizeAccount: ProcedureMethod<SubsidizeAccountParams, AuthorizationRequest>;
    /**
     * Get the free/locked POLYX balance of an Account
     *
     * @param args.account - defaults to the current Account
     *
     * @note can be subscribed to
     */
    getAccountBalance(args?: {
        account: string | Account;
    }): Promise<AccountBalance>;
    getAccountBalance(callback: SubCallback<AccountBalance>): Promise<UnsubCallback>;
    getAccountBalance(args: {
        account: string | Account;
    }, callback: SubCallback<AccountBalance>): Promise<UnsubCallback>;
    /**
     * Create an Account instance from an address. If no address is passed, the current Account is returned
     */
    getAccount(args?: {
        address: string;
    }): Account;
    /**
     * Return a list that contains all the signing Accounts associated to the SDK instance
     *
     * @throws — if there is no current Account associated to the SDK instance
     */
    getAccounts(): Account[];
}
//# sourceMappingURL=AccountManagement.d.ts.map