@phala/cloud
Version:
TypeScript SDK for Phala Cloud API
209 lines • 8.15 kB
TypeScript
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