//#region src/configuration.d.ts
/**
 * A reference to something (example: value, configuration, type definition, schema, etc.) in a file
 */
interface FileReference {
  /**
   * A path to a file containing the reference
   */
  file: string;
  /**
   * The name of the exported entity in the file above
   *
   * @remarks
   * This value is mainly expected for use with javascript/typescript files. If no value is provided, we will attempt to infer the exported entity from the module's `default` export.
   */
  export?: string;
}
/**
 * Configuration parameter for the {@link FileReference} utility type
 *
 * @remarks
 * When provided as a string, this value can include both a path to the typescript file and the name of the type definition to use separated by a `":"`, `"#"`, or `";"` character. For example: `"./src/types/env.ts#EnvConfiguration"`.
 */
type FileReferenceInput = FileReference | string;
interface DotenvFileReference {
  /**
   * A path to the type definition for the expected env configuration parameters. This value can include both a path to the typescript file and the name of the type definition to use separated by a `":"`, `"#"`, `";"` character. For example: `"./src/types/env.ts#Variables"`.
   *
   * @remarks
   * If a value is not provided for this option, the plugin will attempt to infer the type definition from the `storm.dotenv.types.config` object in the project's `package.json` file.
   */
  variables?: FileReferenceInput;
  /**
   * A path to the type definition for the expected env secret parameters. This value can include both a path to the typescript file and the name of the type definition to use separated by a `":"`, `"#"`, `";"` character. For example: `"./src/types/env.ts#Secrets"`.
   *
   * @remarks
   * If a value is not provided for this option, the plugin will attempt to infer the type definition from the `storm.dotenv.types.secrets` object in the project's `package.json` file.
   */
  secrets?: FileReferenceInput;
}
interface DotenvConfiguration {
  /**
   * Additional environment variable (.env) files (aside from the default list of files) to load configuration from.
   *
   * @remarks
   * By default, the plugin will load environment variables from `.env` files based on the `mode`. For the `"production"` mode, it will use the following files:
   * - `.env`
   * - `.env.local`
   * - `.env.production`
   * - `.env.production.local`
   */
  additionalFiles?: string[];
  /**
   * The type definitions for the environment variables
   *
   * @remarks
   * This value can be a {@link DotenvFileReference} or just a path to a typescript file and the `"name"` values are defaulted to the following:
   * - {@link DotenvFileReference.variables} - `"Variables"`
   * - {@link DotenvFileReference.secrets} - `"Secrets"`
   */
  types?: DotenvFileReference | string;
}
interface StormConfigurationGroups {
  /**
   * The configuration for the loading variable and secrets into the environment via `.env` files
   */
  dotenv?: DotenvConfiguration;
}
//#endregion
export { DotenvConfiguration, DotenvFileReference, FileReference, FileReferenceInput, StormConfigurationGroups };
//# sourceMappingURL=configuration.d.mts.map