import type { Scope } from './Scope';
import type { AccountState } from './AccountState';
import type { AccountType } from './AccountType';
/**
 *
 * @export
 * @interface Account
 */
export interface Account {
    /**
     * Whether this account and all its parent accounts are active or restricted active.
     * @type {boolean}
     * @memberof Account
     */
    readonly activeOrRestrictedActive?: boolean;
    /**
     * The date and time when the account was deleted.
     * @type {Date}
     * @memberof Account
     */
    readonly deletedOn?: Date;
    /**
     * The date and time when the object is planned to be permanently removed. If the value is empty, the object will not be removed.
     * @type {Date}
     * @memberof Account
     */
    readonly plannedPurgeDate?: Date;
    /**
     * Whether this account and all its parent accounts are active.
     * @type {boolean}
     * @memberof Account
     */
    readonly active?: boolean;
    /**
     *
     * @type {Account}
     * @memberof Account
     */
    parentAccount?: Account;
    /**
     *
     * @type {AccountType}
     * @memberof Account
     */
    type?: AccountType;
    /**
     * The date and time when the account was created.
     * @type {Date}
     * @memberof Account
     */
    readonly createdOn?: Date;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof Account
     */
    readonly version?: number;
    /**
     * The ID of a user the account was deleted by.
     * @type {number}
     * @memberof Account
     */
    readonly deletedBy?: number;
    /**
     * Whether this account and all its parent accounts are active or restricted active. There is at least one account that is restricted active.
     * @type {boolean}
     * @memberof Account
     */
    readonly restrictedActive?: boolean;
    /**
     * The ID of the user the account was created by.
     * @type {number}
     * @memberof Account
     */
    readonly createdBy?: number;
    /**
     *
     * @type {Scope}
     * @memberof Account
     */
    scope?: Scope;
    /**
     * The name used to identify the account.
     * @type {string}
     * @memberof Account
     */
    readonly name?: string;
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof Account
     */
    readonly id?: number;
    /**
     *
     * @type {AccountState}
     * @memberof Account
     */
    state?: AccountState;
    /**
     * The number of sub-accounts that can be created within this account.
     * @type {number}
     * @memberof Account
     */
    readonly subaccountLimit?: number;
}
/**
 * Check if a given object implements the Account interface.
 */
export declare function instanceOfAccount(value: object): value is Account;
export declare function AccountFromJSON(json: any): Account;
export declare function AccountFromJSONTyped(json: any, ignoreDiscriminator: boolean): Account;
export declare function AccountToJSON(json: any): Account;
export declare function AccountToJSONTyped(value?: Omit<Account, 'activeOrRestrictedActive' | 'deletedOn' | 'plannedPurgeDate' | 'active' | 'createdOn' | 'version' | 'deletedBy' | 'restrictedActive' | 'createdBy' | 'name' | 'id' | 'subaccountLimit'> | null, ignoreDiscriminator?: boolean): any;
