interface GetManyResult<T> {
    items: T[];
    count: number;
}

type QueryPaginationDirection = 'asc' | 'desc';
interface SortFilterType {
    orderBy?: string;
    direction?: QueryPaginationDirection;
}
interface QueryPagination extends SortFilterType {
    page?: number;
    limit?: number;
}

interface AuthConfig {
    storageTokenKey: string;
    storageRefreshTokenKey: string;
    homeRoute?: string;
    loginRoute?: string;
    userInfo: {
        url: string;
    };
    refreshToken: {
        url: string;
        data: {
            tokenKeyName: string;
            refreshTokenKeyName?: string;
        };
        response: {
            accessTokenKeyName: string;
            refreshTokenKeyName: string;
        };
    };
}

export type { AuthConfig, GetManyResult, QueryPagination, QueryPaginationDirection, SortFilterType };
