UNPKG

@phala/cloud

Version:
209 lines 8.15 kB
import { z } from "zod"; import { type Client, type SafeResult } from "../client"; import { ActionParameters, ActionReturnType } from "../types/common"; /** * Commit CVM Provision (Create CVM from provisioned data) * * This action creates a CVM using previously provisioned data and encrypted environment variables. * It should be called after `provisionCvm` to complete the CVM deployment process. * * @example * ```typescript * import { createClient, provisionCvm, commitCvmProvision } from '@phala/cloud' * * const client = createClient(); * * // First, provision the CVM * const provision = await provisionCvm(client, appCompose); * * // Then, commit the provision with encrypted environment variables * const cvm = await commitCvmProvision(client, { * encrypted_env: "hex-encoded-encrypted-environment-data", // String, not array * app_id: provision.app_id, * compose_hash: provision.compose_hash, * kms_id: "your-kms-id", * contract_address: "0x123...", * deployer_address: "0x456..." * }); * * console.log(cvm.id); * ``` * * ## Returns * * `CommitCvmProvision | unknown` * * The created CVM details including id, name, status, and other metadata. Return type depends on schema parameter. * * ## Parameters * * ### schema (optional) * * - **Type:** `ZodSchema | false` * - **Default:** `CommitCvmProvisionSchema` * * Schema to validate the response. Use `false` to return raw data without validation. * * ```typescript * // Use default schema * const result = await commitCvmProvision(client, payload) * * // Return raw data without validation * const raw = await commitCvmProvision(client, payload, { schema: false }) * * // Use custom schema * const customSchema = z.object({ id: z.number(), name: z.string() }) * const custom = await commitCvmProvision(client, payload, { schema: customSchema }) * ``` * * ## Safe Version * * Use `safeCommitCvmProvision` for error handling without exceptions: * * ```typescript * import { safeCommitCvmProvision } from '@phala/cloud' * * const result = await safeCommitCvmProvision(client, payload) * if (result.success) { * console.log(result.data) * } else { * if ("isRequestError" in result.error) { * console.error(`HTTP ${result.error.status}: ${result.error.message}`) * } else { * console.error(`Validation error: ${result.error.issues}`) * } * } * ``` */ export declare const CommitCvmProvisionSchema: z.ZodObject<{ id: z.ZodNumber; name: z.ZodString; status: z.ZodString; teepod_id: z.ZodNumber; teepod: z.ZodNullable<z.ZodObject<{ id: z.ZodNumber; name: z.ZodString; }, "strip", z.ZodTypeAny, { id: number; name: string; }, { id: number; name: string; }>>; user_id: z.ZodNullable<z.ZodNumber>; app_id: z.ZodNullable<z.ZodString>; vm_uuid: z.ZodNullable<z.ZodString>; instance_id: z.ZodNullable<z.ZodString>; app_url: z.ZodNullable<z.ZodString>; base_image: z.ZodNullable<z.ZodString>; vcpu: z.ZodNumber; memory: z.ZodNumber; disk_size: z.ZodNumber; manifest_version: z.ZodNullable<z.ZodNumber>; version: z.ZodNullable<z.ZodString>; runner: z.ZodNullable<z.ZodString>; docker_compose_file: z.ZodNullable<z.ZodString>; features: z.ZodNullable<z.ZodArray<z.ZodString, "many">>; created_at: z.ZodString; encrypted_env_pubkey: z.ZodOptional<z.ZodNullable<z.ZodString>>; app_auth_contract_address: z.ZodOptional<z.ZodNullable<z.ZodString>>; deployer_address: z.ZodOptional<z.ZodNullable<z.ZodString>>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ id: z.ZodNumber; name: z.ZodString; status: z.ZodString; teepod_id: z.ZodNumber; teepod: z.ZodNullable<z.ZodObject<{ id: z.ZodNumber; name: z.ZodString; }, "strip", z.ZodTypeAny, { id: number; name: string; }, { id: number; name: string; }>>; user_id: z.ZodNullable<z.ZodNumber>; app_id: z.ZodNullable<z.ZodString>; vm_uuid: z.ZodNullable<z.ZodString>; instance_id: z.ZodNullable<z.ZodString>; app_url: z.ZodNullable<z.ZodString>; base_image: z.ZodNullable<z.ZodString>; vcpu: z.ZodNumber; memory: z.ZodNumber; disk_size: z.ZodNumber; manifest_version: z.ZodNullable<z.ZodNumber>; version: z.ZodNullable<z.ZodString>; runner: z.ZodNullable<z.ZodString>; docker_compose_file: z.ZodNullable<z.ZodString>; features: z.ZodNullable<z.ZodArray<z.ZodString, "many">>; created_at: z.ZodString; encrypted_env_pubkey: z.ZodOptional<z.ZodNullable<z.ZodString>>; app_auth_contract_address: z.ZodOptional<z.ZodNullable<z.ZodString>>; deployer_address: z.ZodOptional<z.ZodNullable<z.ZodString>>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ id: z.ZodNumber; name: z.ZodString; status: z.ZodString; teepod_id: z.ZodNumber; teepod: z.ZodNullable<z.ZodObject<{ id: z.ZodNumber; name: z.ZodString; }, "strip", z.ZodTypeAny, { id: number; name: string; }, { id: number; name: string; }>>; user_id: z.ZodNullable<z.ZodNumber>; app_id: z.ZodNullable<z.ZodString>; vm_uuid: z.ZodNullable<z.ZodString>; instance_id: z.ZodNullable<z.ZodString>; app_url: z.ZodNullable<z.ZodString>; base_image: z.ZodNullable<z.ZodString>; vcpu: z.ZodNumber; memory: z.ZodNumber; disk_size: z.ZodNumber; manifest_version: z.ZodNullable<z.ZodNumber>; version: z.ZodNullable<z.ZodString>; runner: z.ZodNullable<z.ZodString>; docker_compose_file: z.ZodNullable<z.ZodString>; features: z.ZodNullable<z.ZodArray<z.ZodString, "many">>; created_at: z.ZodString; encrypted_env_pubkey: z.ZodOptional<z.ZodNullable<z.ZodString>>; app_auth_contract_address: z.ZodOptional<z.ZodNullable<z.ZodString>>; deployer_address: z.ZodOptional<z.ZodNullable<z.ZodString>>; }, z.ZodTypeAny, "passthrough">>; export type CommitCvmProvision = z.infer<typeof CommitCvmProvisionSchema>; export declare const CommitCvmProvisionRequestSchema: z.ZodObject<{ encrypted_env: z.ZodNullable<z.ZodOptional<z.ZodString>>; app_id: z.ZodString; compose_hash: z.ZodOptional<z.ZodString>; kms_id: z.ZodOptional<z.ZodString>; contract_address: z.ZodOptional<z.ZodString>; deployer_address: z.ZodOptional<z.ZodString>; env_keys: z.ZodNullable<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ encrypted_env: z.ZodNullable<z.ZodOptional<z.ZodString>>; app_id: z.ZodString; compose_hash: z.ZodOptional<z.ZodString>; kms_id: z.ZodOptional<z.ZodString>; contract_address: z.ZodOptional<z.ZodString>; deployer_address: z.ZodOptional<z.ZodString>; env_keys: z.ZodNullable<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ encrypted_env: z.ZodNullable<z.ZodOptional<z.ZodString>>; app_id: z.ZodString; compose_hash: z.ZodOptional<z.ZodString>; kms_id: z.ZodOptional<z.ZodString>; contract_address: z.ZodOptional<z.ZodString>; deployer_address: z.ZodOptional<z.ZodString>; env_keys: z.ZodNullable<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>; }, z.ZodTypeAny, "passthrough">>; export type CommitCvmProvisionRequest = z.infer<typeof CommitCvmProvisionRequestSchema>; export type CommitCvmProvisionParameters<T = undefined> = ActionParameters<T>; export type CommitCvmProvisionReturnType<T = undefined> = ActionReturnType<CommitCvmProvision, T>; export declare function commitCvmProvision<T extends z.ZodSchema | false | undefined = undefined>(client: Client, payload: CommitCvmProvisionRequest, parameters?: CommitCvmProvisionParameters<T>): Promise<CommitCvmProvisionReturnType<T>>; export declare function safeCommitCvmProvision<T extends z.ZodSchema | false | undefined = undefined>(client: Client, payload: CommitCvmProvisionRequest, parameters?: CommitCvmProvisionParameters<T>): Promise<SafeResult<CommitCvmProvisionReturnType<T>>>; //# sourceMappingURL=commit_cvm_provision.d.ts.map