Skip to content

nooschain v0.1.0


nooschain / config/genesis / genesisConfigSchema

Variable: genesisConfigSchema

const genesisConfigSchema: ZodEffects<ZodObject<{ buckets: ZodDefault<ZodArray<ZodObject<{ createdByOrganizationId: ZodString; createdByUserId: ZodString; description: ZodOptional<ZodNullable<ZodString>>; encryptionMode: ZodEnum<["per_bucket_key", "per_record_key"]>; id: ZodString; metadata: ZodDefault<ZodRecord<ZodString, ZodUnknown>>; name: ZodString; replicationPolicy: ZodEnum<["replicate_encrypted_to_all_nodes", "replicate_encrypted_to_authorized_nodes", "metadata_only"]>; }, "strip", ZodTypeAny, { createdByOrganizationId: string; createdByUserId: string; description?: string | null; encryptionMode: "per_bucket_key" | "per_record_key"; id: string; metadata: Record<string, unknown>; name: string; replicationPolicy: "replicate_encrypted_to_all_nodes" | "replicate_encrypted_to_authorized_nodes" | "metadata_only"; }, { createdByOrganizationId: string; createdByUserId: string; description?: string | null; encryptionMode: "per_bucket_key" | "per_record_key"; id: string; metadata?: Record<string, unknown>; name: string; replicationPolicy: "replicate_encrypted_to_all_nodes" | "replicate_encrypted_to_authorized_nodes" | "metadata_only"; }>, "many">>; chainAccessRules: ZodOptional<ZodArray<ZodObject<{ id: ZodString; permissions: ZodArray<ZodLiteral<"chain:admin">, "many">; principalId: ZodString; principalType: ZodEnum<["user", "organization"]>; }, "strip", ZodTypeAny, { id: string; permissions: "chain:admin"[]; principalId: string; principalType: "user" | "organization"; }, { id: string; permissions: "chain:admin"[]; principalId: string; principalType: "user" | "organization"; }>, "many">>; chainId: ZodString; chainName: ZodString; createdAt: ZodEffects<ZodString, string, string>; nodes: ZodArray<ZodObject<{ endpoint: ZodOptional<ZodNullable<ZodString>>; id: ZodString; metadata: ZodDefault<ZodRecord<ZodString, ZodUnknown>>; organizationId: ZodString; publicKey: ZodString; role: ZodEnum<["validator", "observer", "client"]>; status: ZodOptional<ZodEnum<["active", "pending", "suspended"]>>; }, "strip", ZodTypeAny, { endpoint?: string | null; id: string; metadata: Record<string, unknown>; organizationId: string; publicKey: string; role: "validator" | "observer" | "client"; status?: "pending" | "active" | "suspended"; }, { endpoint?: string | null; id: string; metadata?: Record<string, unknown>; organizationId: string; publicKey: string; role: "validator" | "observer" | "client"; status?: "pending" | "active" | "suspended"; }>, "many">; organizations: ZodArray<ZodObject<{ id: ZodString; metadata: ZodDefault<ZodRecord<ZodString, ZodUnknown>>; name: ZodString; publicKey: ZodOptional<ZodNullable<ZodString>>; }, "strip", ZodTypeAny, { id: string; metadata: Record<string, unknown>; name: string; publicKey?: string | null; }, { id: string; metadata?: Record<string, unknown>; name: string; publicKey?: string | null; }>, "many">; protocolVersion: ZodNumber; users: ZodArray<ZodObject<{ displayName: ZodOptional<ZodNullable<ZodString>>; email: ZodOptional<ZodNullable<ZodString>>; id: ZodString; metadata: ZodDefault<ZodRecord<ZodString, ZodUnknown>>; organizationId: ZodString; publicKey: ZodString; }, "strip", ZodTypeAny, { displayName?: string | null; email?: string | null; id: string; metadata: Record<string, unknown>; organizationId: string; publicKey: string; }, { displayName?: string | null; email?: string | null; id: string; metadata?: Record<string, unknown>; organizationId: string; publicKey: string; }>, "many">; validators: ZodArray<ZodObject<{ endpoint: ZodOptional<ZodNullable<ZodString>>; nodeId: ZodString; organizationId: ZodString; publicKey: ZodString; raftHttpUrl: ZodOptional<ZodNullable<ZodString>>; raftTcpAddress: ZodOptional<ZodNullable<ZodString>>; votingPower: ZodOptional<ZodNumber>; }, "strip", ZodTypeAny, { endpoint?: string | null; nodeId: string; organizationId: string; publicKey: string; raftHttpUrl?: string | null; raftTcpAddress?: string | null; votingPower?: number; }, { endpoint?: string | null; nodeId: string; organizationId: string; publicKey: string; raftHttpUrl?: string | null; raftTcpAddress?: string | null; votingPower?: number; }>, "many">; }, "strip", ZodTypeAny, { buckets: object[]; chainAccessRules?: object[]; chainId: string; chainName: string; createdAt: string; nodes: object[]; organizations: object[]; protocolVersion: number; users: object[]; validators: object[]; }, { buckets?: object[]; chainAccessRules?: object[]; chainId: string; chainName: string; createdAt: string; nodes: object[]; organizations: object[]; protocolVersion: number; users: object[]; validators: object[]; }>, { buckets: object[]; chainAccessRules?: object[]; chainId: string; chainName: string; createdAt: string; nodes: object[]; organizations: object[]; protocolVersion: number; users: object[]; validators: object[]; }, { buckets?: object[]; chainAccessRules?: object[]; chainId: string; chainName: string; createdAt: string; nodes: object[]; organizations: object[]; protocolVersion: number; users: object[]; validators: object[]; }>

Defined in: config/genesis.ts:260

Full genesis schema plus cross-reference validation.

The refinement checks protocol support, uniqueness, identity references, validator/node consistency, chain-admin principals, and bucket creator ownership before a node accepts genesis.

Audience-first NOOSChain documentation.