import type { ProviderMoniker } from '@xyo-network/xl1-protocol/protocol-model';
import { type LocatorConfig } from './LocatorConfigFields.js';
export interface ResolveProvidersPlanInput {
    readonly optional?: ReadonlySet<ProviderMoniker>;
    readonly required: ReadonlySet<ProviderMoniker>;
}
declare const resolvedLocatorConfigBrand: unique symbol;
/** Locator config after compile — same fields as `LocatorConfig`, branded at assert. */
export type ResolvedLocatorConfig = LocatorConfig & {
    readonly [resolvedLocatorConfigBrand]: true;
};
export interface AssertResolvedLocatorConfigOptions {
    readonly needs?: ResolveProvidersPlanInput;
}
/**
 * Parses locator process fields and asserts resolve-ready invariants.
 * Closure coverage for `needs.required` is checked when `needs` is supplied.
 */
export declare function assertResolvedLocatorConfig(raw: unknown, options?: AssertResolvedLocatorConfigOptions): ResolvedLocatorConfig;
/** @internal Zod parse + connection-reference refine (needs supplied separately). */
export declare const ResolvedLocatorConfigZod: import("zod/mini").ZodMiniObject<{
    chain: import("zod/mini").ZodMiniDefault<import("zod/mini").ZodMiniObject<{
        id: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<import("@ariestools/sdk").BrandedHex, string>>>;
        genesisRewardAddress: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<Lowercase<string> & {
            readonly __hex: true;
        } & {
            readonly __address: true;
        }, string>>, import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<import("@xyo-network/sdk").XyoQuantAddress, string>>]>>;
        deploymentBlock: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniNumber<unknown>>;
    }, import("zod/v4/core").$strip>>;
    log: import("zod/mini").ZodMiniDefault<import("zod").ZodObject<{
        logLevel: import("zod").ZodDefault<import("zod").ZodEnum<{
            info: "info";
            error: "error";
            warn: "warn";
            log: "log";
            debug: "debug";
            trace: "trace";
        }>>;
        silent: import("zod").ZodDefault<import("zod").ZodBoolean>;
    }, import("zod/v4/core").$strip>>;
    connections: import("zod/mini").ZodMiniDefault<import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
        access: import("zod").ZodOptional<import("zod").ZodEnum<{
            read: "read";
            write: "write";
        }>>;
        root: import("zod").ZodString;
        store: import("zod").ZodOptional<import("zod").ZodString>;
        type: import("zod").ZodLiteral<"lmdb">;
    }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
        type: import("zod").ZodLiteral<"mongo">;
        connectionString: import("zod").ZodOptional<import("zod").ZodString>;
        database: import("zod").ZodOptional<import("zod").ZodString>;
        domain: import("zod").ZodOptional<import("zod").ZodString>;
        password: import("zod").ZodOptional<import("zod").ZodString>;
        username: import("zod").ZodOptional<import("zod").ZodString>;
        collection: import("zod").ZodOptional<import("zod").ZodString>;
    }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
        type: import("zod").ZodLiteral<"rpc">;
        protocol: import("zod").ZodDefault<import("zod").ZodString>;
        url: import("zod").ZodOptional<import("zod").ZodString>;
        networkId: import("zod").ZodOptional<import("zod").ZodString>;
        sessionId: import("zod").ZodOptional<import("zod").ZodString>;
    }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
        type: import("zod").ZodLiteral<"rest">;
        baseUrl: import("zod").ZodString;
    }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
        bucket: import("zod").ZodOptional<import("zod").ZodString>;
        endpoint: import("zod").ZodOptional<import("zod").ZodString>;
        prefix: import("zod").ZodOptional<import("zod").ZodString>;
        readUrl: import("zod").ZodOptional<import("zod").ZodString>;
        type: import("zod").ZodLiteral<"s3">;
        accessKeyId: import("zod").ZodOptional<import("zod").ZodString>;
        accountId: import("zod").ZodOptional<import("zod").ZodString>;
        secretAccessKey: import("zod").ZodOptional<import("zod").ZodString>;
    }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
        type: import("zod").ZodLiteral<"evm-rpc">;
        url: import("zod").ZodString;
        chainId: import("zod").ZodOptional<import("zod").ZodString>;
        eventQueryBlockChunkSize: import("zod").ZodOptional<import("zod").ZodCoercedNumber<unknown>>;
    }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
        type: import("zod").ZodLiteral<"memory">;
    }, import("zod/v4/core").$strip>], "type">>>>;
    providerBindings: import("zod/mini").ZodMiniDefault<import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
        connection: import("zod").ZodOptional<import("zod").ZodString>;
        provider: import("zod").ZodOptional<import("zod").ZodString>;
    }, import("zod/v4/core").$strip>>>>;
    providers: import("zod/mini").ZodMiniDefault<import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
        moniker: import("zod").ZodString;
        labels: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
    }, import("zod/v4/core").$loose>>>>;
    telemetry: import("zod/mini").ZodMiniDefault<import("zod").ZodObject<{
        metrics: import("zod").ZodOptional<import("zod").ZodObject<{
            scrape: import("zod").ZodObject<{
                path: import("zod").ZodDefault<import("zod").ZodString>;
                port: import("zod").ZodOptional<import("zod").ZodCoercedNumber<unknown>>;
            }, import("zod/v4/core").$strip>;
        }, import("zod/v4/core").$strip>>;
        otel: import("zod").ZodOptional<import("zod").ZodObject<{
            otlpEndpoint: import("zod").ZodOptional<import("zod").ZodURL>;
        }, import("zod/v4/core").$strip>>;
    }, import("zod/v4/core").$strip>>;
    validation: import("zod/mini").ZodMiniDefault<import("zod").ZodObject<{
        signerAuthorizations: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
            type: import("zod").ZodLiteral<"completedStepReward">;
            signers: import("zod").ZodArray<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<Lowercase<string> & {
                readonly __hex: true;
            } & {
                readonly __address: true;
            }, string>>, import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<import("@xyo-network/sdk").XyoQuantAddress, string>>]>>;
        }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
            type: import("zod").ZodLiteral<"derivedReceive">;
            scope: import("zod").ZodString;
            signers: import("zod").ZodArray<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<Lowercase<string> & {
                readonly __hex: true;
            } & {
                readonly __address: true;
            }, string>>, import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<import("@xyo-network/sdk").XyoQuantAddress, string>>]>>;
        }, import("zod/v4/core").$strip>], "type">>>;
        minCandidates: import("zod").ZodDefault<import("zod").ZodCoercedNumber<unknown>>;
        backoffMs: import("zod").ZodDefault<import("zod").ZodCoercedNumber<unknown>>;
    }, import("zod/v4/core").$strip>>;
}, import("zod/v4/core").$strict>;
export {};
//# sourceMappingURL=ResolvedLocatorConfig.d.ts.map