import { JsonValue } from "cojson"; import { Account, AnonymousJazzAgent, CoMapInit_DEPRECATED, CoValue, CoValueBase, CoValueClass, CoValueFromRaw, Group, ID, Settled, RefsToResolve, RefsToResolveStrict, Resolved, Simplify, SubscribeListenerOptions } from "../internal.js"; /** * Extends `SchemaUnion` with a non-abstract constructor. */ export type SchemaUnionConcreteSubclass = typeof SchemaUnion & CoValueClass; export type SchemaUnionDiscriminator = (discriminable: { get(key: string): JsonValue | undefined; }) => CoValueClass & CoValueFromRaw; /** * SchemaUnion allows you to create union types of CoValues that can be discriminated at runtime. * * @category CoValues */ export declare abstract class SchemaUnion extends CoValueBase implements CoValue { static create(this: CoValueClass, init: Simplify>, owner: Account | Group): V; /** * Create an instance from raw data. This is called internally and should not be used directly. * Use `co.discriminatedUnion(...)` to create union schemas instead. * * @internal */ static fromRaw(this: CoValueClass, raw: V["$jazz"]["raw"]): V; /** * Load a `SchemaUnion` with a given ID, as a given account. * * @category Subscription & Loading */ static load = true>(this: CoValueClass, id: ID, options?: { resolve?: RefsToResolveStrict; loadAs?: Account | AnonymousJazzAgent; skipRetry?: boolean; }): Promise>>; /** * Load and subscribe to a `CoMap` with a given ID, as a given account. * * Automatically also subscribes to updates to all referenced/nested CoValues as soon as they are accessed in the listener. * * Returns an unsubscribe function that you should call when you no longer need updates. * * Also see the `useCoState` hook to reactively subscribe to a CoValue in a React component. * * @category Subscription & Loading */ static subscribe = true>(this: CoValueClass, id: ID, listener: (value: Resolved, unsubscribe: () => void) => void): () => void; static subscribe = true>(this: CoValueClass, id: ID, options: SubscribeListenerOptions, listener: (value: Resolved, unsubscribe: () => void) => void): () => void; } /** * @internal * Create a SchemaUnion subclass from a discriminator function. */ export declare function schemaUnionClassFromDiscriminator(discriminator: SchemaUnionDiscriminator): SchemaUnionConcreteSubclass; //# sourceMappingURL=schemaUnion.d.ts.map