//#region src/types.d.ts
/**
 * {@link parseUSCC} 的返回结果
 */
interface ParseResult {
  /**
   * 统一社会信用代码的登记管理部门类别
   */
  category: string;
  /**
   * 统一社会信用代码是否有效
   */
  isValid: boolean;
  /**
   * 统一社会信用代码对应的机构类型
   */
  type: string;
}
/**
 * {@link parseUSCC} 的选项
 */
interface ParseOptions {
  /**
   * 未知类别时的占位文本
   */
  unknownCategory?: string;
  /**
   * 未知类型时的占位文本
   */
  unknownType?: string;
  /**
   * 在解析/校验前标准化输入
   * - 去除首尾空白
   * - 转为大写
   *
   * @default false
   */
  normalize?: boolean;
}
/**
 * 校验相关函数的选项
 */
interface ValidateOptions {
  /**
   * 在解析/校验前标准化输入
   * - 去除首尾空白
   * - 转为大写
   *
   * @default false
   */
  normalize?: boolean;
}
/**
 * 校验失败原因
 */
type USCCValidationErrorCode = 'INVALID_LENGTH' | 'INVALID_PATTERN' | 'INVALID_CHECKSUM';
/**
 * 详细校验结果
 */
interface ValidateUSCCResult {
  /**
   * 标准化后的输入代码
   */
  normalizedCode: string;
  /**
   * 统一社会信用代码是否有效
   */
  isValid: boolean;
  /**
   * 无效时的失败原因
   */
  errorCode?: USCCValidationErrorCode;
}
/**
 * 有效统一社会信用代码的结构化字段
 */
interface USCCParts {
  /**
   * 登记管理部门代码（第1位）
   */
  registrationAuthorityCode: string;
  /**
   * 机构类别代码（第2位）
   */
  entityTypeCode: string;
  /**
   * 行政区划代码（第3-8位）
   */
  regionCode: string;
  /**
   * 主体标识码（第9-17位）
   */
  organizationCode: string;
  /**
   * 校验码（第18位）
   */
  checkChar: string;
}
//#endregion
//#region src/parse.d.ts
/**
 * 解析统一社会信用代码
 * @param code - 待解析的统一社会信用代码
 * @param options - 解析选项
 * @returns 解析结果 `ParseResult`
 *
 * @example
 * ```
 * import { parseUSCC } from 'uscc-utils'
 * parseUSCC('91110108551385082Q') // { isValid: true, category: '工商', type: '企业' }
 * ```
 */
declare function parseUSCC(code: string, options?: ParseOptions): ParseResult;
//#endregion
//#region src/validate.d.ts
/**
 * 标准化统一社会信用代码输入
 * @param code - 原始统一社会信用代码
 * @returns 标准化后的统一社会信用代码
 */
declare function normalizeUSCC(code: string): string;
/**
 * 获取统一社会信用代码的详细校验结果
 * @param code - 统一社会信用代码
 * @param options - 校验选项
 * @returns 详细校验结果
 */
declare function explainUSCC(code: string, options?: ValidateOptions): ValidateUSCCResult;
/**
 * 校验统一社会信用代码
 * @param code - 统一社会信用代码
 * @param options - 校验选项
 * @returns 是否有效
 *
 * @example
 * ```
 * import { validateUSCC } from 'uscc-utils'
 * validateUSCC('91110108551385082Q')  // true
 * ```
 */
declare function validateUSCC(code: string, options?: ValidateOptions): boolean;
/**
 * 按标准结构拆分统一社会信用代码
 * @param code - 统一社会信用代码
 * @param options - 校验选项
 * @returns 若代码有效则返回结构化字段，否则返回 `null`
 */
declare function splitUSCC(code: string, options?: ValidateOptions): USCCParts | null;
//#endregion
//#region src/constants.d.ts
/**
 * 正则 统一社会信用代码
 * @see {@link https://www.wikidata.org/wiki/Property:P6795}
 * @see {@link https://regexper.com/#%2F%5B1-9ANY%5D%5B1-59%5D%5Cd%7B6%7D%5B%5CdA-Z%5D%7B8%7D%5B%5CdX%5D%5B%5CdA-HJ-NP-RTUW-Y%5D%2F}
 */
declare const USCC_PATTERN: RegExp;
/**
 * 登记管理部门代码
 */
declare const USCC_CATEGORY_MAP: Record<string, {
  category: string;
  map: Record<string, string>;
}>;
//#endregion
export { ParseOptions, ParseResult, USCCParts, USCCValidationErrorCode, USCC_CATEGORY_MAP, USCC_PATTERN, ValidateOptions, ValidateUSCCResult, explainUSCC, normalizeUSCC, parseUSCC, splitUSCC, validateUSCC };