nooschain / config/genesis / genesisConfigSchema
Variable: genesisConfigSchema
constgenesisConfigSchema: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>>;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.