/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";

export type GetV2ObjectsObjectRecordsRecordIdEntriesRequest = {
  object: string;
  recordId: string;
  limit?: number | undefined;
  offset?: number | undefined;
};

export type GetV2ObjectsObjectRecordsRecordIdEntriesData = {
  /**
   * A UUID identifying the list that this record is in.
   */
  listId: string;
  /**
   * A human-readable slug for the list for use in URLs and responses.
   */
  listApiSlug: string;
  /**
   * A UUID identifying this entry on the list.
   */
  entryId: string;
  /**
   * When this entry was created.
   */
  createdAt: string;
};

/**
 * Success
 */
export type GetV2ObjectsObjectRecordsRecordIdEntriesResponse = {
  data: Array<GetV2ObjectsObjectRecordsRecordIdEntriesData>;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdEntriesRequest$inboundSchema:
  z.ZodType<
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest,
    z.ZodTypeDef,
    unknown
  > = z.object({
    object: z.string(),
    record_id: z.string(),
    limit: z.number().int().optional(),
    offset: z.number().int().optional(),
  }).transform((v) => {
    return remap$(v, {
      "record_id": "recordId",
    });
  });

/** @internal */
export type GetV2ObjectsObjectRecordsRecordIdEntriesRequest$Outbound = {
  object: string;
  record_id: string;
  limit?: number | undefined;
  offset?: number | undefined;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdEntriesRequest$outboundSchema:
  z.ZodType<
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest$Outbound,
    z.ZodTypeDef,
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest
  > = z.object({
    object: z.string(),
    recordId: z.string(),
    limit: z.number().int().optional(),
    offset: z.number().int().optional(),
  }).transform((v) => {
    return remap$(v, {
      recordId: "record_id",
    });
  });

/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export namespace GetV2ObjectsObjectRecordsRecordIdEntriesRequest$ {
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesRequest$inboundSchema` instead. */
  export const inboundSchema =
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest$inboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesRequest$outboundSchema` instead. */
  export const outboundSchema =
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest$outboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesRequest$Outbound` instead. */
  export type Outbound =
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest$Outbound;
}

export function getV2ObjectsObjectRecordsRecordIdEntriesRequestToJSON(
  getV2ObjectsObjectRecordsRecordIdEntriesRequest:
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest,
): string {
  return JSON.stringify(
    GetV2ObjectsObjectRecordsRecordIdEntriesRequest$outboundSchema.parse(
      getV2ObjectsObjectRecordsRecordIdEntriesRequest,
    ),
  );
}

export function getV2ObjectsObjectRecordsRecordIdEntriesRequestFromJSON(
  jsonString: string,
): SafeParseResult<
  GetV2ObjectsObjectRecordsRecordIdEntriesRequest,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetV2ObjectsObjectRecordsRecordIdEntriesRequest$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetV2ObjectsObjectRecordsRecordIdEntriesRequest' from JSON`,
  );
}

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdEntriesData$inboundSchema:
  z.ZodType<
    GetV2ObjectsObjectRecordsRecordIdEntriesData,
    z.ZodTypeDef,
    unknown
  > = z.object({
    list_id: z.string(),
    list_api_slug: z.string(),
    entry_id: z.string(),
    created_at: z.string(),
  }).transform((v) => {
    return remap$(v, {
      "list_id": "listId",
      "list_api_slug": "listApiSlug",
      "entry_id": "entryId",
      "created_at": "createdAt",
    });
  });

/** @internal */
export type GetV2ObjectsObjectRecordsRecordIdEntriesData$Outbound = {
  list_id: string;
  list_api_slug: string;
  entry_id: string;
  created_at: string;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdEntriesData$outboundSchema:
  z.ZodType<
    GetV2ObjectsObjectRecordsRecordIdEntriesData$Outbound,
    z.ZodTypeDef,
    GetV2ObjectsObjectRecordsRecordIdEntriesData
  > = z.object({
    listId: z.string(),
    listApiSlug: z.string(),
    entryId: z.string(),
    createdAt: z.string(),
  }).transform((v) => {
    return remap$(v, {
      listId: "list_id",
      listApiSlug: "list_api_slug",
      entryId: "entry_id",
      createdAt: "created_at",
    });
  });

/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export namespace GetV2ObjectsObjectRecordsRecordIdEntriesData$ {
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesData$inboundSchema` instead. */
  export const inboundSchema =
    GetV2ObjectsObjectRecordsRecordIdEntriesData$inboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesData$outboundSchema` instead. */
  export const outboundSchema =
    GetV2ObjectsObjectRecordsRecordIdEntriesData$outboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesData$Outbound` instead. */
  export type Outbound = GetV2ObjectsObjectRecordsRecordIdEntriesData$Outbound;
}

export function getV2ObjectsObjectRecordsRecordIdEntriesDataToJSON(
  getV2ObjectsObjectRecordsRecordIdEntriesData:
    GetV2ObjectsObjectRecordsRecordIdEntriesData,
): string {
  return JSON.stringify(
    GetV2ObjectsObjectRecordsRecordIdEntriesData$outboundSchema.parse(
      getV2ObjectsObjectRecordsRecordIdEntriesData,
    ),
  );
}

export function getV2ObjectsObjectRecordsRecordIdEntriesDataFromJSON(
  jsonString: string,
): SafeParseResult<
  GetV2ObjectsObjectRecordsRecordIdEntriesData,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetV2ObjectsObjectRecordsRecordIdEntriesData$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetV2ObjectsObjectRecordsRecordIdEntriesData' from JSON`,
  );
}

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdEntriesResponse$inboundSchema:
  z.ZodType<
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse,
    z.ZodTypeDef,
    unknown
  > = z.object({
    data: z.array(
      z.lazy(() => GetV2ObjectsObjectRecordsRecordIdEntriesData$inboundSchema),
    ),
  });

/** @internal */
export type GetV2ObjectsObjectRecordsRecordIdEntriesResponse$Outbound = {
  data: Array<GetV2ObjectsObjectRecordsRecordIdEntriesData$Outbound>;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdEntriesResponse$outboundSchema:
  z.ZodType<
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse$Outbound,
    z.ZodTypeDef,
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse
  > = z.object({
    data: z.array(
      z.lazy(() => GetV2ObjectsObjectRecordsRecordIdEntriesData$outboundSchema),
    ),
  });

/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export namespace GetV2ObjectsObjectRecordsRecordIdEntriesResponse$ {
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesResponse$inboundSchema` instead. */
  export const inboundSchema =
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse$inboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesResponse$outboundSchema` instead. */
  export const outboundSchema =
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse$outboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdEntriesResponse$Outbound` instead. */
  export type Outbound =
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse$Outbound;
}

export function getV2ObjectsObjectRecordsRecordIdEntriesResponseToJSON(
  getV2ObjectsObjectRecordsRecordIdEntriesResponse:
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse,
): string {
  return JSON.stringify(
    GetV2ObjectsObjectRecordsRecordIdEntriesResponse$outboundSchema.parse(
      getV2ObjectsObjectRecordsRecordIdEntriesResponse,
    ),
  );
}

export function getV2ObjectsObjectRecordsRecordIdEntriesResponseFromJSON(
  jsonString: string,
): SafeParseResult<
  GetV2ObjectsObjectRecordsRecordIdEntriesResponse,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetV2ObjectsObjectRecordsRecordIdEntriesResponse$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetV2ObjectsObjectRecordsRecordIdEntriesResponse' from JSON`,
  );
}
