import type { Bot, BotsState, CreateInitializationUpdateAction, GetInstStateFromUpdatesAction, InstUpdate } from '../bots';
import '../BlobPolyfill';
import type { PartitionRemoteEvents } from './AuxPartitionConfig';
import type { RemoteActions } from '../common';
/**
 * Creates a new initialization update using the given action.
 */
export declare function constructInitializationUpdate(action: CreateInitializationUpdateAction): InstUpdate;
/**
 * Gets the bots state that is encoded from the given action.
 * @param action The action.
 */
export declare function getStateFromUpdates(action: GetInstStateFromUpdatesAction): BotsState;
/**
 * Merges the given inst updates into a single update.
 * @param updates The list of updates to merge.
 */
export declare function mergeInstUpdates(updates: InstUpdate[], id?: number, timestamp?: number): InstUpdate;
/**
 * Converts the given error to a copiable value.
 * Returns a new value that can be sent over to web workers.
 * @param err The error to convert.
 */
export declare function convertErrorToCopiableValue(err: unknown): any;
/**
 * Converts the given value to a copiable value.
 * Copiable values are strings, numbers, booleans, arrays, and objects made of any of those types.
 * Non-copiable values are functions and errors.
 * @param value
 */
export declare function convertToCopiableValue(value: any): any;
export declare class DeepObjectError extends Error {
    constructor();
}
/**
 * Checks each of the tags in the given bot to ensure that the bot is copiable and returns a new bot with serializable values if the given bot is contains non-serializable values.
 * @param bot The bot to check.
 */
export declare function ensureBotIsSerializable(bot: Bot): Bot;
/**
 * Checks that the given tag is copiable and returns the copiable version of the value if it is not.
 * @param value The value to check.
 */
export declare function ensureTagIsSerializable(value: any): any;
/**
 * Determines if the given config supports the given remote action.
 * @param config The config. If this is true, then it will be treated as if every remote event is supported.
 * @param action The action to test.
 */
export declare function supportsRemoteEvent(config: PartitionRemoteEvents | boolean, action: RemoteActions): boolean;
//# sourceMappingURL=PartitionUtils.d.ts.map