import type { VersionContracts } from "./contracts.js"; import { Version } from "./contracts.js"; import type { Network } from "./networks.js"; export declare enum Status { LIVE = "live", PENDING = "pending", DEPRECATED = "deprecated" } export declare const Deployment: { readonly ARBITRUM: "arbitrum"; readonly BASE: "base"; readonly ETHEREUM: "ethereum"; readonly MEGAETH: "megaeth"; readonly PLUME: "plume"; readonly RAYLS: "rayls"; readonly SEPOLIA: "sepolia"; }; export type DeploymentType = (typeof Deployment)[keyof typeof Deployment]; export type DeploymentNetwork = TDeployment extends typeof Deployment.ARBITRUM ? Network.ARBITRUM : TDeployment extends typeof Deployment.BASE ? Network.BASE : TDeployment extends typeof Deployment.ETHEREUM ? Network.ETHEREUM : TDeployment extends typeof Deployment.MEGAETH ? Network.MEGAETH : TDeployment extends typeof Deployment.PLUME ? Network.PLUME : TDeployment extends typeof Deployment.RAYLS ? Network.RAYLS : TDeployment extends typeof Deployment.SEPOLIA ? Network.SEPOLIA : never; export declare function isDeployment(value: unknown): value is DeploymentType; export declare function isRelease(value: unknown): value is Release; export interface ReleaseDefinition { /** * The unique release identifier. */ readonly slug: `${TDeployment}.${TVersion}`; /** * The network identifier. */ readonly network: DeploymentNetwork; /** * The version (e.g. sulu, encore, phoenix) of the release. */ readonly version: TVersion; /** * The block number at which the fund deployer contract was deployed. */ readonly inception: number; /** * Mapping of contract names and their addresses within this release. */ readonly contracts: VersionContracts; /** * The release status (pending, deprecated or live). */ readonly status: Status; } export declare enum Kind { TEST = "test", LIVE = "live" } export interface DeploymentDefinition { /** * The unique deployment identifier. */ readonly slug: TDeployment; /** * The network identifier. */ readonly network: DeploymentNetwork; /** * The kind of the deployment (e.g. testnet or production). */ readonly kind: Kind; /** * The human readable name of the deployment. */ readonly label: string; /** * The block number at which the dispatcher contract was deployed. */ readonly inception: number; /** * List of releases that belong to this deployment. */ readonly releases: Partial<{ readonly [TVersion in Version]: ReleaseDefinition; }>; } export declare function defineDeployment(deployment: DeploymentDefinition): DeploymentDefinition; export type Release = { [TDeployment in DeploymentType]: (typeof releases)[TDeployment][keyof (typeof releases)[TDeployment]]; }[DeploymentType]; export declare const releases: { readonly arbitrum: { readonly one: "arbitrum.one"; }; readonly base: { readonly one: "base.one"; }; readonly ethereum: { readonly one: "ethereum.one"; }; readonly megaeth: { readonly one: "megaeth.one"; }; readonly plume: { readonly one: "plume.one"; }; readonly rayls: { readonly one: "rayls.one"; }; readonly sepolia: { readonly one: "sepolia.one"; }; }; //# sourceMappingURL=releases.d.ts.map