import { AsyncEventEmitter, type EventListener } from '@prismamedia/async-event-emitter'; import * as core from '@prismamedia/graphql-platform'; import * as utils from '@prismamedia/graphql-platform-utils'; import type { JsonObject } from 'type-fest'; import { MariaDBSubscription, type MariaDBSubscriptionDiagnosis, type MariaDBSubscriptionEvents } from './broker/subscription.js'; import { MariaDBBrokerAssignmentsTable, MariaDBBrokerChangesTable, MariaDBBrokerMutationsTable, MariaDBBrokerSubscriptionsStateTable, type MariaDBBrokerAssignmentsTableOptions, type MariaDBBrokerChangesTableOptions, type MariaDBBrokerMutationsTableOptions } from './broker/table.js'; import type { MariaDBConnector, PoolConnection } from './index.js'; import { StatementKind } from './statement.js'; export * from './broker/error.js'; export { MariaDBSubscription, MariaDBSubscriptionDiagnosis, type MariaDBSubscriptionEvents, } from './broker/subscription.js'; export * from './broker/table.js'; export type MariaDBBrokerEvents = { subscription: MariaDBSubscription; unsubscription: MariaDBSubscription; idle: undefined; }; export interface MariaDBBrokerOptions { enabled?: utils.OptionalFlag; mutationsTable?: MariaDBBrokerMutationsTableOptions; changesTable?: MariaDBBrokerChangesTableOptions; assignmentsTable?: MariaDBBrokerAssignmentsTableOptions; /** * The number of seconds to wait before polling for new assignments. * * @default 5 */ assignerInterval?: number; /** * The number of seconds to wait between heartbeats. * * @default 60 * 5 (5 minutes) */ heartbeatInterval?: number; /** * The number of missed heartbeats allowed before assignments and subscriptions' state are considered stale. * * @default 2 */ allowedHeartbeatMisses?: number; /** * The number of seconds to keep the unassigned mutations in the database. * * @default 60 * 15 (15 minutes) */ retention?: number; /** * Optional, a function to serialize the request-context as a JSON object */ serializeRequestContext?: (requestContext: TRequestContext) => JsonObject; /** * Optional, a function to unserialize the request-context from a JSON object */ unserializeRequestContext?: (requestContext: JsonObject) => TRequestContext; } export declare class MariaDBBroker extends AsyncEventEmitter implements core.BrokerInterface { #private; readonly connector: MariaDBConnector; readonly options?: MariaDBBrokerOptions | undefined; readonly assignerIntervalInSeconds: number; readonly heartbeatIntervalInSeconds: number; readonly heartbeatMaxAgeInSeconds: number; readonly retentionInSeconds: number; readonly mutationsTable: MariaDBBrokerMutationsTable; readonly changesTable: MariaDBBrokerChangesTable; readonly assignmentsTable: MariaDBBrokerAssignmentsTable; readonly subscriptions: Map, MariaDBSubscription>; constructor(connector: MariaDBConnector, options?: MariaDBBrokerOptions | undefined); get subscriptionsStateTables(): ReadonlyArray; setup(connection?: PoolConnection): Promise; publish(changes: core.MutationContextChanges): Promise; heartbeat(): Promise; subscribe(subscription: core.ChangesSubscriptionStream): Promise; onIdle(subscription: core.ChangesSubscriptionStream, listener: EventListener): void; waitForIdle(subscription: core.ChangesSubscriptionStream): Promise; unsubscribe(subscription: core.ChangesSubscriptionStream): Promise; assign(): Promise; diagnose(): Promise; } //# sourceMappingURL=broker.d.ts.map