import { AxiosInstance, AxiosRequestConfig } from "axios";
import { FeedbackFilter, ItemNeighborsOptions, PopularOptions, RecommendOptions, SessionRecommendOptions, UserNeighborsOptions } from ".";
import { ClientOptions, CursorOptions, Feedback, Item, User } from "./interfaces";
export { Item, User, Feedback } from "./interfaces";
declare class Gorse<T extends string> {
    protected axiosClient: AxiosInstance;
    constructor({ endpoint, secret, debug, }: ClientOptions, axiosOptons?: AxiosRequestConfig);
    getPopular(options: PopularOptions): Promise<import("./interfaces").PopularOutput[]>;
    getLatest(options: PopularOptions): Promise<import("./interfaces").LatestOutput[]>;
    getRecommend(options: RecommendOptions): Promise<string[]>;
    getSessionRecommend(feedbackList: Feedback<T>[], options?: SessionRecommendOptions): Promise<any>;
    getFeedback(filter: FeedbackFilter<T>, options?: CursorOptions): Promise<Feedback<T>>;
    deleteFeedback(filter: FeedbackFilter<T>): Promise<Feedback<T>>;
    getFeedbacks(type?: T, options?: CursorOptions): Promise<import("./interfaces").FeedbackCursor<T>>;
    insertFeedbacks(feedbacksList: Feedback<T>[]): Promise<number>;
    upsertFeedbacks(feedbacksList: Feedback<T>[]): Promise<number>;
    getItemFeedback(itemId: string): Promise<Feedback<string>[]>;
    getItemFeedbackByType(itemId: string, feedbackType: string): Promise<Feedback<string>[]>;
    getUserFeedback(userId: string): Promise<Feedback<string>[]>;
    getUserFeedbackByType(userId: string, feedbackType: string): Promise<Feedback<string>[]>;
    upsertItem(data: Item): Promise<number>;
    getItem(id: string): Promise<Item>;
    deleteItem(id: string): Promise<number>;
    updateItem(id: string, data: Item): Promise<number>;
    insertItemCategory(id: string, category: string): Promise<number>;
    deleteItemCategory(id: string, category: string): Promise<number>;
    getItems(options?: CursorOptions): Promise<import("./interfaces").ItemCursor>;
    upsertItems(users: Item[]): Promise<number>;
    getItemNeighbors(options: ItemNeighborsOptions): Promise<string[]>;
    insertUser(userData: User): Promise<number>;
    getUser(userId: string): Promise<User>;
    deleteUser(userId: string): Promise<number>;
    updateUser(userId: string, userData: User): Promise<number>;
    getUsers(options?: CursorOptions): Promise<import("./interfaces").UserCursor>;
    insertUsers(users: User[]): Promise<number>;
    getUserNeighbors(options: UserNeighborsOptions): Promise<string[]>;
}
export { Gorse };
//# sourceMappingURL=client.d.ts.map