//#region src/dsn-parser.type.d.ts
type ParsedDsn = {
  db?: string;
  driver: string;
  host: string; /** Query params */
  params?: Record<string, boolean | number | string>;
  pass?: string;
  port?: number;
  user?: string;
};
type ParseDsnOptions = {
  /** Whether to lowercase parsed driver name, default: false */lowercaseDriver?: boolean; /** Overrides parsed values by those one (except query params) */
  overrides?: Omit<Partial<ParsedDsn>, 'params'>;
};
declare const errorReasons: {
  readonly EMPTY_DSN: "DSN cannot be empty";
  readonly INVALID_ARGUMENT: "DSN must be a string";
  readonly INVALID_PORT: "Invalid port";
  readonly PARSE_ERROR: "Cannot parse DSN";
};
type ErrorReasons = keyof typeof errorReasons;
type ParserSuccessResult = {
  success: true;
  value: ParsedDsn;
};
type ParserErrorResult = {
  message: string;
  reason: ErrorReasons;
  success: false;
};
type ParserResult = ParserErrorResult | ParserSuccessResult;
declare const tag: unique symbol;
type WeakOpaqueContainer<Token> = {
  readonly [tag]: Token;
};
type ParsableDsn = string & WeakOpaqueContainer<'ParsableDsn'>;
//#endregion
//#region src/assert-parsable-dsn.d.ts
/**
 * @throws Error when not parsable
 */
declare const assertParsableDsn: (dsn: unknown, msg?: string) => asserts dsn is ParsableDsn;
//#endregion
//#region src/convert-jdbc-to-dsn.d.ts
/**
 * Convert JDBC URL to DSN format.
 *
 * @example
 * ```typescript
 * const jdbc = 'sqlserver://localhost:1433;database=my-db;authentication=default;user=sa;password=pass03$;encrypt=true;trustServerCertificate=true';
 * const dsn = convertJdbcToDsn(jdbc);
 * // dsn is 'sqlserver://localhost:1433?database=my-db&authentication=default&user=sa&password=pass03$&encrypt=true&trustServerCertificate=true
 * ```
 * @throws TypeError .
 */
declare const convertJdbcToDsn: (jdbc: string) => string;
//#endregion
//#region src/is-parsable-dsn.d.ts
declare const isParsableDsn: (dsn: unknown) => dsn is ParsableDsn;
//#endregion
//#region src/parse-dsn.d.ts
declare const parseDsn: (dsn: unknown, options?: ParseDsnOptions) => ParserResult;
//#endregion
//#region src/parse-dsn-or-throw.d.ts
declare const parseDsnOrThrow: (dsn: unknown, options?: ParseDsnOptions & {
  errorMsgPrefix?: string;
}) => ParsedDsn;
//#endregion
export { type ParsableDsn, type ParseDsnOptions, type ParsedDsn, assertParsableDsn, convertJdbcToDsn, isParsableDsn, parseDsn, parseDsnOrThrow };
//# sourceMappingURL=index.d.ts.map