import { AbstractViewController } from '@sprucelabs/heartwood-view-controllers'; import { MercuryClient } from '@sprucelabs/mercury-client'; import { EventContract, EventName, SkillEventContract, SpruceSchemas } from '@sprucelabs/mercury-types'; import { Schema, SchemaValues } from '@sprucelabs/schema'; import { VcFactoryForRemoteFactory } from './RemoteViewControllerFactory'; export default class CardRegistrar = EventName> { private client; private eventName; private vcIdsTransformer; private remoteVcFactory; static Registrar = EventName>(options: CardRegistrarOptions): CardRegistrar; /** @ts-ignore */ protected constructor(options: CardRegistrarOptions); fetch(options?: CardFetchOptions): Promise[]>; private ErrorCardVc; } type Card = SpruceSchemas.HeartwoodViewControllers.v2021_02_11.Card; type ResponsePayload> = Contract['eventSignatures'][Name]['responsePayloadSchema'] extends Schema ? SchemaValues : never; type EmitPayload> = Contract['eventSignatures'][Name]['emitPayloadSchema'] extends Schema ? SchemaValues : never; export interface CardRegistrarOptions> { client: MercuryClient; eventName: Name; vcFactory: VcFactoryForRemoteFactory; vcIdsTransformer: (payload: ResponsePayload) => string[]; } export type EachCardHandler = (vcs: AbstractViewController[]) => Promise | void; export type CardFetchOptions> = { each?: EachCardHandler; controllerOptionsHandler?: (vcId: string) => Record; } & EmitPayload; export {};