import { DescExtension, DescField, DescMessage } from "./descriptor-set.js"; import { ScalarType } from "./scalar.js"; /** * A field wrapper unwraps a message to a primitive value that is more * ergonomic for use as a message field. */ export interface FieldWrapper { /** * Wrap a primitive message field value in its corresponding wrapper * message. This function is idempotent. */ wrapField(value: U | null | undefined): T; /** * If the given field uses one of the well-known wrapper types, return * the primitive type it wraps. */ unwrapField(value: T): U | null | undefined; } /** * Wrap a primitive message field value in its corresponding wrapper * message. This function is idempotent. */ export declare function wrapField(fieldWrapper: FieldWrapper | undefined, value: any): T; /** * Wrap a primitive message field value in its corresponding wrapper * message. This function is idempotent. */ export declare function unwrapField(fieldWrapper: FieldWrapper | undefined, value: any): U; /** * If the given field uses one of the well-known wrapper types, return * the primitive type it wraps. */ export declare function getUnwrappedFieldType(field: DescField | DescExtension): ScalarType | undefined; /** * If the given field uses one of the well-known wrapper types, return * the primitive type it wraps. */ export declare function getUnwrappedMessageType(msg: DescMessage): ScalarType | undefined;