export interface IToken {
    token: string;
    expiresAt: number;
    assignedRoles: string[];
}
/**
 * an identity is assumed by authentication as a user
 * an identity is ephemeral and has to be renewed regularly
 */
export interface IIdentity {
    name: string;
    userId: string;
    type: 'machine' | 'human';
    role: 'admin' | 'user' | 'api' | 'cluster';
    expiresAt: number;
    /** the jwt token should contain above data for verification */
    jwt: string;
}
export interface IUser {
    id: string;
    data: {
        type: 'machine' | 'human';
        role: 'admin' | 'user' | 'api' | 'cluster';
        username?: string;
        password?: string;
        tokens?: IToken[];
    };
}
