import { 音韻地位 as ____ } from 'tshet-uinh';

/**
 * 韻鏡中的一個格位。
 *
 * 包含 (轉號, 上位, 右位) 三要素。可使用該三要素初始化。
 *
 * - 轉號：轉的序號（1–43）。
 * - 上位：在一個轉中，從上向下數的位置（1–16）。
 * - 右位：在一個轉中，從右向左數的位置（1–23）。
 */
declare class 韻鏡位置 {
    /** 轉的序號（1–43）。 */
    轉號: number;
    /** 在一個轉中，從上向下數的位置（1–16）。 */
    上位: number;
    /** 在一個轉中，從右向左數的位置（1–23）。 */
    右位: number;
    /**
     * 建立一個韻鏡位置。
     *
     * @throws 若任何取值超出韻鏡範圍
     */
    constructor(轉號: number, 上位: number, 右位: number);
    /**
     * 轉的名稱（如「內轉第一圖」）。
    */
    get 轉名稱(): string;
    /**
     * 坐標的字串表示（如「(1,1,1)」）。
    */
    get 坐標(): string;
    /**
     * 韻鏡等（「一二三四」）。
    *
    * 僅由上位決定，與切韻等未必一致。
    */
    get 韻鏡等(): number;
    /**
     * 韻鏡韻。
     *
     * 與切韻的韻未必一致。
     *
     * 與《韻鏡》標註的韻亦未必一致，因為存在一些特殊情況，例如《韻鏡》原書存在刪、山韻排反的情況，此處均已進行修正。
     */
    get 韻(): "東" | "冬" | "鍾" | "江" | "支" | "脂" | "之" | "廢" | "微" | "魚" | "模" | "虞" | "夬" | "咍" | "皆" | "齊" | "祭" | "灰" | "佳" | "泰" | "痕" | "真" | "臻" | "魂" | "殷" | "文" | "元" | "仙" | "刪" | "山" | "寒" | "先" | "豪" | "肴" | "宵" | "蕭" | "歌" | "麻" | "唐" | "陽" | "庚" | "清" | "耕" | "青" | "侯" | "尤" | "幽" | "侵" | "覃" | "咸" | "鹽" | "添" | "談" | "銜" | "嚴" | "凡" | "登" | "蒸";
    /**
     * 切韻等（「一二三四」）。
     */
    get 切韻等(): string;
    /**
     * 韻鏡母。
     */
    get 母(): string;
    /**
     * 韻鏡呼（開/合/`null`）。
     *
     * 幫滂並明母、模侯尤韻的呼均為 `null`。
     *
     * 與《韻鏡》標註的呼未必一致，例如包含 `null`，又如《韻鏡》原書第四轉標註為「內轉第四開合」，而此處為「開」。
     */
    get 呼(): string | null;
    /**
     * 聲調。
     *
     * 由上位推得，並根據「去聲寄此」的韻鏡標註修正。
     */
    get 聲(): string;
    /**
     * 切韻類（A/B/C/`null`）。
     */
    get 類(): "B" | "A" | "C" | null;
    /**
     * 韻鏡位置描述（如「外轉第四十二圖·舌音第一位·入聲位·韻鏡一等」）。
     */
    get 描述(): string;
    /**
     * 轉換為切韻音系音韻地位物件。
     */
    to音韻地位(): ____;
    /**
     * 判定兩個韻鏡位置是否完全相同。
     */
    等於(other: 韻鏡位置): boolean;
}

/**
 * 將切韻音系音韻地位轉換為韻鏡位置物件。
 */
declare const 音韻地位2韻鏡位置: (當前音韻地位: ____) => 韻鏡位置;

/**
 * 迭代《韻鏡》所有字頭及其對應的韻鏡位置。
 */
declare function iter韻鏡字頭(): Generator<{
    字頭: string;
    韻鏡位置: 韻鏡位置;
}, void, unknown>;
/**
 * 根據韻鏡位置取得字頭。若無對應字頭，則回傳 `undefined`。
 */
declare const 韻鏡位置2字頭: (當前韻鏡位置: 韻鏡位置) => string | undefined;

declare const VERSION = "0.1.2";

export { VERSION, iter韻鏡字頭, 音韻地位2韻鏡位置, 韻鏡位置, 韻鏡位置2字頭 };
