import type { Promisable, Validator } from '@ariestools/sdk'; import type { PayloadSetPayload, QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/sdk-protocol'; import type { DivinerModule } from '../diviner-model/index.js'; import type { WitnessModule } from '../witness-model/index.js'; export type PayloadSetPluginFunc = () => PayloadSetPlugin; export interface PayloadSetDivinerField { diviner: (params: TDiviner['params']) => Promisable; params?: TDiviner['params']; } export interface PayloadSetWitnessField { params?: TWitness['params']; witness: (params: TWitness['params']) => Promisable; } export interface PayloadSetPluginShared { set: PayloadSetPayload; validate?: (boundwitness: QueryBoundWitness) => Validator; wrap?: (boundwitness: QueryBoundWitness) => QueryBoundWitnessWrapper; } export type PayloadSetWitnessPlugin = PayloadSetPluginShared & PayloadSetWitnessField; export type PayloadSetDivinerPlugin = PayloadSetPluginShared & PayloadSetDivinerField; export type PayloadSetDualPlugin = PayloadSetWitnessPlugin & PayloadSetDivinerPlugin; export type PayloadSetPlugin = TModule extends WitnessModule ? PayloadSetWitnessPlugin : TModule extends DivinerModule ? PayloadSetDivinerPlugin : never; export declare const isPayloadSetWitnessPlugin: (plugin: PayloadSetPlugin) => plugin is PayloadSetWitnessPlugin; export declare const tryAsPayloadSetWitnessPlugin: (payloadSetPlugin: PayloadSetPlugin) => PayloadSetWitnessPlugin | undefined; export declare const isPayloadSetDivinerPlugin: (plugin: PayloadSetPlugin) => plugin is PayloadSetDivinerPlugin; export declare const tryAsPayloadSetDivinerPlugin: (payloadSetPlugin: PayloadSetPlugin) => PayloadSetDivinerPlugin | undefined; //# sourceMappingURL=Plugin.d.ts.map