/** @packageDocumentation * @module iModelHubClient */ import { ClientRequestContext, GuidString, Id64String } from "@bentley/bentleyjs-core"; import { AuthorizedClientRequestContext } from "../AuthorizedClientRequestContext"; import { AccessToken } from "../Token"; import { WsgInstance } from "./../ECJsonTypeMap"; import { Response } from "./../Request"; import { IModelBaseHandler } from "./BaseHandler"; import { CodeState } from "./Codes"; import { BaseEventSAS, EventBaseHandler, IModelHubBaseEvent } from "./EventsBase"; import { LockLevel, LockType } from "./Locks"; /** Type of [[IModelHubEvent]]. Event type is used to define which events you wish to receive from your [[EventSubscription]]. See [[EventSubscriptionHandler.create]] and [[EventSubscriptionHandler.update]]. * @beta */ export declare type EventType = /** Sent when one or more [[Lock]]s are updated. See [[LockEvent]]. * @alpha Hide Lock API while focused on readonly viewing scenarios */ "LockEvent" | /** Sent when all [[Lock]]s for a [[Briefcase]] are deleted. See [[AllLocksDeletedEvent]]. * @alpha Hide Lock API while focused on readonly viewing scenarios */ "AllLocksDeletedEvent" | /** Sent when a [[ChangeSet]] is successfully pushed. See [[ChangeSetPostPushEvent]]. */ "ChangeSetPostPushEvent" | /** Sent when a [[ChangeSet]] push has started. See [[ChangeSetPrePushEvent]]. */ "ChangeSetPrePushEvent" | /** Sent when one or more [Code]($common)s are updated. See [[CodeEvent]]. * @alpha Hide Code API while focused on readonly viewing scenarios */ "CodeEvent" | /** Sent when all [Code]($common)s for a [[Briefcase]] are deleted. See [[AllCodesDeletedEvent]]. * @alpha Hide Code API while focused on readonly viewing scenarios */ "AllCodesDeletedEvent" | /** Sent when a [[Briefcase]] is deleted. See [[BriefcaseDeletedEvent]]. * @internal */ "BriefcaseDeletedEvent" | /** Sent when an iModel is deleted. See [[iModelDeletedEvent]]. */ "iModelDeletedEvent" | /** Sent when a new named [[Version]] is created. See [[VersionEvent]]. */ "VersionEvent"; /** Base type for all iModelHub events. * @beta */ export declare abstract class IModelHubEvent extends IModelHubBaseEvent { /** Id of the iModel where the event occured. */ iModelId?: GuidString; /** Construct this event from object instance. * @param obj Object instance. * @internal */ fromJson(obj: any): void; } /** Base type for iModelHub events that have BriefcaseId. * @beta */ export declare abstract class BriefcaseEvent extends IModelHubEvent { /** Id of the [[Briefcase]] involved in this event. */ briefcaseId?: number; /** Construct this event from object instance. * @param obj Object instance. * @internal */ fromJson(obj: any): void; } /** Sent when one or more [[Lock]]s are updated. Lock updates can be very frequent, so it's recommended to not to subscribe to LockEvents, if it's not necessary. * @alpha Hide Lock API while focused on readonly viewing scenarios */ export declare class LockEvent extends BriefcaseEvent { /** [[LockType]] of the updated Locks. */ lockType?: LockType; /** [[LockLevel]] of the updated Locks. */ lockLevel?: LockLevel; /** Id's of the updated Locks. */ objectIds?: Id64String[]; /** Id of the [[ChangeSet]] Locks were released with. */ releasedWithChangeSet?: string; /** Construct this event from object instance. * @param obj Object instance. * @internal */ fromJson(obj: any): void; } /** Sent when all [[Lock]]s for a [[Briefcase]] are deleted. Can occur when calling [[LockHandler.deleteAll]] or [[BriefcaseHandler.delete]]. * @alpha Hide Lock API while focused on readonly viewing scenarios */ export declare class AllLocksDeletedEvent extends BriefcaseEvent { } /** Sent when a [[ChangeSet]] is successfully pushed. See [[ChangeSetHandler.create]]. It's sent when a new [[ChangeSet]] is successfully pushed to an iModel. See [[ChangeSetPrePushEvent]] for the event indicating the start of a ChangeSet push. * @beta */ export declare class ChangeSetPostPushEvent extends BriefcaseEvent { /** Id of the ChangeSet that was pushed. */ changeSetId?: string; /** Index of the ChangeSet that was pushed. */ changeSetIndex?: string; /** Construct this event from object instance. * @param obj Object instance. * @internal */ fromJson(obj: any): void; } /** Sent when a [[ChangeSet]] push has started. See [[ChangeSetHandler.create]]. ChangeSetPrePushEvent indicates that iModelHub allowed one of the [[Briefcase]]s to push a ChangeSet and all other push attempts will fail, until this push times out or succeeds. See [[ChangeSetPostPushEvent]] for an event indicating a successful push. * @beta */ export declare class ChangeSetPrePushEvent extends IModelHubEvent { } /** Sent when one or more [Code]($common)s are updated. See [[CodeHandler.update]]. Code updates can be very frequent, so it's recommended to not to subscribe to CodeEvents, if it's not necessary. * @alpha Hide Code API while focused on readonly viewing scenarios */ export declare class CodeEvent extends BriefcaseEvent { /** Id of the [CodeSpec]($common) for the updated Codes. */ codeSpecId?: Id64String; /** Scope of the updated Codes. */ codeScope?: string; /** Array of the updated Code values. */ values?: string[]; /** State Codes were updated to. */ state?: CodeState; /** Construct this event from object instance. * @param obj Object instance. * @internal */ fromJson(obj: any): void; } /** Sent when all [Code]($common)s for a [[Briefcase]] are deleted. Can occur when calling [[CodeHandler.deleteAll]] or [[BriefcaseHandler.delete]]. * @alpha Hide Code API while focused on readonly viewing scenarios */ export declare class AllCodesDeletedEvent extends BriefcaseEvent { } /** Sent when a [[Briefcase]] is deleted. See [[BriefcaseHandler.delete]]. * @internal */ export declare class BriefcaseDeletedEvent extends BriefcaseEvent { } /** Sent when an iModel is deleted. See [[IModelHandler.delete]]. [[EventSubscription]] will be deleted 5 minutes after iModel is deleted, removing all events from subscription queues, making it possible for this event to be missed if not retrieved immediately. * @beta */ export declare class IModelDeletedEvent extends IModelHubEvent { } /** Sent when a new named [[Version]] is created. See [[VersionHandler.create]]. * @beta */ export declare class VersionEvent extends IModelHubEvent { /** Id of the created Version. */ versionId?: GuidString; /** Name of the created Version. */ versionName?: string; /** Id of the [[ChangeSet]] that this Version was created for. */ changeSetId?: string; /** Construct this event from object instance. * @param obj Object instance. * @internal */ fromJson(obj: any): void; } /** Parse [[IModelHubEvent]] from response object. * @param response Response object to parse. * @returns Appropriate event object. * @internal */ export declare function ParseEvent(response: Response): IModelHubEvent; /** Subscription to receive [[IModelHubEvent]]s. Each subscription has a separate queue for events that it hasn't read yet. Subscriptions are deleted, if they are inactive for an hour. Use wsgId of this instance for the methods that require subscriptionId. See [[EventSubscriptionHandler]]. * @beta */ export declare class EventSubscription extends WsgInstance { /** Types of the [[IModelHubEvent]]s that this subscription listens to. */ eventTypes?: EventType[]; } /** Shared access signature token for getting [[IModelHubEvent]]s. It's used to authenticate for [[EventHandler.getEvent]]. To receive an instance call [[EventHandler.getSASToken]]. * @beta */ export declare class EventSAS extends BaseEventSAS { } /** Handler for managing [[EventSubscription]]s. Use [[EventHandler.Subscriptions]] to get an instance of this class. * @beta */ export declare class EventSubscriptionHandler { private _handler; /** Constructor for EventSubscriptionHandler. * @param handler Handler for WSG requests. */ constructor(handler: IModelBaseHandler); /** Get relative url for EventSubscription requests. * @param iModelId Id of the iModel. See [[HubIModel]]. * @param instanceId Id of the subscription. */ private getRelativeUrl; /** Create an [[EventSubscription]]. * @param requestContext The client request context * @param iModelId Id of the iModel. See [[HubIModel]]. * @param events Array of EventTypes to subscribe to. * @return Created EventSubscription instance. * @throws [Common iModelHub errors]($docs/learning/iModelHub/CommonErrors) */ create(requestContext: AuthorizedClientRequestContext, iModelId: GuidString, events: EventType[]): Promise; /** Update an [[EventSubscription]]. Can change the [[EventType]]s specified in the subscription. Must be a valid subscription that was previously created with [[EventSubscriptionHandler.create]] that hasn't expired. * @param requestContext The client request context * @param iModelId Id of the iModel. See [[HubIModel]]. * @param subscription Updated EventSubscription. * @return EventSubscription instance from iModelHub after update. * @throws [[IModelHubError]] with [IModelHubStatus.EventSubscriptionDoesNotExist]($bentley) if [[EventSubscription]] does not exist with the specified subscription.wsgId. * @throws [Common iModelHub errors]($docs/learning/iModelHub/CommonErrors) */ update(requestContext: AuthorizedClientRequestContext, iModelId: GuidString, subscription: EventSubscription): Promise; /** Delete an [[EventSubscription]]. * @param requestContext The client request context * @param iModelId Id of the iModel. See [[HubIModel]]. * @param eventSubscriptionId Id of the EventSubscription. * @returns Resolves if the EventSubscription has been successfully deleted. * @throws [[IModelHubError]] with [IModelHubStatus.EventSubscriptionDoesNotExist]($bentley) if EventSubscription does not exist with the specified subscription.wsgId. * @throws [Common iModelHub errors]($docs/learning/iModelHub/CommonErrors) */ delete(requestContext: AuthorizedClientRequestContext, iModelId: GuidString, eventSubscriptionId: string): Promise; } /** Handler for receiving [[IModelHubEvent]]s. Use [[IModelClient.Events]] to get an instance of this class. * @beta */ export declare class EventHandler extends EventBaseHandler { private _subscriptionHandler; /** Constructor for EventHandler. * @param handler Handler for WSG requests. * @internal */ constructor(handler: IModelBaseHandler); /** Get a handler for managing [[EventSubscription]]s. */ get subscriptions(): EventSubscriptionHandler; /** Get relative url for EventSAS requests. * @param iModelId Id of the iModel. See [[HubIModel]]. */ private getEventSASRelativeUrl; /** Get event SAS Token. Used to authenticate for [[EventHandler.getEvent]]. * @param requestContext The client request context * @param iModelId Id of the iModel. See [[HubIModel]]. * @return SAS Token to connect to the topic. * @throws [Common iModelHub errors]($docs/learning/iModelHub/CommonErrors) */ getSASToken(requestContext: AuthorizedClientRequestContext, iModelId: GuidString): Promise; /** Get absolute url for event requests. * @param baseAddress Base address for the serviceBus. * @param subscriptionId Id of the subscription. * @param timeout Optional timeout for long polling. */ private getEventUrl; /** Get [[IModelHubEvent]] from the [[EventSubscription]]. You can use long polling timeout, to have requests return when events are available (or request times out), rather than returning immediately when no events are found. * @param requestContext The client request context * @param sasToken SAS Token used to authenticate. See [[EventSAS.sasToken]]. * @param baseAddress Address for the events. See [[EventSAS.baseAddress]]. * @param subscriptionId Id of the subscription to the topic. See [[EventSubscription]]. * @param timeout Optional timeout duration in seconds for request, when using long polling. * @return IModelHubEvent if it exists, undefined otherwise. * @throws [[IModelHubClientError]] with [IModelHubStatus.UndefinedArgumentError]($bentley) or [IModelHubStatus.InvalidArgumentError]($bentley) if one of the arguments is undefined or has an invalid value. * @throws [[ResponseError]] if request has failed. */ getEvent(requestContext: ClientRequestContext, sasToken: string, baseAddress: string, subscriptionId: string, timeout?: number): Promise; /** Create a listener for long polling events from an [[EventSubscription]]. When event is received from the subscription, every registered listener callback is called. This continuously waits for events until all created listeners for that subscriptionId are deleted. [[EventSAS]] token expirations are handled automatically, [[AccessToken]] expiration is handled by calling authenticationCallback to get a new token. * @param requestContext The client request context * @param authenticationCallback Callback used to get AccessToken. Only the first registered authenticationCallback for this subscriptionId will be used. * @param subscriptionId Id of EventSubscription. * @param iModelId Id of the iModel. See [[HubIModel]]. * @param listener Callback that is called when an [[IModelHubEvent]] is received. * @returns Function that deletes the created listener. * @throws [[IModelHubClientError]] with [IModelHubStatus.UndefinedArgumentError]($bentley) or [IModelHubStatus.InvalidArgumentError]($bentley) if one of the arguments is undefined or has an invalid value. */ createListener(requestContext: ClientRequestContext, authenticationCallback: () => Promise, subscriptionId: string, iModelId: GuidString, listener: (event: IModelHubEvent) => void): () => void; } //# sourceMappingURL=Events.d.ts.map