import * as HttpClient from "effect/unstable/http/HttpClient";
import * as redacted from "effect/Redacted";
import * as S from "effect/Schema";
import * as API from "../client/api.ts";
import type { Credentials } from "../credentials.ts";
import type { CommonErrors } from "../errors.ts";
import type { Region } from "../region.ts";
export type StringType = string;
export type ActionId = string | redacted.Redacted<string>;
export type UserId = string | redacted.Redacted<string>;
export type RecommendationId = string;
export type SynthesizedJsonActionInteractionProperties = string | redacted.Redacted<string>;
export type ErrorMessage = string;
export type Arn = string;
export type SynthesizedJsonActionProperties = string | redacted.Redacted<string>;
export type FloatType = number;
export type ItemId = string | redacted.Redacted<string>;
export type SynthesizedJsonEventPropertiesJSON = string | redacted.Redacted<string>;
export type EventAttributionSource = string;
export type SynthesizedJsonItemProperties = string | redacted.Redacted<string>;
export type SynthesizedJsonUserProperties = string | redacted.Redacted<string>;
export type ActionImpression = string | redacted.Redacted<string>[];
export declare const ActionImpression: S.$Array<S.Schema<string | redacted.Redacted<string>>>;
export interface ActionInteraction {
    actionId: string | redacted.Redacted<string>;
    userId?: string | redacted.Redacted<string>;
    sessionId: string;
    timestamp: Date;
    eventType: string;
    eventId?: string;
    recommendationId?: string;
    impression?: string | redacted.Redacted<string>[];
    properties?: string | redacted.Redacted<string>;
}
export declare const ActionInteraction: S.Schema<ActionInteraction>;
export type ActionInteractionsList = ActionInteraction[];
export declare const ActionInteractionsList: S.$Array<S.Schema<ActionInteraction>>;
export interface PutActionInteractionsRequest {
    trackingId: string;
    actionInteractions: ActionInteraction[];
}
export declare const PutActionInteractionsRequest: S.Schema<PutActionInteractionsRequest>;
export interface PutActionInteractionsResponse {
}
export declare const PutActionInteractionsResponse: S.Schema<PutActionInteractionsResponse>;
export interface Action {
    actionId: string;
    properties?: string | redacted.Redacted<string>;
}
export declare const Action: S.Schema<Action>;
export type ActionList = Action[];
export declare const ActionList: S.$Array<S.Schema<Action>>;
export interface PutActionsRequest {
    datasetArn: string;
    actions: Action[];
}
export declare const PutActionsRequest: S.Schema<PutActionsRequest>;
export interface PutActionsResponse {
}
export declare const PutActionsResponse: S.Schema<PutActionsResponse>;
export type Impression = string | redacted.Redacted<string>[];
export declare const Impression: S.$Array<S.Schema<string | redacted.Redacted<string>>>;
export interface MetricAttribution {
    eventAttributionSource: string;
}
export declare const MetricAttribution: S.Schema<MetricAttribution>;
export interface Event {
    eventId?: string;
    eventType: string;
    eventValue?: number;
    itemId?: string | redacted.Redacted<string>;
    properties?: string | redacted.Redacted<string>;
    sentAt: Date;
    recommendationId?: string;
    impression?: string | redacted.Redacted<string>[];
    metricAttribution?: MetricAttribution;
}
export declare const Event: S.Schema<Event>;
export type EventList = Event[];
export declare const EventList: S.$Array<S.Schema<Event>>;
export interface PutEventsRequest {
    trackingId: string;
    userId?: string | redacted.Redacted<string>;
    sessionId: string;
    eventList: Event[];
}
export declare const PutEventsRequest: S.Schema<PutEventsRequest>;
export interface PutEventsResponse {
}
export declare const PutEventsResponse: S.Schema<PutEventsResponse>;
export interface Item {
    itemId: string;
    properties?: string | redacted.Redacted<string>;
}
export declare const Item: S.Schema<Item>;
export type ItemList = Item[];
export declare const ItemList: S.$Array<S.Schema<Item>>;
export interface PutItemsRequest {
    datasetArn: string;
    items: Item[];
}
export declare const PutItemsRequest: S.Schema<PutItemsRequest>;
export interface PutItemsResponse {
}
export declare const PutItemsResponse: S.Schema<PutItemsResponse>;
export interface User {
    userId: string;
    properties?: string | redacted.Redacted<string>;
}
export declare const User: S.Schema<User>;
export type UserList = User[];
export declare const UserList: S.$Array<S.Schema<User>>;
export interface PutUsersRequest {
    datasetArn: string;
    users: User[];
}
export declare const PutUsersRequest: S.Schema<PutUsersRequest>;
export interface PutUsersResponse {
}
export declare const PutUsersResponse: S.Schema<PutUsersResponse>;
declare const InvalidInputException_base: S.Class<InvalidInputException, S.TaggedStruct<"InvalidInputException", {
    readonly message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        BadRequestError: true;
    };
});
export declare class InvalidInputException extends InvalidInputException_base {
}
declare const ResourceInUseException_base: S.Class<ResourceInUseException, S.TaggedStruct<"ResourceInUseException", {
    readonly message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        ConflictError: true;
    };
});
export declare class ResourceInUseException extends ResourceInUseException_base {
}
declare const ResourceNotFoundException_base: S.Class<ResourceNotFoundException, S.TaggedStruct<"ResourceNotFoundException", {
    readonly message: S.optional<S.String>;
}>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
    "@distilled.cloud/error/categories": {
        BadRequestError: true;
    };
});
export declare class ResourceNotFoundException extends ResourceNotFoundException_base {
}
export type PutActionInteractionsError = InvalidInputException | ResourceInUseException | ResourceNotFoundException | CommonErrors;
/**
 * Records action interaction event data. An *action interaction* event is an interaction between a user and an *action*.
 * For example, a user taking an action, such a enrolling in a membership program or downloading your app.
 *
 * For more information about recording action interactions, see Recording action interaction events.
 * For more information about actions in an Actions dataset, see Actions dataset.
 */
