import { RequestClient } from '@segment/actions-core';
import { Settings } from './generated-types';
type InternalAdditionalData = {
    internalAdditionalData?: Record<string, unknown>;
};
type AddInteractionParams = {
    userId: string;
    itemId: string;
    timestamp?: string | number;
    recommId?: string;
    additionalData?: Record<string, unknown>;
    cascadeCreate?: boolean;
};
type AddBookmarkParams = AddInteractionParams;
type AddCartAdditionParams = AddInteractionParams & {
    amount?: number;
    price?: number;
};
type AddDetailViewParams = AddInteractionParams & {
    duration?: number;
};
type AddPurchaseParams = AddInteractionParams & {
    amount?: number;
    price?: number;
    profit?: number;
};
type AddRatingParams = AddInteractionParams & {
    rating: number;
};
type DeleteParams = {
    userId: string;
    itemId: string;
    timestamp?: string;
};
type SetViewPortionParams = AddInteractionParams & {
    portion: number;
    sessionId?: string;
};
type BatchParams = {
    requests: Array<{
        method: HttpMethod;
        path: string;
        params: AddBookmarkParams | AddCartAdditionParams | AddDetailViewParams | AddPurchaseParams | AddRatingParams | SetViewPortionParams | DeleteParams | {};
    }>;
};
type HttpMethod = 'POST' | 'PUT' | 'DELETE';
declare abstract class Request<Params extends object> {
    params: Params;
    method: HttpMethod;
    path: string;
    constructor(params: Params, method: HttpMethod, path: string);
}
export declare class Batch extends Request<BatchParams> {
    constructor(requests: BatchParams['requests']);
}
export declare class AddBookmark extends Request<AddBookmarkParams> {
    constructor(params: AddBookmarkParams & InternalAdditionalData);
}
export declare class AddCartAddition extends Request<AddCartAdditionParams> {
    constructor(params: AddCartAdditionParams & InternalAdditionalData);
}
export declare class AddDetailView extends Request<AddDetailViewParams> {
    constructor(params: AddDetailViewParams & InternalAdditionalData);
}
export declare class AddPurchase extends Request<AddPurchaseParams> {
    constructor(params: AddPurchaseParams & InternalAdditionalData);
}
export declare class AddRating extends Request<AddRatingParams> {
    constructor(params: AddRatingParams & InternalAdditionalData);
}
export declare class SetViewPortion extends Request<SetViewPortionParams> {
    constructor(params: SetViewPortionParams & InternalAdditionalData);
}
export declare class DeleteBookmark extends Request<DeleteParams> {
    constructor(params: DeleteParams);
}
export declare class DeleteCartAddition extends Request<DeleteParams> {
    constructor(params: DeleteParams);
}
export declare class MergeUsers extends Request<{}> {
    constructor(targetUserId: string, sourceUserId: string);
}
export declare class DeleteUser extends Request<{}> {
    constructor(userId: string);
}
export declare class RecombeeApiClient {
    private settings;
    private request;
    constructor(settings: Settings, request: RequestClient);
    send<Params extends object, T extends Request<Params>>(request: T): Promise<any>;
    private getBaseUri;
    private signUrl;
}
export {};
