import { ITenant, IUser } from '../../common.models';
import { IApiPayload, IApiSuccess, IDataTableQuery } from '../../api.models';
import { IRequestRegisterWebAuthn, ISshKey, IU2FKey } from '../User';

export declare enum INVITE_STATUS {
    /**
     * invite just created
     */
    PENDING = 0,
    /**
     * invite declined
     */
    DECLINED = 1,
    /**
     * invite accepted
     */
    ACCEPTED = 2,
    /**
     * invite cancled
     */
    CANCELED = 3
}
export interface IInviteUserToTenant {
    created: string;
    createdBy: number;
    modified?: string;
    modifiedBy?: number;
    groups: string;
    status: INVITE_STATUS;
    tenant?: ITenant;
    user?: IUser;
    token?: string;
    uname: string;
    id: number;
}
export interface IMappingOptions {
    id: number;
    groupId: number;
    userId: number;
    validTo: string;
    validFrom: string;
}
export interface IUserToGroupsMapping extends IApiSuccess {
    u2gId: number;
}
export interface IDeleteMappingOptions {
    id: number;
    groupId: number;
    userId: number;
}
export interface IDataTableQueryWithTenantId extends IDataTableQuery {
    tenantId?: number;
    onlyDevUsers?: boolean;
}
export interface IDataTableQueryWithUid extends IDataTableQuery {
    uid: number;
}
export interface IDataTableQueryWithId extends IDataTableQuery {
    id: number;
}
export interface IUsersSshKey extends ISshKey {
    user: IUser;
}
export interface IUsersU2FKeys extends IU2FKey {
    user: IUser;
    webAuthnData: object;
}
export interface IUserRequestRegisterWebAuth extends IApiPayload<IRequestRegisterWebAuthn> {
    url: string;
    token: string;
}
export type IGroupOption = number | string;
