/** * Effect Schema for validating provider pack exports at load time. * * Ensures that npm packages exported as provider packs have the correct * structure before attempting to use them. */ import { Schema } from 'effect'; import type { EffectProviderFactory } from './base'; import { type ProviderCapabilityKey } from './provider-capabilities'; import type { ProviderConnectionCapabilities, ProviderConnectionTestHook } from './connections'; /** * Effect Schema for validating EffectProviderFactory structure. * * Note: We can't fully validate function return types at runtime, * but we can ensure the basic shape is correct. */ export declare const ProviderFactorySchema: Schema.Struct<{ id: Schema.filter; aliases: Schema.optional>; capabilities: Schema.optional, ReadonlySet, readonly [], never>>; connectionCapabilities: Schema.optional>; connectionTest: Schema.optional>; makeConnectionPrepare: Schema.optional unknown, (...args: unknown[]) => unknown, readonly [], never>>; load: Schema.declare<(...args: unknown[]) => unknown, (...args: unknown[]) => unknown, readonly [], never>; }>; /** * Type inferred from the schema (subset of EffectProviderFactory). */ export type ValidatedProviderFactory = Schema.Schema.Type; /** * Extract the factory object from a dynamically imported module. * * Handles both default exports and direct module exports: * - `export default factory` -> module.default * - `export const factory = ...` -> module.factory * - Module is the factory itself -> module * * @param module - The raw imported module * @returns The factory object (module.default ?? module) */ export declare function extractFactory(module: unknown): unknown; /** * Validate that an object conforms to the EffectProviderFactory interface. * * @param exports - The exports from a provider pack module * @param packageName - Package name for error messages * @returns The validated factory cast to EffectProviderFactory * @throws ProviderPackLoadError if validation fails */ export declare function validatePackExports(exports: unknown, packageName: string): EffectProviderFactory; /** * Check if an object looks like an EffectProviderFactory. * * Use this for quick checks without throwing errors. * * @param obj - Object to check * @returns True if the object has the correct structure */ export declare function isProviderFactory(obj: unknown): obj is EffectProviderFactory; //# sourceMappingURL=pack-schema.d.ts.map