///
import { Collation } from './collation';
import Parser, { type ParserOptions } from './token/stream-parser';
import { type DataType } from './data-type';
import { type CryptoMetadata } from './always-encrypted/types';
import { Result } from './token/helpers';
interface XmlSchema {
dbname: string;
owningSchema: string;
xmlSchemaCollection: string;
}
interface UdtInfo {
maxByteSize: number;
dbname: string;
owningSchema: string;
typeName: string;
assemblyName: string;
}
export type BaseMetadata = {
userType: number;
flags: number;
/**
* The column's type, such as VarChar, Int or Binary.
*/
type: DataType;
collation: Collation | undefined;
/**
* The precision. Only applicable to numeric and decimal.
*/
precision: number | undefined;
/**
* The scale. Only applicable to numeric, decimal, time, datetime2 and datetimeoffset.
*/
scale: number | undefined;
/**
* The length, for char, varchar, nvarchar and varbinary.
*/
dataLength: number | undefined;
schema: XmlSchema | undefined;
udtInfo: UdtInfo | undefined;
};
export type Metadata = {
cryptoMetadata?: CryptoMetadata;
} & BaseMetadata;
declare function readCollation(buf: Buffer, offset: number): Result;
declare function readMetadata(buf: Buffer, offset: number, options: ParserOptions): Result;
declare function metadataParse(parser: Parser, options: ParserOptions, callback: (metadata: Metadata) => void): void;
export default metadataParse;
export { readCollation, readMetadata };