@coinbase/cdp-sdk
Version:
SDK for interacting with the Coinbase Developer Platform Wallet API
81 lines • 3.29 kB
JavaScript
import { z } from "zod";
import { PrepareUserOperationRuleSchema, SendEvmTransactionRuleSchema, SignEvmHashRuleSchema, SignEvmMessageRuleSchema, SignEvmTransactionRuleSchema, SignEvmTypedDataRuleSchema, SendUserOperationRuleSchema, SignEndUserEvmTransactionRuleSchema, SendEndUserEvmTransactionRuleSchema, SignEndUserEvmMessageRuleSchema, SignEndUserEvmTypedDataRuleSchema, SignEndUserEvmHashRuleSchema, SendEndUserEvmAssetRuleSchema, SendEndUserOperationRuleSchema, CreateEndUserEvmSwapRuleSchema, } from "./evmSchema.js";
import { SendSolTransactionRuleSchema, SignSolTransactionRuleSchema, SignSolMessageRuleSchema, SignEndUserSolTransactionRuleSchema, SendEndUserSolTransactionRuleSchema, SignEndUserSolMessageRuleSchema, SendEndUserSolAssetRuleSchema, } from "./solanaSchema.js";
/**
* Enum for policy scopes
*/
export const PolicyScopeEnum = z.enum(["project", "account"]);
/**
* Schema for policy rules
*/
export const RuleSchema = z.discriminatedUnion("operation", [
SignEvmTransactionRuleSchema,
SignEvmHashRuleSchema,
SignEvmMessageRuleSchema,
SignEvmTypedDataRuleSchema,
SendEvmTransactionRuleSchema,
SignSolTransactionRuleSchema,
SendSolTransactionRuleSchema,
SignSolMessageRuleSchema,
PrepareUserOperationRuleSchema,
SendUserOperationRuleSchema,
SignEndUserEvmTransactionRuleSchema,
SendEndUserEvmTransactionRuleSchema,
SignEndUserEvmMessageRuleSchema,
SignEndUserEvmTypedDataRuleSchema,
SignEndUserEvmHashRuleSchema,
SignEndUserSolTransactionRuleSchema,
SendEndUserSolTransactionRuleSchema,
SignEndUserSolMessageRuleSchema,
SendEndUserEvmAssetRuleSchema,
SendEndUserOperationRuleSchema,
CreateEndUserEvmSwapRuleSchema,
SendEndUserSolAssetRuleSchema,
]);
/** Maximum number of rules allowed in a single policy. */
export const MAX_POLICY_RULES = 100;
/**
* Schema for creating or updating a Policy.
*/
export const CreatePolicyBodySchema = z.object({
/**
* The scope of the policy.
* "project" applies to the entire project, "account" applies to specific accounts.
*/
scope: PolicyScopeEnum,
/**
* An optional human-readable description for the policy.
* Limited to 50 characters of alphanumeric characters, spaces, commas, and periods.
*/
description: z
.string()
.regex(/^[A-Za-z0-9 ,.]{1,50}$/)
.optional(),
/**
* Array of rules that comprise the policy.
* Limited to a maximum of 100 rules per policy.
*/
rules: z
.array(RuleSchema)
.max(MAX_POLICY_RULES, { message: `A policy can have at most ${MAX_POLICY_RULES} rules` })
.min(1),
});
export const UpdatePolicyBodySchema = z.object({
/**
* An optional human-readable description for the policy.
* Limited to 50 characters of alphanumeric characters, spaces, commas, and periods.
*/
description: z
.string()
.regex(/^[A-Za-z0-9 ,.]{1,50}$/)
.optional(),
/**
* Array of rules that comprise the policy.
* Limited to a maximum of 100 rules per policy.
*/
rules: z
.array(RuleSchema)
.max(MAX_POLICY_RULES, { message: `A policy can have at most ${MAX_POLICY_RULES} rules` })
.min(1),
});
//# sourceMappingURL=types.js.map