import type { Logger } from '@ariestools/sdk';
import { AbstractCreatable } from '@ariestools/sdk';
import type { Provider, ProviderMoniker } from '@xyo-network/xl1-protocol/protocol-lib';
import type { CreatableProvider, CreatableProviderEventData, CreatableProviderInstance, CreatableProviderParams, ProviderMap } from './CreatableProvider.js';
import { ProviderFactory } from './ProviderFactory.js';
/** Abstract base class for CreatableProvider implementations. */
export declare abstract class AbstractCreatableProvider<TParams extends CreatableProviderParams = CreatableProviderParams, TEventData extends CreatableProviderEventData = CreatableProviderEventData> extends AbstractCreatable<TParams, TEventData> implements Omit<CreatableProviderInstance, 'moniker'> {
    dependencies: ProviderMap;
    protected _contextCache: TParams['context'] | undefined;
    protected _logger: Logger | undefined | null;
    abstract readonly moniker: ProviderMoniker;
    get logger(): Logger | undefined;
    get meter(): import("@opentelemetry/api").Meter | undefined;
    get tracer(): import("@opentelemetry/api").Tracer | undefined;
    protected get config(): {
        chain: {
            id?: import("@ariestools/sdk").BrandedHex | undefined;
            genesisRewardAddress?: (Lowercase<string> & {
                readonly __hex: true;
            } & {
                readonly __address: true;
            }) | import("@xyo-network/sdk").XyoQuantAddress | undefined;
            deploymentBlock?: number | undefined;
        };
        log: {
            logLevel: "info" | "error" | "warn" | "log" | "debug" | "trace";
            silent: boolean;
        };
        connections: Record<string, {
            root: string;
            type: "lmdb";
            access?: "read" | "write" | undefined;
            store?: string | undefined;
        } | {
            type: "mongo";
            connectionString?: string | undefined;
            database?: string | undefined;
            domain?: string | undefined;
            password?: string | undefined;
            username?: string | undefined;
            collection?: string | undefined;
        } | {
            type: "rpc";
            protocol: string;
            url?: string | undefined;
            networkId?: string | undefined;
            sessionId?: string | undefined;
        } | {
            type: "rest";
            baseUrl: string;
        } | {
            type: "s3";
            bucket?: string | undefined;
            endpoint?: string | undefined;
            prefix?: string | undefined;
            readUrl?: string | undefined;
            accessKeyId?: string | undefined;
            accountId?: string | undefined;
            secretAccessKey?: string | undefined;
        } | {
            type: "evm-rpc";
            url: string;
            chainId?: string | undefined;
            eventQueryBlockChunkSize?: number | undefined;
        } | {
            type: "memory";
        }>;
        providerBindings: Record<string, {
            connection?: string | undefined;
            provider?: string | undefined;
        }>;
        providers: {
            [x: string]: unknown;
            moniker: string;
            labels?: string[] | undefined;
        }[];
        telemetry: {
            metrics?: {
                scrape: {
                    path: string;
                    port?: number | undefined;
                };
            } | undefined;
            otel?: {
                otlpEndpoint?: string | undefined;
            } | undefined;
        };
        validation: {
            signerAuthorizations: ({
                type: "completedStepReward";
                signers: (import("@xyo-network/sdk").XyoQuantAddress | (Lowercase<string> & {
                    readonly __hex: true;
                } & {
                    readonly __address: true;
                }))[];
            } | {
                type: "derivedReceive";
                scope: string;
                signers: (import("@xyo-network/sdk").XyoQuantAddress | (Lowercase<string> & {
                    readonly __hex: true;
                } & {
                    readonly __address: true;
                }))[];
            })[];
            minCandidates: number;
            backoffMs: number;
        };
    };
    protected get context(): import('../index.js').CreatableProviderContextType;
    protected get locator(): import('./ProviderFactoryLocatorInstance.js').ProviderFactoryLocatorInstance<import('../index.js').CreatableProviderContextType>;
    static factory<TInstance extends CreatableProviderInstance, TDependencies extends ProviderMoniker[] = ProviderMoniker[]>(this: CreatableProvider<TInstance>, dependencies: TDependencies, params: Omit<TInstance['params'], 'context'>): ProviderFactory<TInstance, TDependencies>;
    static paramsHandler<T extends CreatableProviderInstance>(params?: Partial<T['params']>): Promise<T["params"]>;
    createHandler(): Promise<void>;
    locateAndCreate<TProvider extends Provider<ProviderMoniker>>(moniker: TProvider['moniker']): Promise<CreatableProviderInstance<TProvider>>;
    tryLocateAndCreate<TProvider extends Provider<ProviderMoniker>>(moniker: TProvider['moniker']): Promise<CreatableProviderInstance<TProvider> | undefined>;
}
//# sourceMappingURL=AbstractCreatableProvider.d.ts.map