import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
/**
 * Filter identities by tags. Can be provided as JSON object {"tags": ["premium", "beta-user"]} or as query format "tags=premium,beta-user"
 */
export type QueryParamFilterBy = {
    tags?: Array<string> | undefined;
};
export type ListIdentitiesRequest = {
    /**
     * A limit on the number of objects to be returned. Limit can range between 1 and 50, and the default is 10
     */
    limit?: number | undefined;
    /**
     * A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with `01JJ1HDHN79XAS7A01WB3HYSDB`, your subsequent call can include `after=01JJ1HDHN79XAS7A01WB3HYSDB` in order to fetch the next page of the list.
     */
    startingAfter?: string | undefined;
    /**
     * A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with `01JJ1HDHN79XAS7A01WB3HYSDB`, your subsequent call can include `before=01JJ1HDHN79XAS7A01WB3HYSDB` in order to fetch the previous page of the list.
     */
    endingBefore?: string | undefined;
    /**
     * Search identities by display name or email address. Minimum 2 characters required.
     */
    search?: string | undefined;
    /**
     * Filter identities by tags. Can be provided as JSON object {"tags": ["premium", "beta-user"]} or as query format "tags=premium,beta-user"
     */
    filterBy?: QueryParamFilterBy | undefined;
    /**
     * Include usage metrics of the last 30 days for each identity.
     */
    includeMetrics?: boolean | null | undefined;
};
export declare const ListIdentitiesObject: {
    readonly List: "list";
};
export type ListIdentitiesObject = ClosedEnum<typeof ListIdentitiesObject>;
export type ListIdentitiesMetrics = {
    /**
     * Total cost in dollars of the last 30 days
     */
    totalCost: number;
    /**
     * Total tokens of the last 30 days
     */
    totalTokens: number;
    /**
     * Total requests of the last 30 days
     */
    totalRequests: number;
    /**
     * P50 error rate of the last 30 days
     */
    errorRate: number;
};
export type ListIdentitiesData = {
    /**
     * Unique ULID (Universally Unique Lexicographically Sortable Identifier) for the contact
     */
    id: string;
    /**
     * Unique string value to identify the contact user in the customer's system. This should be the same ID you use in your system to reference this user.
     */
    externalId: string;
    /**
     * Display name or nickname of the contact user. This is typically shown in user interfaces.
     */
    displayName?: string | null | undefined;
    /**
     * Email address of the contact user
     */
    email?: string | null | undefined;
    /**
     * URL linking to the contact user's avatar image
     */
    avatarUrl?: string | null | undefined;
    /**
     * Array of tags associated with the contact. Useful for organizing and filtering contacts by categories, departments, or custom classifications.
     */
    tags?: Array<string> | undefined;
    /**
     * Additional custom metadata associated with the contact as key-value pairs. Use this to store any extra information specific to your application.
     */
    metadata?: {
        [k: string]: any;
    } | undefined;
    /**
     * The date and time the resource was created
     */
    created?: Date | undefined;
    /**
     * The date and time the resource was last updated
     */
    updated: Date;
    metrics: ListIdentitiesMetrics;
};
/**
 * List of identities
 */
export type ListIdentitiesResponseBody = {
    object: ListIdentitiesObject;
    data: Array<ListIdentitiesData>;
    hasMore: boolean;
};
/** @internal */
export type QueryParamFilterBy$Outbound = {
    tags?: Array<string> | undefined;
};
/** @internal */
export declare const QueryParamFilterBy$outboundSchema: z.ZodType<QueryParamFilterBy$Outbound, z.ZodTypeDef, QueryParamFilterBy>;
export declare function queryParamFilterByToJSON(queryParamFilterBy: QueryParamFilterBy): string;
/** @internal */
export type ListIdentitiesRequest$Outbound = {
    limit: number;
    starting_after?: string | undefined;
    ending_before?: string | undefined;
    search?: string | undefined;
    filter_by?: QueryParamFilterBy$Outbound | undefined;
    include_metrics: boolean | null;
};
/** @internal */
export declare const ListIdentitiesRequest$outboundSchema: z.ZodType<ListIdentitiesRequest$Outbound, z.ZodTypeDef, ListIdentitiesRequest>;
export declare function listIdentitiesRequestToJSON(listIdentitiesRequest: ListIdentitiesRequest): string;
/** @internal */
export declare const ListIdentitiesObject$inboundSchema: z.ZodNativeEnum<typeof ListIdentitiesObject>;
/** @internal */
export declare const ListIdentitiesMetrics$inboundSchema: z.ZodType<ListIdentitiesMetrics, z.ZodTypeDef, unknown>;
export declare function listIdentitiesMetricsFromJSON(jsonString: string): SafeParseResult<ListIdentitiesMetrics, SDKValidationError>;
/** @internal */
export declare const ListIdentitiesData$inboundSchema: z.ZodType<ListIdentitiesData, z.ZodTypeDef, unknown>;
export declare function listIdentitiesDataFromJSON(jsonString: string): SafeParseResult<ListIdentitiesData, SDKValidationError>;
/** @internal */
export declare const ListIdentitiesResponseBody$inboundSchema: z.ZodType<ListIdentitiesResponseBody, z.ZodTypeDef, unknown>;
export declare function listIdentitiesResponseBodyFromJSON(jsonString: string): SafeParseResult<ListIdentitiesResponseBody, SDKValidationError>;
//# sourceMappingURL=listidentities.d.ts.map