///
import { BitstreamElement, BitstreamReader, BitstreamWriter, FieldDefinition, Serializer } from "@astronautlabs/bitstream";
export declare enum TypeMarker {
Undefined = 0,
Null = 1,
False = 2,
True = 3,
Integer = 4,
Double = 5,
String = 6,
XmlDocument = 7,
Date = 8,
Array = 9,
Object = 10,
Xml = 11,
ByteArray = 12,
VectorInt = 13,
VectorUint = 14,
VectorDouble = 15,
VectorObject = 16,
Dictionary = 17
}
export declare const REFERENCE_TYPES: TypeMarker[];
export declare function Type(type: Function): PropertyDecorator;
export declare function amfTypeForProperty(object: any, propertyKey: string): Constructor;
export declare function amfValueForProperty(object: any, propertyKey: string): Value;
export declare type Constructor = {
new (): T;
};
export declare function amfTypeForValue(value: any): Constructor;
export declare class References {
strings: StringValue[];
traits: Traits[];
values: Value[];
}
/**
* Represents an AMF3 "Value" in the binary protocol
*/
export declare class Value extends BitstreamElement {
get references(): References;
marker: TypeMarker;
get value(): T;
set value(value: T);
static get undefined(): UndefinedValue;
static get null(): NullValue;
static boolean(value: boolean): TrueValue | FalseValue;
static int(value: number): IntegerValue;
static double(value: number): DoubleValue;
static string(value: string): StringValue;
static xmlDocument(value: string): XmlDocumentValue;
static xml(value: string): XmlValue;
static date(value: Date): DateValue;
static any(value: any): Value;
static array(array: any[]): ArrayValue;
static object(value: object): ObjectValueWithLiteralTraits;
static byteArray(buffer: Uint8Array | Buffer): ByteArray;
static vector(value: Int32Array | Uint32Array | number[], isFixed?: boolean): UIntVectorValue | IntVectorValue | DoubleVectorValue;
static objectVector(values: any[], isFixed?: boolean): ObjectVectorValue;
static dictionary(map: Map): DictionaryValue;
}
export declare class UndefinedValue extends Value {
marker: TypeMarker;
get value(): any;
}
export declare class NullValue extends Value {
marker: TypeMarker;
get value(): any;
}
export declare class FalseValue extends Value {
marker: TypeMarker;
get value(): false;
}
export declare class TrueValue extends Value {
marker: TypeMarker;
get value(): true;
}
export declare class IntegerValue extends Value {
marker: TypeMarker;
$value: number;
get value(): number;
set value(value: number);
}
export declare class DoubleValue extends Value {
marker: TypeMarker;
$value: number;
get value(): number;
set value(value: number);
}
export declare class StringOrReference extends BitstreamElement {
private $lengthOrReference;
get isReference(): boolean;
get isLiteral(): boolean;
private $value;
get id(): number;
set id(value: number);
get value(): string;
set value(value: string);
}
export declare class ReferenceValue extends Value {
}
/**
* Represents the "String" type of "Value" in Adobe's ActionScript Message Format (AMF) version 3.
* - U29Serializer: Encodes/decodes values in AMF3's custom variable-length integer format
* - Low bit of 0 or 1 on the "length" field determines if the value is a reference to a String Table entry
* or is an inline string literal
* - Thus IDs and lengths are limited to 2^28 since variable length strs are max 29 bits
*
* From the user's perspective, just set either `id` or `value`. When reading use `isReference()` to determine
* whether this string is a reference to the string table or literal and `id` or `value` respectively. `id` and
* `value` return `undefined` when they are not relevant for this object.
*/
export declare class StringValue extends ReferenceValue {
marker: TypeMarker;
stringOrReference: StringOrReference;
get isLiteral(): boolean;
get isReference(): boolean;
get id(): number;
set id(id: number);
get value(): string;
set value(value: string);
}
export declare class XmlDocumentValue extends StringValue {
marker: TypeMarker;
}
export declare class XmlValue extends StringValue {
marker: TypeMarker;
}
export declare class DateValue extends ReferenceValue {
marker: TypeMarker;
$indicator: number;
get isLiteral(): boolean;
get isReference(): boolean;
private $value;
private $date;
get value(): Date;
set value(value: Date);
}
export declare class AssociativeValueSerializer implements Serializer {
read(reader: BitstreamReader, type: any, parent: BitstreamElement, field: FieldDefinition): Generator<{
remaining: number;
contextHint: () => string;
}, AssociativeValue[], unknown>;
write(writer: BitstreamWriter, type: any, parent: BitstreamElement, field: FieldDefinition, value: AssociativeValue[]): void;
}
export declare class AssociativeValue extends BitstreamElement {
private $key;
get key(): string;
set key(value: string);
value: Value;
}
export declare class ArrayValue extends ReferenceValue {
marker: TypeMarker;
private $denseLengthOrReference;
get isReference(): boolean;
get isLiteral(): boolean;
get id(): number;
set id(value: number);
get denseLength(): number;
associativeValues: AssociativeValue[];
private $values;
get values(): Value[];
set values(value: Value[]);
}
export declare class ClassRegistry {
private _map;
register(klass: Function, name?: string): void;
get(name: string): Function;
}
export declare class ObjectValue extends ReferenceValue