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);
    /**
     * Disassociate the signing Account from its Identity. This operation can only be done if the signing Account is a secondary Account
     */
    leaveIdentity: NoArgsProcedureMethod<void>;
    /**
     * 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 {@link AuthorizationRequest | Authorization Request} which has to be accepted by the `targetAccount`.
     *   An {@link Account} or {@link Identity} can fetch its pending Authorization Requests by calling {@link Authorizations.getReceived | authorizations.getReceived}.
     *   Also, an Account or Identity can directly fetch the details of an Authorization Request by calling {@link Authorizations.getOne | authorizations.getOne}
     */
    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 {@link 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 {@link AuthorizationRequest | Authorization Request} which has to be accepted by the `beneficiary` Account.
     *   An {@link Account} or {@link Identity} can fetch its pending Authorization Requests by calling {@link Authorizations.getReceived | authorizations.getReceived}.
     *   Also, an Account or Identity can directly fetch the details of an Authorization Request by calling {@link Authorizations.getOne | authorizations.getOne}
     */
    subsidizeAccount: ProcedureMethod<SubsidizeAccountParams, AuthorizationRequest>;
    /**
     * Get the free/locked POLYX balance of an Account
     *
     * @param args.account - defaults to the signing 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>;
    /**
     * Return an Account instance from an address
     */
    getAccount(args: {
        address: string;
    }): Account;
    /**
     * Return the signing Account, or null if no signing Account has been set
     */
    getSigningAccount(): Account | null;
    /**
     * Return a list that contains all the signing Accounts associated to the SDK instance's Signing Manager
     *
     * @throws — if there is no Signing Manager attached to the SDK
     */
    getSigningAccounts(): Promise<Account[]>;
}
//# sourceMappingURL=AccountManagement.d.ts.map