import { Static } from "@sinclair/typebox";
import { providers } from "ethers";
import { Deployment } from "../../types";
export declare const AgentStackSchema: import("@sinclair/typebox").TObject<{
    allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
    blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
}>;
export type AgentStack = Static<typeof AgentStackSchema>;
export declare const AgentsSchema: import("@sinclair/typebox").TObject<{
    relayers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
    }>>;
    sequencers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
    }>>;
    routers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
    }>>;
    watchers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
        allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
    }>>;
}>;
export type Agents = Static<typeof AgentsSchema>;
export declare const AssetStackSchema: import("@sinclair/typebox").TObject<{
    name: import("@sinclair/typebox").TString<string>;
    canonical: import("@sinclair/typebox").TObject<{
        domain: import("@sinclair/typebox").TString<string>;
        address: import("@sinclair/typebox").TString<string>;
        decimals: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        cap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString<string>>;
    }>;
    representations: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString<string>, import("@sinclair/typebox").TObject<{
        local: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString<string>>;
        adopted: import("@sinclair/typebox").TString<string>;
    }>>;
}>;
export type AssetStack = Static<typeof AssetStackSchema>;
export type HubMessagingDeployments = {
    RootManager: Deployment;
    MainnetConnector: Deployment;
    HubConnectors: Deployment[];
    WatcherManager: Deployment;
    MerkleTreeManagerForRoot: Deployment;
    MerkleTreeManagerForSpoke: Deployment;
    RelayerProxy: Deployment;
};
export type SpokeMessagingDeployments = {
    SpokeConnector: Deployment;
    MerkleTreeManager: Deployment;
    WatcherManager: Deployment;
    RelayerProxy: Deployment;
};
export type DomainDeployments = {
    Connext: Deployment;
    messaging: HubMessagingDeployments | SpokeMessagingDeployments;
};
export type NetworkStack = {
    chain: string;
    domain: string;
    rpc: providers.JsonRpcProvider;
    deployments: DomainDeployments;
    relayerFeeVault: string;
};
export type ProtocolStack = {
    hub: string;
    networks: NetworkStack[];
    assets: AssetStack[];
    agents?: Agents;
};
export type CallSchema<T> = {
    deployment: Deployment;
    desired?: T;
    read: {
        method: string;
        args?: (number | string)[];
    } | string;
    write?: {
        method: string;
        args?: any[];
    };
    chainData?: any;
    caseSensitive?: boolean;
};
export declare const InitHeaderConfigSchema: import("@sinclair/typebox").TObject<{
    hub: import("@sinclair/typebox").TString<string>;
    assets: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        name: import("@sinclair/typebox").TString<string>;
        canonical: import("@sinclair/typebox").TObject<{
            domain: import("@sinclair/typebox").TString<string>;
            address: import("@sinclair/typebox").TString<string>;
            decimals: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
            cap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString<string>>;
        }>;
        representations: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString<string>, import("@sinclair/typebox").TObject<{
            local: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString<string>>;
            adopted: import("@sinclair/typebox").TString<string>;
        }>>;
    }>>;
    agents: import("@sinclair/typebox").TObject<{
        relayers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
        sequencers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
        routers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
        watchers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
    }>;
}>;
export declare const InitConfigSchema: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TObject<{
    hub: import("@sinclair/typebox").TString<string>;
    assets: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        name: import("@sinclair/typebox").TString<string>;
        canonical: import("@sinclair/typebox").TObject<{
            domain: import("@sinclair/typebox").TString<string>;
            address: import("@sinclair/typebox").TString<string>;
            decimals: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
            cap: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString<string>>;
        }>;
        representations: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString<string>, import("@sinclair/typebox").TObject<{
            local: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString<string>>;
            adopted: import("@sinclair/typebox").TString<string>;
        }>>;
    }>>;
    agents: import("@sinclair/typebox").TObject<{
        relayers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
        sequencers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
        routers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
        watchers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            allowlist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
            blacklist: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>>;
        }>>;
    }>;
}>, import("@sinclair/typebox").TObject<{
    supportedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString<string>>;
}>]>;
export type InitConfig = Static<typeof InitConfigSchema>;
//# sourceMappingURL=types.d.ts.map