import { type PublicReleaseRingId } from '@happier-dev/release-runtime/releaseRings';
import type { FirstPartyRuntimeKind } from './runtimeKinds.js';
export declare const FIRST_PARTY_COMPONENT_IDS: readonly ["happier-cli", "happier-daemon", "happier-server", "hstack"];
export type FirstPartyComponentId = (typeof FIRST_PARTY_COMPONENT_IDS)[number];
export interface FirstPartyComponentCatalogEntry {
    id: FirstPartyComponentId;
    runtimeKind: FirstPartyRuntimeKind;
    executableBaseName: string;
    releaseProductName: string;
    rollingReleasePrefix: string;
    installRootName: string;
    retainVersions: number;
    nodeEntrypointRelativePath: string | null;
    binaryRelativePath: string;
    installShims: readonly string[];
    installShimOverrides?: Partial<Record<PublicReleaseRingId, readonly string[]>>;
    prefersManagedNodeFallback: boolean;
}
export interface FirstPartyComponentPublicReleaseVariant {
    channel: PublicReleaseRingId;
    releaseTag: string;
    installRootName: string;
    installShims: readonly string[];
}
export declare const firstPartyComponentCatalog: {
    readonly 'happier-cli': {
        readonly id: "happier-cli";
        readonly runtimeKind: "binary";
        readonly executableBaseName: "happier";
        readonly releaseProductName: "happier";
        readonly rollingReleasePrefix: "cli";
        readonly installRootName: "cli";
        readonly retainVersions: 2;
        readonly nodeEntrypointRelativePath: "package-dist/index.mjs";
        readonly binaryRelativePath: "happier";
        readonly installShims: readonly ["happier"];
        readonly installShimOverrides: {
            readonly preview: readonly ["hprev"];
            readonly publicdev: readonly ["hdev"];
        };
        readonly prefersManagedNodeFallback: false;
    };
    readonly 'happier-daemon': {
        readonly id: "happier-daemon";
        readonly runtimeKind: "node-runtime-payload";
        readonly executableBaseName: "happier";
        readonly releaseProductName: "happier";
        readonly rollingReleasePrefix: "cli";
        readonly installRootName: "cli";
        readonly retainVersions: 2;
        readonly nodeEntrypointRelativePath: "package-dist/index.mjs";
        readonly binaryRelativePath: "happier";
        readonly installShims: readonly ["happier"];
        readonly installShimOverrides: {
            readonly preview: readonly ["hprev"];
            readonly publicdev: readonly ["hdev"];
        };
        readonly prefersManagedNodeFallback: true;
    };
    readonly 'happier-server': {
        readonly id: "happier-server";
        readonly runtimeKind: "binary";
        readonly executableBaseName: "happier-server";
        readonly releaseProductName: "happier-server";
        readonly rollingReleasePrefix: "server";
        readonly installRootName: "server";
        readonly retainVersions: 2;
        readonly nodeEntrypointRelativePath: null;
        readonly binaryRelativePath: "happier-server";
        readonly installShims: readonly ["happier-server"];
        readonly prefersManagedNodeFallback: false;
    };
    readonly hstack: {
        readonly id: "hstack";
        readonly runtimeKind: "binary";
        readonly executableBaseName: "hstack";
        readonly releaseProductName: "hstack";
        readonly rollingReleasePrefix: "stack";
        readonly installRootName: "stack";
        readonly retainVersions: 2;
        readonly nodeEntrypointRelativePath: null;
        readonly binaryRelativePath: "hstack";
        readonly installShims: readonly ["hstack"];
        readonly prefersManagedNodeFallback: false;
    };
};
export declare function getFirstPartyComponentCatalogEntry(componentId: FirstPartyComponentId): FirstPartyComponentCatalogEntry;
export declare function listFirstPartyComponentCatalogEntries(): readonly FirstPartyComponentCatalogEntry[];
export declare function resolveFirstPartyComponentPublicReleaseVariant(params: Readonly<{
    componentId: FirstPartyComponentId;
    channel: PublicReleaseRingId;
}>): FirstPartyComponentPublicReleaseVariant;
//# sourceMappingURL=componentCatalog.d.ts.map