import type { ManagementApiClient, paths } from "@prisma/management-api-sdk";
import { Result } from "better-result";
import { ApiError, AuthenticationError, CancelledError } from "./errors.ts";
export type ApiClientError = CancelledError | AuthenticationError | ApiError;
/**
 * Lean internal wrapper around ManagementApiClient.
 *
 * Provides typed, domain-specific methods with structured error handling.
 * Has no knowledge of OAuth, service tokens, or token storage — it simply
 * uses the ManagementApiClient it was given.
 */
export declare class InternalApiClient {
    #private;
    constructor(client: ManagementApiClient);
    listProjects(signal?: AbortSignal): Promise<Result<{
        id: string;
        type: "project";
        url: string;
        name: string;
        logicalId: string | null;
        createdAt: string;
        defaultRegion: string | null;
        workspace: {
            id: string;
            url: string;
            name: string;
        };
    }[], ApiClientError>>;
    createProject(body: CreateProjectBody, signal?: AbortSignal): Promise<import("better-result").Ok<{
        id: string;
        type: "project";
        url: string;
        name: string;
        logicalId: string | null;
        createdAt: string;
        defaultRegion: string | null;
        workspace: {
            id: string;
            url: string;
            name: string;
        };
        database: {
            id: string;
            type: "database";
            url: string;
            name: string;
            status: "provisioning" | "ready";
            createdAt: string;
            isDefault: boolean;
            defaultConnectionId: string | null;
            connections: {
                id: string;
                type: "connection";
                url: string;
                name: string;
                createdAt: string;
                kind: "postgres" | "accelerate";
                endpoints: {
                    direct?: {
                        host: string;
                        port: number;
                        connectionString?: string;
                    };
                    pooled?: {
                        host: string;
                        port: number;
                        connectionString?: string;
                    };
                    accelerate?: {
                        host: string;
                        port: number;
                        connectionString?: string;
                    };
                };
                directConnection?: {
                    host: string;
                    pass: string;
                    user: string;
                } | null;
                database: {
                    id: string;
                    url: string;
                    name: string;
                };
            }[];
            region: {
                id: string;
                name: string;
            };
            source: {
                type: "empty";
            } | {
                type: "backup";
                databaseId: string;
                backupId: string;
            } | {
                type: "database";
                databaseId: string;
            } | null;
            branchId: string | null;
            apiKeys: {
                id: string;
                type: "connection";
                url: string;
                name: string;
                createdAt: string;
                kind: "postgres" | "accelerate";
                endpoints: {
                    direct?: {
                        host: string;
                        port: number;
                    };
                    pooled?: {
                        host: string;
                        port: number;
                    };
                    accelerate?: {
                        host: string;
                        port: number;
                    };
                };
                connectionString: string;
                directConnection?: {
                    host: string;
                    pass: string;
                    user: string;
                } | null;
            }[];
            connectionString: string | null;
            directConnection: {
                host: string;
                pass: string;
                user: string;
            } | null;
        } | null;
    }, ApiClientError> | import("better-result").Err<{
        id: string;
        type: "project";
        url: string;
        name: string;
        logicalId: string | null;
        createdAt: string;
        defaultRegion: string | null;
        workspace: {
            id: string;
            url: string;
            name: string;
        };
        database: {
            id: string;
            type: "database";
            url: string;
            name: string;
            status: "provisioning" | "ready";
            createdAt: string;
            isDefault: boolean;
            defaultConnectionId: string | null;
            connections: {
                id: string;
                type: "connection";
                url: string;
                name: string;
                createdAt: string;
                kind: "postgres" | "accelerate";
                endpoints: {
                    direct?: {
                        host: string;
                        port: number;
                        connectionString?: string;
                    };
                    pooled?: {
                        host: string;
                        port: number;
                        connectionString?: string;
                    };
                    accelerate?: {
                        host: string;
                        port: number;
                        connectionString?: string;
                    };
                };
                directConnection?: {
                    host: string;
                    pass: string;
                    user: string;
                } | null;
                database: {
                    id: string;
                    url: string;
                    name: string;
                };
            }[];
            region: {
                id: string;
                name: string;
            };
            source: {
                type: "empty";
            } | {
                type: "backup";
                databaseId: string;
                backupId: string;
            } | {
                type: "database";
                databaseId: string;
            } | null;
            branchId: string | null;
            apiKeys: {
                id: string;
                type: "connection";
                url: string;
                name: string;
                createdAt: string;
                kind: "postgres" | "accelerate";
                endpoints: {
                    direct?: {
                        host: string;
                        port: number;
                    };
                    pooled?: {
                        host: string;
                        port: number;
                    };
                    accelerate?: {
                        host: string;
                        port: number;
                    };
                };
                connectionString: string;
                directConnection?: {
                    host: string;
                    pass: string;
                    user: string;
                } | null;
            }[];
            connectionString: string | null;
            directConnection: {
                host: string;
                pass: string;
                user: string;
            } | null;
        } | null;
    }, ApiClientError>>;
    getProject(id: string, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "project";
        url: string;
        name: string;
        logicalId: string | null;
        createdAt: string;
        defaultRegion: string | null;
        workspace: {
            id: string;
            url: string;
            name: string;
        };
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "project";
        url: string;
        name: string;
        logicalId: string | null;
        createdAt: string;
        defaultRegion: string | null;
        workspace: {
            id: string;
            url: string;
            name: string;
        };
    }, ApiClientError>>;
    listProjectApps(projectId: string, signal?: AbortSignal): Promise<Result<{
        id: string;
        type: "app";
        url: string;
        name: string;
        region: {
            id: string;
            name: string;
        };
        projectId: string;
        branchId: string | null;
        latestDeploymentId: string | null;
        appEndpointDomain: string;
        createdAt: string;
    }[], ApiClientError>>;
    createProjectApp(projectId: string, body: CreateProjectAppBody, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "app";
        url: string;
        name: string;
        region: {
            id: string;
            name: string;
        };
        projectId: string;
        branchId: string | null;
        latestDeploymentId: string | null;
        appEndpointDomain: string;
        createdAt: string;
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "app";
        url: string;
        name: string;
        region: {
            id: string;
            name: string;
        };
        projectId: string;
        branchId: string | null;
        latestDeploymentId: string | null;
        appEndpointDomain: string;
        createdAt: string;
    }, ApiClientError>>;
    getApp(appId: string, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "app";
        url: string;
        name: string;
        region: {
            id: string;
            name: string;
        };
        projectId: string;
        branchId: string | null;
        latestDeploymentId: string | null;
        appEndpointDomain: string;
        createdAt: string;
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "app";
        url: string;
        name: string;
        region: {
            id: string;
            name: string;
        };
        projectId: string;
        branchId: string | null;
        latestDeploymentId: string | null;
        appEndpointDomain: string;
        createdAt: string;
    }, ApiClientError>>;
    getBranch(branchId: string, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "branch";
        url: string;
        gitName: string;
        isDefault: boolean;
        role: "production" | "preview";
        createdAt: string;
        updatedAt: string;
        project: {
            id: string;
            url: string;
            name: string;
        };
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "branch";
        url: string;
        gitName: string;
        isDefault: boolean;
        role: "production" | "preview";
        createdAt: string;
        updatedAt: string;
        project: {
            id: string;
            url: string;
            name: string;
        };
    }, ApiClientError>>;
    deleteApp(appId: string, signal?: AbortSignal): Promise<Result<void, ApiClientError>>;
    listAppDeployments(appId: string, signal?: AbortSignal): Promise<Result<{
        id: string;
        type: "deployment";
        url: string;
        serviceId: string;
        foundryVersionId: string;
        createdAt: string;
    }[], ApiClientError>>;
    createAppDeployment(appId: string, body?: CreateAppDeploymentBody, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "deployment";
        url: string;
        foundryVersionId: string;
        uploadUrl: string | null;
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "deployment";
        url: string;
        foundryVersionId: string;
        uploadUrl: string | null;
    }, ApiClientError>>;
    getDeployment(deploymentId: string, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "deployment";
        url: string;
        serviceId: string;
        foundryVersionId: string;
        status: string;
        previewDomain: string | null;
        envVars?: {
            [key: string]: string;
        };
        portMapping?: {
            http?: number;
        };
        createdAt: string;
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "deployment";
        url: string;
        serviceId: string;
        foundryVersionId: string;
        status: string;
        previewDomain: string | null;
        envVars?: {
            [key: string]: string;
        };
        portMapping?: {
            http?: number;
        };
        createdAt: string;
    }, ApiClientError>>;
    startDeployment(deploymentId: string, signal?: AbortSignal): Promise<import("better-result").Err<{
        previewDomain: string;
    }, ApiClientError> | import("better-result").Ok<{
        previewDomain: string;
    }, ApiClientError>>;
    stopDeployment(deploymentId: string, signal?: AbortSignal): Promise<Result<void, ApiClientError>>;
    deleteDeployment(deploymentId: string, signal?: AbortSignal): Promise<Result<void, ApiClientError>>;
    promoteApp(appId: string, body: PromoteAppBody, signal?: AbortSignal): Promise<import("better-result").Err<{
        appEndpointDomain: string;
        reassignedDomains: number;
    }, ApiClientError> | import("better-result").Ok<{
        appEndpointDomain: string;
        reassignedDomains: number;
    }, ApiClientError>>;
    listEnvironmentVariables(query: ListEnvironmentVariablesQuery, signal?: AbortSignal): Promise<Result<{
        id: string;
        type: "environment-variable";
        url: string;
        projectId: string;
        branchId: string | null;
        class: "production" | "preview";
        key: string;
        valueKid: string;
        isManagedBySystem: boolean;
        createdAt: string;
        updatedAt: string;
    }[], ApiClientError>>;
    createEnvironmentVariable(body: CreateEnvironmentVariableBody, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "environment-variable";
        url: string;
        projectId: string;
        branchId: string | null;
        class: "production" | "preview";
        key: string;
        valueKid: string;
        isManagedBySystem: boolean;
        createdAt: string;
        updatedAt: string;
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "environment-variable";
        url: string;
        projectId: string;
        branchId: string | null;
        class: "production" | "preview";
        key: string;
        valueKid: string;
        isManagedBySystem: boolean;
        createdAt: string;
        updatedAt: string;
    }, ApiClientError>>;
    updateEnvironmentVariable(envVarId: string, body: UpdateEnvironmentVariableBody, signal?: AbortSignal): Promise<import("better-result").Err<{
        id: string;
        type: "environment-variable";
        url: string;
        projectId: string;
        branchId: string | null;
        class: "production" | "preview";
        key: string;
        valueKid: string;
        isManagedBySystem: boolean;
        createdAt: string;
        updatedAt: string;
    }, ApiClientError> | import("better-result").Ok<{
        id: string;
        type: "environment-variable";
        url: string;
        projectId: string;
        branchId: string | null;
        class: "production" | "preview";
        key: string;
        valueKid: string;
        isManagedBySystem: boolean;
        createdAt: string;
        updatedAt: string;
    }, ApiClientError>>;
    deleteEnvironmentVariable(envVarId: string, signal?: AbortSignal): Promise<Result<void, ApiClientError>>;
}
type SdkCreateProjectBody = NonNullable<paths["/v1/projects"]["post"]["requestBody"]>["content"]["application/json"];
type CreateProjectBody = Omit<SdkCreateProjectBody, "region"> & {
    region?: string;
};
type SdkCreateAppBody = NonNullable<paths["/v1/apps"]["post"]["requestBody"]>["content"]["application/json"];
type CreateProjectAppBody = Omit<SdkCreateAppBody, "regionId" | "projectId"> & {
    regionId?: string;
};
export type CreateAppDeploymentBody = NonNullable<paths["/v1/apps/{appId}/deployments"]["post"]["requestBody"]>["content"]["application/json"];
export type PromoteAppBody = NonNullable<paths["/v1/apps/{appId}/promote"]["post"]["requestBody"]>["content"]["application/json"];
type ListEnvironmentVariablesQuery = NonNullable<paths["/v1/environment-variables"]["get"]["parameters"]["query"]>;
type CreateEnvironmentVariableBody = NonNullable<paths["/v1/environment-variables"]["post"]["requestBody"]>["content"]["application/json"];
type UpdateEnvironmentVariableBody = NonNullable<paths["/v1/environment-variables/{envVarId}"]["patch"]["requestBody"]>["content"]["application/json"];
/** Extract the upload URL from a deployment creation response. */
export declare function readUploadUrl(data: {
    uploadUrl?: string | null;
}): string | null;
/** Normalize a preview domain to a clickable https URL. */
export declare function toDeploymentUrl(value: string): string;
export {};
//# sourceMappingURL=api-client.d.ts.map