import { Serializer, Serializable } from "../serializer.js";
import { Deserializer } from "../deserializer.js";
import { FixedBytes } from "./fixedBytes.js";
import { EntryFunctionArgument } from "../../transactions/instances/transactionArgument.js";
/**
 * This class exists solely to represent a sequence of fixed bytes as a serialized entry function, because
 * serializing an entry function appends a prefix that's *only* used for entry function arguments.
 *
 * NOTE: Using this class for serialized script functions will lead to erroneous and unexpected behavior.
 *
 * If you wish to convert this class back to a TransactionArgument, you must know the type
 * of the argument beforehand, and use the appropriate class to deserialize the bytes within
 * an instance of this class.
 * @group Implementation
 * @category BCS
 */
export declare class EntryFunctionBytes extends Serializable implements EntryFunctionArgument {
    readonly value: FixedBytes;
    /**
     * Creates an instance of the class with a specified hexadecimal input value.
     *
     * @param value - The hexadecimal input to be converted into FixedBytes.
     * @group Implementation
     * @category BCS
     */
    private constructor();
    /**
     * Serializes the value using the provided serializer.
     * This function is essential for accurately representing a sequence of bytes that are already BCS-serialized as a type.
     *
     * Note that to see the Move, BCS-serialized representation of the underlying fixed byte vector,
     * we must not serialize the length prefix.
     *
     * @param serializer - The serializer instance used to perform the serialization.
     * @group Implementation
     * @category BCS
     */
    serialize(serializer: Serializer): void;
    /**
     * Serializes the current instance for use as an entry function argument by converting the underlying fixed byte vector to a
     * type-agnostic byte vector.
     * This process includes serializing the length prefix of the byte vector.
     *
     * @param serializer - The serializer instance used to perform the serialization.
     * @group Implementation
     * @category BCS
     */
    serializeForEntryFunction(serializer: Serializer): void;
    /**
     * The only way to create an instance of this class is to use this static method.
     * This function should only be used when deserializing a sequence of EntryFunctionPayload arguments.
     * @param deserializer - The deserializer instance with the buffered bytes.
     * @param length - The length of the bytes to deserialize.
     * @returns An instance of this class, which will now only be usable as an EntryFunctionArgument.
     * @group Implementation
     * @category BCS
     */
    static deserialize(deserializer: Deserializer, length: number): EntryFunctionBytes;
}
//# sourceMappingURL=entryFunctionBytes.d.ts.map