import type { Attribute } from '../Attribute';
import type { Buffer } from '../Buffer';
import type { Geometry } from '../Geometry';
import { IRenderingContext } from '../../IRenderer';
import { BufferSystem } from '../BufferSystem';
export type AttributeBaseCallback = (gl: IRenderingContext, locations: number[], baseInstance: number, bufferSystem?: BufferSystem, buffers?: Buffer[], lastBuffer?: Buffer) => Buffer;
export type AttributeBaseCallbackStruct = {
    syncFunc: AttributeBaseCallback;
    bufSyncCount: number;
    bufFirstIndex: number;
    stride: number;
};
export declare const attribSyncCache: Record<string, AttributeBaseCallbackStruct>;
export declare function generateAttributesSignature(attributes: Attribute[]): string;
export declare function generateAttributeSync(attributes: Attribute[], genBuffers: boolean): AttributeBaseCallbackStruct;
export declare function generateAttribSyncForGeom(geom: Geometry): AttributeBaseCallbackStruct;
