import type { CreatableName, EventAnyListener, EventEmitter, EventListener, EventUnsubscribeFunction, Logger, Promisable } from '@ariestools/sdk'; import { Base, PromiseEx } from '@ariestools/sdk'; import type { AccountInstance, ModuleError, ModuleManifestPayload, Payload, Query, QueryBoundWitness, XyoAddress, XyoQuantAddress } from '@xyo-network/sdk-protocol'; import { LRUCache } from 'lru-cache'; import type { AddressPreviousHashPayload, AnyConfigSchema, AttachableModuleInstance, InstanceTypeCheck, ModuleConfig, ModuleEventData, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleQueryResult, ModuleResolverInstance, ModuleStatus, QueryableModule, QueryableModuleParams, QueryableModuleTypeCheck } from '../module-model/index.js'; import type { ModuleWrapperParams } from './models.js'; export interface ConstructableModuleWrapper { defaultLogger?: Logger; instanceIdentityCheck: InstanceTypeCheck; moduleIdentityCheck: QueryableModuleTypeCheck; requiredQueries: string[]; new (params: ModuleWrapperParams): TWrapper; canWrap(mod: QueryableModule | undefined): boolean; is(this: ConstructableModuleWrapper, wrapper?: any): wrapper is TModuleWrapper; tryWrap(this: ConstructableModuleWrapper, mod: QueryableModule | undefined, account: AccountInstance, checkIdentity?: boolean): TModuleWrapper | undefined; wrap(this: ConstructableModuleWrapper, mod: QueryableModule | undefined, account: AccountInstance, checkIdentity?: boolean): TModuleWrapper; } export declare function constructableModuleWrapper(): >(constructor: U) => void; export declare class ModuleWrapper extends Base & { config: Exclude; }, undefined>> implements AttachableModuleInstance { static readonly instanceIdentityCheck: InstanceTypeCheck; static readonly moduleIdentityCheck: QueryableModuleTypeCheck; static readonly requiredQueries: string[]; eventData: TWrappedModule["eventData"]; protected readonly cachedCalls: LRUCache; protected readonly wrapperParams: ModuleWrapperParams; private _parents; private _status; constructor(params: ModuleWrapperParams); get account(): AccountInstance; get additionalSigners(): AccountInstance[]; get address(): (Lowercase & { readonly __hex: true; } & { readonly __address: true; }) | XyoQuantAddress; get config(): Exclude; get downResolver(): ModuleResolverInstance; get id(): string; get mod(): TWrappedModule; get modName(): string | undefined; get name(): CreatableName; get priority(): 1; get privateResolver(): ModuleResolverInstance; get queries(): string[]; get upResolver(): ModuleResolverInstance; get status(): ModuleStatus; protected set status(value: ModuleStatus); /** Narrowed view of `mod` typed against the wrapped module's actual `eventData` so generic event method calls type-check across the constraint boundary. */ protected get modEvents(): EventEmitter; static canWrap(mod?: QueryableModule): mod is QueryableModule>, ModuleEventData>; static hasRequiredQueries(mod: QueryableModule): boolean; static is(this: ConstructableModuleWrapper, wrapper: any): wrapper is TModuleWrapper; static missingRequiredQueries(mod: QueryableModule): string[]; static tryWrap(this: ConstructableModuleWrapper, mod: QueryableModule | undefined, account: AccountInstance, checkIdentity?: boolean): TModuleWrapper | undefined; static with = void>(this: ConstructableModuleWrapper, mod: any, closure: (mod: TModuleWrapper) => R): R | undefined; static wrap(this: ConstructableModuleWrapper, mod: QueryableModule | undefined, account: AccountInstance, checkIdentity?: boolean): TModuleWrapper; addParent(mod: ModuleInstance): void; addressPreviousHash(): Promise; clearListeners(eventNames: Parameters[0]): void; emit(eventName: TEventName, eventArgs: TWrappedModule['eventData'][TEventName]): Promise; emitSerial(eventName: TEventName, eventArgs: TWrappedModule['eventData'][TEventName]): Promise; listenerCount(eventNames: Parameters[0]): number; manifest(maxDepth?: number): Promise; manifestQuery(account: AccountInstance, maxDepth?: number): Promise>; moduleAddress(): Promise; off(eventNames: TEventName, listener: EventListener): void; offAny(listener: EventAnyListener): void; on(eventNames: TEventName, listener: EventListener): EventUnsubscribeFunction; onAny(listener: EventAnyListener): EventUnsubscribeFunction; once(eventName: TEventName, listener: EventListener): EventUnsubscribeFunction; parents(): Promisable; previousHash(): Promise; previousHashQuery(account?: AccountInstance): Promise>; privateChildren(): Promise; publicChildren(): Promise; query(query: T, payloads?: Payload[]): Promise; queryable(query: T, payloads?: Payload[]): Promisable; removeParent(address: XyoAddress): void; /** @deprecated do not pass undefined. If trying to get all, pass '*' */ resolve(): Promise; resolve(all: '*', options?: ModuleFilterOptions): Promise; resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise; resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise; resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise; siblings(): Promise; start(): Promise; state(): Promise; stateQuery(_account: AccountInstance): Promise; stop(): Promise; protected bindQuery(query: T, payloads?: Payload[], account?: AccountInstance, additionalSigners?: AccountInstance[]): PromiseEx<[QueryBoundWitness, Payload[], ModuleError[]], AccountInstance>; protected bindQueryInternal(query: T, payloads?: Payload[], account?: AccountInstance, additionalSigners?: AccountInstance[]): Promise<[QueryBoundWitness, Payload[], ModuleError[]]>; protected filterErrors([bw, payloads]: ModuleQueryResult): ModuleError[]; protected sendQuery(queryPayload: T, payloads?: P[]): Promise; protected sendQueryRaw(queryPayload: T, payloads?: P[], account?: AccountInstance): Promise>; } //# sourceMappingURL=ModuleWrapper.d.ts.map