import { evaluate } from '@arktype/util';
import { AbiType, Table as Table$1 } from '@latticexyz/config';

type UserTypes = {
    readonly [userTypeName: string]: {
        type: AbiType;
        filePath: string;
    };
};
type Enums = {
    readonly [enumName: string]: readonly [string, ...string[]];
};
type TableCodegen = {
    readonly outputDirectory: string;
    readonly tableIdArgument: boolean;
    readonly storeArgument: boolean;
    readonly dataStruct: boolean;
};
type TableDeploy = {
    readonly disabled: boolean;
};
type Table = evaluate<Table$1 & {
    readonly codegen: TableCodegen;
    readonly deploy: TableDeploy;
}>;
type Codegen = {
    readonly storeImportPath: string;
    readonly userTypesFilename: string;
    readonly outputDirectory: string;
    readonly indexFilename: string;
};
type Store = {
    readonly tables: {
        readonly [namespacedTableName: string]: Table;
    };
    readonly userTypes: UserTypes;
    readonly enums: Enums;
    readonly namespace: string;
    readonly codegen: Codegen;
};

export { Codegen as C, Enums as E, Store as S, Table as T, UserTypes as U, TableCodegen as a, TableDeploy as b };