export declare const putActionInteractions: API.OperationMethod<PutActionInteractionsRequest, PutActionInteractionsResponse, PutActionInteractionsError, Credentials | Region | HttpClient.HttpClient>;
export type PutActionsError = InvalidInputException | ResourceInUseException | ResourceNotFoundException | CommonErrors;
/**
 * Adds one or more actions to an Actions dataset. For more information see
 * Importing actions individually.
 */
export declare const putActions: API.OperationMethod<PutActionsRequest, PutActionsResponse, PutActionsError, Credentials | Region | HttpClient.HttpClient>;
export type PutEventsError = InvalidInputException | CommonErrors;
/**
 * Records item interaction event data. For more information see
 * Recording item interaction events.
 */
export declare const putEvents: API.OperationMethod<PutEventsRequest, PutEventsResponse, PutEventsError, Credentials | Region | HttpClient.HttpClient>;
export type PutItemsError = InvalidInputException | ResourceInUseException | ResourceNotFoundException | CommonErrors;
/**
 * Adds one or more items to an Items dataset. For more information see
 * Importing items individually.
 */
export declare const putItems: API.OperationMethod<PutItemsRequest, PutItemsResponse, PutItemsError, Credentials | Region | HttpClient.HttpClient>;
export type PutUsersError = InvalidInputException | ResourceInUseException | ResourceNotFoundException | CommonErrors;
/**
 * Adds one or more users to a Users dataset. For more information see
 * Importing users individually.
 */
export declare const putUsers: API.OperationMethod<PutUsersRequest, PutUsersResponse, PutUsersError, Credentials | Region | HttpClient.HttpClient>;
export {};
//# sourceMappingURL=personalize-events.d.ts.map