import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import type { JsonValue } from "@protobuf-ts/runtime";
import type { JsonReadOptions } from "@protobuf-ts/runtime";
import type { JsonWriteOptions } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
export interface Struct {
    fields: {
        [key: string]: Value;
    };
}
export interface Value {
    kind: {
        oneofKind: "nullValue";
        nullValue: NullValue;
    } | {
        oneofKind: "numberValue";
        numberValue: number;
    } | {
        oneofKind: "stringValue";
        stringValue: string;
    } | {
        oneofKind: "boolValue";
        boolValue: boolean;
    } | {
        oneofKind: "structValue";
        structValue: Struct;
    } | {
        oneofKind: "listValue";
        listValue: ListValue;
    } | {
        oneofKind: undefined;
    };
}
export interface ListValue {
    values: Value[];
}
export declare enum NullValue {
    NULL_VALUE = 0
}
declare class Struct$Type extends MessageType<Struct> {
    constructor();
    internalJsonWrite(message: Struct, options: JsonWriteOptions): JsonValue;
    internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Struct): Struct;
    create(value?: PartialMessage<Struct>): Struct;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Struct): Struct;
    private binaryReadMap1;
    internalBinaryWrite(message: Struct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
export declare const Struct: Struct$Type;
declare class Value$Type extends MessageType<Value> {
    constructor();
    internalJsonWrite(message: Value, options: JsonWriteOptions): JsonValue;
    internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: Value): Value;
    create(value?: PartialMessage<Value>): Value;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Value): Value;
    internalBinaryWrite(message: Value, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
export declare const Value: Value$Type;
declare class ListValue$Type extends MessageType<ListValue> {
    constructor();
    internalJsonWrite(message: ListValue, options: JsonWriteOptions): JsonValue;
    internalJsonRead(json: JsonValue, options: JsonReadOptions, target?: ListValue): ListValue;
    create(value?: PartialMessage<ListValue>): ListValue;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListValue): ListValue;
    internalBinaryWrite(message: ListValue, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
export declare const ListValue: ListValue$Type;
export {};
