import { t as __name } from "./chunk--u3MIqq1.js";
import { Group, Output, PluginFactoryOptions, ResolveNameParams } from "@kubb/core";
import { Exclude, Include, Override, ResolvePathOptions, Schema } from "@kubb/plugin-oas";
import { Generator } from "@kubb/plugin-oas/generators";
import { Oas, SchemaObject, contentType } from "@kubb/oas";

//#region src/types.d.ts
type Options = {
  /**
   * Specify the export location for the files and define the behavior of the output
   * @default { path: 'handlers', barrelType: 'named' }
   */
  output?: Output<Oas>;
  /**
   * Define which contentType should be used.
   * By default, the first JSON valid mediaType is used
   */
  contentType?: contentType;
  /**
   * Group the Faker mocks based on the provided name.
   */
  group?: Group;
  /**
   * Array containing exclude parameters to exclude/skip tags/operations/methods/paths.
   */
  exclude?: Array<Exclude>;
  /**
   * Array containing include parameters to include tags/operations/methods/paths.
   */
  include?: Array<Include>;
  /**
   * Array containing override parameters to override `options` based on tags/operations/methods/paths.
   */
  override?: Array<Override<ResolvedOptions>>;
  /**
   * Choose to use date or datetime as JavaScript Date instead of string.
   * - 'string' represents dates as string values.
   * - 'date' represents dates as JavaScript Date objects.
   * @default 'string'
   */
  dateType?: 'string' | 'date';
  /**
   * Choose to use `number` or `bigint` for integer fields with `int64` format.
   * - 'number' uses the JavaScript `number` type (matches JSON.parse() runtime behavior).
   * - 'bigint' uses the JavaScript `bigint` type (accurate for values exceeding Number.MAX_SAFE_INTEGER).
   * @note in v5 of Kubb 'bigint' will become the default to better align with OpenAPI's int64 specification.
   * @default 'number'
   */
  integerType?: 'number' | 'bigint';
  /**
   * Which parser should be used when dateType is set to string.
   * - 'faker' uses faker's built-in date formatting methods.
   * - 'dayjs' uses dayjs for date formatting with custom patterns.
   * - 'moment' uses moment for date formatting with custom patterns.
   * @default 'faker'
   */
  dateParser?: 'faker' | 'dayjs' | 'moment' | (string & {});
  /**
   * Which type to use when the Swagger/OpenAPI file is not providing more information.
   * - 'any' allows any value.
   * - 'unknown' requires type narrowing before use.
   * - 'void' represents no value.
   * @default 'any'
   */
  unknownType?: 'any' | 'unknown' | 'void';
  /**
   * Which type to use for empty schema values.
   * - 'any' allows any value.
   * - 'unknown' requires type narrowing before use.
   * - 'void' represents no value.
   * @default `unknownType`
   */
  emptySchemaType?: 'any' | 'unknown' | 'void';
  /**
   * Choose which generator to use when using Regexp.
   * - 'faker' uses faker.helpers.fromRegExp for generating values from regex patterns.
   * - 'randexp' uses RandExp library for generating values from regex patterns.
   * @default 'faker'
   */
  regexGenerator?: 'faker' | 'randexp';
  mapper?: Record<string, string>;
  /**
   * The use of Seed is intended to allow for consistent values in a test.
   */
  seed?: number | number[];
  /**
   * Transform parameter names to a specific casing format.
   * When set to 'camelcase', parameter names in path, query, and header params will be transformed to camelCase.
   * This should match the paramsCasing setting used in @kubb/plugin-ts.
   * @default undefined
   * @deprecated Removed in v5, where parameters always use camelCase names. Set `paramsCasing: 'camelcase'` now to match the v5 behavior. See https://kubb.dev/docs/5.x/migration-guide
   */
  paramsCasing?: 'camelcase';
  transformers?: {
    /**
     * Customize the names based on the type that is provided by the plugin.
     */
    name?: (name: ResolveNameParams['name'], type?: ResolveNameParams['type']) => string;
    /**
     * Receive schema and baseName(propertyName) and return FakerMeta array
     * TODO TODO add docs
     * @beta
     */
    schema?: (props: {
      schema: SchemaObject | null;
      name: string | null;
      parentName: string | null;
    }, defaultSchemas: Schema[]) => Schema[] | undefined;
  };
  /**
   * Define some generators next to the faker generators
   * @deprecated Removed in v5. To add custom output, build your own plugin. See https://kubb.dev/docs/5.x/migration-guide
   */
  generators?: Array<Generator<PluginFaker>>;
};
type ResolvedOptions = {
  output: Output<Oas>;
  group: Options['group'];
  override: NonNullable<Options['override']>;
  dateType: NonNullable<Options['dateType']>;
  integerType: NonNullable<Options['integerType']>;
  dateParser: NonNullable<Options['dateParser']>;
  unknownType: NonNullable<Options['unknownType']>;
  emptySchemaType: NonNullable<Options['emptySchemaType']>;
  transformers: NonNullable<Options['transformers']>;
  seed: NonNullable<Options['seed']> | undefined;
  mapper: NonNullable<Options['mapper']>;
  regexGenerator: NonNullable<Options['regexGenerator']>;
  paramsCasing: Options['paramsCasing'];
};
type PluginFaker = PluginFactoryOptions<'plugin-faker', Options, ResolvedOptions, never, ResolvePathOptions>;
//#endregion
export { PluginFaker as n, Options as t };
//# sourceMappingURL=types-xXM0LhM0.d.ts.map