type AscRecordFieldType = 'i32' | 'u32' | 'f32' | 'f64' | 'vec2' | 'vec3' | 'vec4';
type AscRecordField = {
    name: string;
    type: AscRecordFieldType;
    byteOffset?: number;
};
type AscRecordSchema = {
    name: string;
    fields: AscRecordField[];
    byteSize?: number;
};
type AscRecordConfig = {
    name?: string;
    byteSize?: number;
};
type AscRecordFieldConfig = {
    byteOffset?: number;
};
declare function ascRecord(meta?: AscRecordConfig): (...args: any[]) => void;
declare function ascField(type: AscRecordFieldType, config?: AscRecordFieldConfig): (...args: any[]) => void;
declare function readAscRecordSchema(ctor: any): AscRecordSchema | undefined;

declare function loadASC(): Promise<any>;

declare function asPrelude(): string;

declare function genericASModuleSource(): string;

declare function buildOpsForParent(parentSchema: any, exports: any): any;

declare function emitASUnmanagedFromSchema(parentSchema: any): string;

type AscGeneratedRecordFieldType = AscRecordFieldType;
type AscGeneratedSchemaRef = {
    module: string;
    export?: string;
    initialize?: false | Record<string, unknown>;
};
type AscGeneratedRecordField = AscRecordField;
type AscGeneratedRecord = AscRecordSchema;
type AscGeneratedRecordRef = AscGeneratedSchemaRef;
type AscGeneratedFileConfig = {
    outFile: string;
    schemas?: AscGeneratedSchemaRef[];
    records?: Array<AscGeneratedRecord | AscGeneratedRecordRef>;
};
type AscPrecompileConfig = {
    inputPaths: string[];
    outFile: string;
    generatedFiles?: AscGeneratedFileConfig[];
    gzipFile?: string;
    base64File?: string;
    base64ExportName?: string;
    base64Source?: 'outFile' | 'gzipFile';
    textFile?: string;
    sourceMap?: boolean;
    debug?: boolean;
    optimizeLevel?: 0 | 1 | 2 | 3 | 4;
    shrinkLevel?: 0 | 1 | 2;
    runtime?: 'stub' | 'minimal' | 'incremental';
    simd?: boolean;
    noAssert?: boolean;
};
declare function precompileAssemblyScript(config: AscPrecompileConfig): Promise<{
    outFile: string;
    gzipFile?: string;
    base64File?: string;
    textFile?: string;
}>;

export { type AscGeneratedFileConfig, type AscGeneratedRecord, type AscGeneratedRecordField, type AscGeneratedRecordFieldType, type AscGeneratedRecordRef, type AscGeneratedSchemaRef, type AscPrecompileConfig, type AscRecordField, type AscRecordFieldType, type AscRecordSchema, asPrelude, ascField, ascRecord, buildOpsForParent, emitASUnmanagedFromSchema, genericASModuleSource, loadASC, precompileAssemblyScript, readAscRecordSchema };
