import type { IMatrix, IMatrixLike } from '@visactor/vutils';
import { Matrix } from '@visactor/vutils';
import type { mat4, Releaseable, IAllocate } from '../interface';
export declare const MatrixAllocate: unique symbol;
export declare const Mat4Allocate: unique symbol;
export declare function createMat4(): mat4;
export declare class DefaultMatrixAllocate implements IAllocate<IMatrix>, Releaseable {
    protected pools: IMatrix[];
    allocate(a: number, b: number, c: number, d: number, e: number, f: number): IMatrix;
    allocateByObj(matrix: IMatrixLike): IMatrix;
    free(d: Matrix): void;
    get length(): number;
    release(...params: any): void;
}
export declare class DefaultMat4Allocate implements IAllocate<mat4>, Releaseable {
    protected pools: mat4[];
    static identity(out: mat4): import("@visactor/vutils").mat4;
    allocate(): mat4;
    allocateByObj(d: mat4): mat4;
    free(m: mat4): void;
    get length(): number;
    release(...params: any): void;
}
export declare const matrixAllocate: DefaultMatrixAllocate;
export declare const mat4Allocate: DefaultMat4Allocate;
