UNPKG

@sschepis/resolang

Version:

ResoLang - Core quantum resonance computation library

398 lines (349 loc) 9.13 kB
/** * Identity and Domain System for the Prime Resonance Network * Main export file for all identity-related components */ // Export interfaces export { // Core interfaces IIdentity, IDomain, IDomainObject, IObjectProperties, IPermission, IRole, // KYC interfaces IKYCProvider, KYCVerificationResult, // Audit interfaces IAuditEntry, // Recovery interfaces IIdentityRecovery, // Session interfaces ISession, // Registry interfaces IDomainRegistry, // Enums IdentityType, KYCLevel, KYCVerificationStatus, PermissionScope, AuditAction, AuditResult, RecoveryMethod } from "./interfaces"; // Export types export { // Type aliases IdentityId, DomainId, ObjectId, Timestamp, // Creation parameters IdentityCreationParams, DomainCreationParams, ObjectCreationParams, // Request types TransferRequest, PermissionRequest, AuthCredentials, AuthResult, RecoveryRequest, // Constants GlobalPermissions, SystemRoles, IdentityErrorCode, IdentityEventType, IdentityMetadataKey, DomainMetadataKey, // Utilities IdGenerator, PermissionBuilder, PermissionDefinition, AccessDecision } from "./types"; // Export implementations export { // Identity classes Identity, SelfSovereignIdentity, ManagedIdentity } from "./identity"; export { // Domain classes Domain, RootDomain } from "./domain"; export { // Object classes DomainObject, FungibleObject, NonFungibleObject } from "./domain-object"; export { // Permission and role classes Permission, Role, PermissionEvaluator } from "./permissions"; // Export new components that don't conflict with existing exports export { // KYC System AutomatedKYCProvider, ManualKYCProvider } from "./kyc-provider"; export { // Prime Mapping IdentityPrimeMapper, globalPrimeMapper } from "./prime-mapping"; export { // Ownership Transfer (excluding duplicates) TransferType, TransferStatus, OwnershipTransferManager, globalTransferManager } from "./ownership-transfer"; export { // Audit Trail AuditEntry, AuditEventType, AuditSeverity, globalAuditTrail } from "./audit-trail"; export { // ResoLang Integration IdentityQuantumState, QuantumPermissionEvaluator, QuantumTransferProcessor, QuantumIdentityRecovery, QuantumAuditProcessor, IdentityResoLangProcessor, globalResoLangProcessor, quantumCheckPermission, quantumProcessTransfer, quantumRecoverIdentity, quantumCreateAuditEntry, quantumVerifyAuditIntegrity } from "./resolang-processor"; export { // Identity Recovery (excluding duplicates) RecoveryConfig, RecoveryStatus, IdentityRecoveryManager, globalRecoveryManager } from "./identity-recovery"; export { // Domain Registry DomainRecord, DomainStatus, DomainNameRules, DomainRegistry } from "./domain-registry"; export { // Permission Inheritance InheritanceMode, InheritanceRule, DomainPermissionContext, PermissionInheritanceManager, globalPermissionInheritance } from "./permission-inheritance"; export { // Authentication AuthMethod, SessionStatus, AuthChallenge, AuthSession, QuantumAuthenticator, AuthenticationManager, globalAuthManager } from "./authentication"; // Re-export ValidationResult from core validation export { ValidationResult } from "../core/validation"; // Import for internal use in factory import { Identity } from "./identity"; import { Domain, RootDomain } from "./domain"; import { DomainObject, FungibleObject, NonFungibleObject } from "./domain-object"; import { Permission, Role, PermissionEvaluator } from "./permissions"; import { PermissionScope } from "./interfaces"; import { DomainCreationParams, ObjectCreationParams, GlobalPermissions, SystemRoles } from "./types"; /** * Factory class for creating identity system components */ export class IdentitySystemFactory { /** * Create a new self-sovereign identity */ static createSelfSovereignIdentity(metadata: Map<string, string> = new Map<string, string>()): Identity { return Identity.createSelfSovereign(metadata); } /** * Create a new managed identity */ static createManagedIdentity( creatorId: string, domainId: string, metadata: Map<string, string> = new Map<string, string>() ): Identity { return Identity.createManaged(creatorId, domainId, metadata); } /** * Create a new domain */ static createDomain(name: string, ownerId: string, parentId: string | null = null): Domain { const params = new DomainCreationParams(name, ownerId); params.parentId = parentId; return new Domain(params); } /** * Create a new root domain */ static createRootDomain(name: string, ownerId: string): RootDomain { const params = new DomainCreationParams(name, ownerId); return new RootDomain(params); } /** * Create a new domain object */ static createDomainObject( type: string, ownerId: string, domainId: string, fungible: boolean = false, transferable: boolean = true, destructible: boolean = true ): DomainObject { const params = new ObjectCreationParams(type, ownerId, domainId); params.fungible = fungible; params.transferable = transferable; params.destructible = destructible; return new DomainObject(params); } /** * Create a new fungible object */ static createFungibleObject( type: string, ownerId: string, domainId: string, amount: f64, decimals: i32 = 18, symbol: string = "" ): FungibleObject { const params = new ObjectCreationParams(type, ownerId, domainId); return new FungibleObject(params, amount, decimals, symbol); } /** * Create a new non-fungible object */ static createNonFungibleObject( type: string, ownerId: string, domainId: string, tokenId: string, metadata: Map<string, string> = new Map<string, string>(), uri: string | null = null ): NonFungibleObject { const params = new ObjectCreationParams(type, ownerId, domainId); return new NonFungibleObject(params, tokenId, metadata, uri); } /** * Create a new permission */ static createPermission( id: string, name: string, description: string, scope: PermissionScope = PermissionScope.GLOBAL ): Permission { return Permission.create(id, name, description, scope); } /** * Create a new role */ static createRole( name: string, description: string, domainId: string | null = null ): Role { return new Role(name, description, domainId); } /** * Create standard global permissions */ static createGlobalPermissions(): Map<string, Permission> { return Permission.createGlobalPermissions(); } /** * Create standard system roles */ static createSystemRoles(globalPermissions: Map<string, Permission>): Map<string, Role> { return Role.createSystemRoles(globalPermissions); } /** * Create a permission evaluator */ static createPermissionEvaluator(): PermissionEvaluator { return new PermissionEvaluator(); } } /** * Example usage of the identity system */ export function exampleUsage(): void { // Create a self-sovereign identity const userMetadata = new Map<string, string>(); userMetadata.set("email", "user@example.com"); userMetadata.set("full_name", "John Doe"); const user = IdentitySystemFactory.createSelfSovereignIdentity(userMetadata); console.log("Created user: " + user.getId()); // Create a root domain const domain = IdentitySystemFactory.createRootDomain("example.com", user.getId()); console.log("Created domain: " + domain.getId()); // Create a subdomain const subdomain = domain.createSubdomain("app", user.getId()); console.log("Created subdomain: " + subdomain.getId()); // Create a fungible object (token) const token = IdentitySystemFactory.createFungibleObject( "token", user.getId(), domain.getId(), 1000.0, 18, "TKN" ); console.log("Created token: " + token.getId()); // Create a non-fungible object (NFT) const nftMetadata = new Map<string, string>(); nftMetadata.set("name", "My NFT"); nftMetadata.set("description", "A unique digital asset"); const nft = IdentitySystemFactory.createNonFungibleObject( "nft", user.getId(), domain.getId(), "NFT-001", nftMetadata, "https://example.com/nft/001" ); console.log("Created NFT: " + nft.getId()); // Create permissions and roles const permissions = IdentitySystemFactory.createGlobalPermissions(); const roles = IdentitySystemFactory.createSystemRoles(permissions); // Create a permission evaluator const evaluator = IdentitySystemFactory.createPermissionEvaluator(); // Check permissions const domainOwnerRole = roles.get(SystemRoles.DOMAIN_OWNER); if (domainOwnerRole) { const canTransfer = evaluator.hasPermission( [], [domainOwnerRole], GlobalPermissions.DOMAIN_TRANSFER, domain.getId() ); console.log("Can transfer domain: " + canTransfer.toString()); } }