import '@fesjs/fes';

interface EnumExtend {
    key: string;
    dir: string;
    transfer<T>(data: T): T;
}

interface EnumApi {
    get: (name: string, key?: string, extend?: EnumExtend) => any;
    push: (name: string, _enum?: [] | object, option?: { keyName: string; valueName: string }) => any;
    remove: (name: string) => void;
    concat: (name: string, _enum: [] | object, option?: { keyName: string; valueName: string; before: boolean; extend: EnumExtend }) => any;
    convert: (name: string, _enum?: [] | object, option?: { keyName: string; valueName: string }) => any;
}

export const enums: EnumApi;
declare module '@fesjs/fes' {
    interface PluginBuildConfig {
        enums?: {
            [key: string]: [string | number, string | number][];
        } | false;
    }
}