import type { IDeletion } from './Deletion.js';
import { OrganizationKind } from '../kinds.js';
export type UserOrganizationGrantType = 'owner' | 'manager' | 'editor' | 'viewer';
/**
 * In the system the user identity represents registration information associated with a specific identity provider.
 * This association allows the user to use different identity providers that map to the same user, as long as the
 * email stays consistent.
 */
export interface IOrganization {
    kind: typeof OrganizationKind;
    /**
     * The database ID
     */
    key: string;
    /**
     * The organization name
     */
    name: string;
    /**
     * The key of the user that created the organization.
     */
    createdBy: string;
    /**
     * The timestamp when the organization was created.
     */
    createdDate: number;
    /**
     * Whether the organization object is deleted.
     */
    deleted?: boolean;
    /**
     * The information about the delete information.
     * Always set when the `delete` is true.
     */
    deletedInfo?: IDeletion;
    /**
     * The grant type to the organization the **current user** has.
     * By nature, it's a dynamic field populated by the data store.
     */
    grantType: UserOrganizationGrantType;
}
export declare class Organization implements IOrganization {
    kind: typeof OrganizationKind;
    key: string;
    name: string;
    createdBy: string;
    createdDate: number;
    deleted: boolean;
    deletedInfo?: IDeletion;
    grantType: UserOrganizationGrantType;
    constructor(input?: string | IOrganization);
    new(init: IOrganization): void;
    /**
     * Checks whether the input is a definition of an user organization.
     */
    static isOrganization(input: unknown): boolean;
    toJSON(): IOrganization;
}
//# sourceMappingURL=Organization.d.ts.map