classDiagram

    class Model{
				+CommitHash modelHash
        +Int64 size //bits
        +PublicKey author
				+Int partitionCounts
				+String signatureScheme
				+PublicKey[] inRelays
				+bool isEncrypted   
    }
    class ModelManager{  
				+Int modelCount
  
				+void registerModel(Model modelMeta)
				+Model getModel(CommitHash modelHash)        
    }
ModelManager --> Model

    class Relay{
	    +PublicKey hostKey
			+IP[] ipAddresses
			+String connectionSheme //ssh,ftp, etc
    }
    class RelayManager{    
				+Int relayCount
    
        +Relay getRelay(PublicKey key)
				+void registerRelay(Relay relayMeta)
				+void updateRelay(Relay relayMeta)
				+void depositeStaking(PublicKey relayKey)
        +float lookupStakingAmount(PublicKey relayKey)
				+void deactivateRelay(PublicKey key) //wait 1 month 				
    }
RelayManager --> Relay

    class Author{
        +PublicKey authorKey
        +CommitHash[] publishedModels
    }
    class AuthorManager{  
				+Int authorCount
      
        +Author getAuthor(PublicKey key)
				//+void updateAuthor(Auhtor authorMeta)
    }
AuthorManager --> Author