class google.registry.model.CreateAutoTimestamp {
  org.joda.time.DateTime timestamp;
}
class google.registry.model.UpdateAutoTimestamp {
  org.joda.time.DateTime timestamp;
}
class google.registry.model.billing.BillingEvent$Cancellation {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$OneTime> refOneTime;
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$Recurring> refRecurring;
  google.registry.model.billing.BillingEvent$Reason reason;
  java.lang.String clientId;
  java.lang.String targetId;
  java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
  org.joda.time.DateTime billingTime;
  org.joda.time.DateTime eventTime;
}
enum google.registry.model.billing.BillingEvent$Flag {
  ALLOCATION;
  ANCHOR_TENANT;
  AUTO_RENEW;
  LANDRUSH;
  RESERVED;
  SUNRISE;
  SYNTHETIC;
}
class google.registry.model.billing.BillingEvent$Modification {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$OneTime> eventRef;
  google.registry.model.billing.BillingEvent$Reason reason;
  java.lang.String clientId;
  java.lang.String description;
  java.lang.String targetId;
  java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
  org.joda.money.Money cost;
  org.joda.time.DateTime eventTime;
}
class google.registry.model.billing.BillingEvent$OneTime {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
  com.googlecode.objectify.Key<? extends google.registry.model.billing.BillingEvent> cancellationMatchingBillingEvent;
  com.googlecode.objectify.Key<google.registry.model.domain.token.AllocationToken> allocationToken;
  google.registry.model.billing.BillingEvent$Reason reason;
  java.lang.Integer periodYears;
  java.lang.String clientId;
  java.lang.String targetId;
  java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
  org.joda.money.Money cost;
  org.joda.time.DateTime billingTime;
  org.joda.time.DateTime eventTime;
  org.joda.time.DateTime syntheticCreationTime;
}
enum google.registry.model.billing.BillingEvent$Reason {
  CREATE;
  ERROR;
  FEE_EARLY_ACCESS;
  RENEW;
  RESTORE;
  SERVER_STATUS;
  TRANSFER;
}
class google.registry.model.billing.BillingEvent$Recurring {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
  google.registry.model.billing.BillingEvent$Reason reason;
  google.registry.model.common.TimeOfYear recurrenceTimeOfYear;
  java.lang.String clientId;
  java.lang.String targetId;
  java.util.Set<google.registry.model.billing.BillingEvent$Flag> flags;
  org.joda.time.DateTime eventTime;
  org.joda.time.DateTime recurrenceEndTime;
}
class google.registry.model.common.Cursor {
  @Id java.lang.String id;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  google.registry.model.UpdateAutoTimestamp lastUpdateTime;
  org.joda.time.DateTime cursorTime;
}
class google.registry.model.common.EntityGroupRoot {
  @Id java.lang.String id;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
}
class google.registry.model.common.GaeUserIdConverter {
  @Id long id;
  com.google.appengine.api.users.User user;
}
class google.registry.model.common.TimeOfYear {
  java.lang.String timeString;
}
class google.registry.model.contact.ContactAddress {
  java.lang.String city;
  java.lang.String countryCode;
  java.lang.String state;
  java.lang.String zip;
  java.util.List<java.lang.String> street;
}
class google.registry.model.contact.ContactAuthInfo {
  google.registry.model.eppcommon.AuthInfo$PasswordAuth pw;
}
class google.registry.model.contact.ContactPhoneNumber {
  java.lang.String extension;
  java.lang.String phoneNumber;
}
class google.registry.model.contact.ContactResource {
  @Id java.lang.String repoId;
  com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest>> revisions;
  google.registry.model.CreateAutoTimestamp creationTime;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  google.registry.model.contact.ContactAuthInfo authInfo;
  google.registry.model.contact.ContactPhoneNumber fax;
  google.registry.model.contact.ContactPhoneNumber voice;
  google.registry.model.contact.Disclose disclose;
  google.registry.model.contact.PostalInfo internationalizedPostalInfo;
  google.registry.model.contact.PostalInfo localizedPostalInfo;
  google.registry.model.transfer.TransferData transferData;
  java.lang.String contactId;
  java.lang.String creationClientId;
  java.lang.String currentSponsorClientId;
  java.lang.String email;
  java.lang.String lastEppUpdateClientId;
  java.lang.String searchName;
  java.util.Set<google.registry.model.eppcommon.StatusValue> status;
  org.joda.time.DateTime deletionTime;
  org.joda.time.DateTime lastEppUpdateTime;
  org.joda.time.DateTime lastTransferTime;
}
class google.registry.model.contact.Disclose {
  google.registry.model.eppcommon.PresenceMarker email;
  google.registry.model.eppcommon.PresenceMarker fax;
  google.registry.model.eppcommon.PresenceMarker voice;
  java.lang.Boolean flag;
  java.util.List<google.registry.model.contact.Disclose$PostalInfoChoice> addr;
  java.util.List<google.registry.model.contact.Disclose$PostalInfoChoice> name;
  java.util.List<google.registry.model.contact.Disclose$PostalInfoChoice> org;
}
class google.registry.model.contact.Disclose$PostalInfoChoice {
  google.registry.model.contact.PostalInfo$Type type;
}
class google.registry.model.contact.PostalInfo {
  google.registry.model.contact.ContactAddress address;
  google.registry.model.contact.PostalInfo$Type type;
  java.lang.String name;
  java.lang.String org;
}
enum google.registry.model.contact.PostalInfo$Type {
  INTERNATIONALIZED;
  LOCALIZED;
}
class google.registry.model.domain.DesignatedContact {
  com.googlecode.objectify.Key<google.registry.model.contact.ContactResource> contact;
  google.registry.model.domain.DesignatedContact$Type type;
}
enum google.registry.model.domain.DesignatedContact$Type {
  ADMIN;
  BILLING;
  REGISTRANT;
  TECH;
}
class google.registry.model.domain.DomainAuthInfo {
  google.registry.model.eppcommon.AuthInfo$PasswordAuth pw;
}
class google.registry.model.domain.DomainBase {
  @Id java.lang.String repoId;
  com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest>> revisions;
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$Recurring> autorenewBillingEvent;
  com.googlecode.objectify.Key<google.registry.model.poll.PollMessage$Autorenew> autorenewPollMessage;
  com.googlecode.objectify.Key<google.registry.model.poll.PollMessage$OneTime> deletePollMessage;
  google.registry.model.CreateAutoTimestamp creationTime;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  google.registry.model.domain.DomainAuthInfo authInfo;
  google.registry.model.domain.launch.LaunchNotice launchNotice;
  google.registry.model.transfer.TransferData transferData;
  java.lang.String creationClientId;
  java.lang.String currentSponsorClientId;
  java.lang.String fullyQualifiedDomainName;
  java.lang.String idnTableName;
  java.lang.String lastEppUpdateClientId;
  java.lang.String smdId;
  java.lang.String tld;
  java.util.Set<com.googlecode.objectify.Key<google.registry.model.host.HostResource>> nsHosts;
  java.util.Set<google.registry.model.domain.DesignatedContact> allContacts;
  java.util.Set<google.registry.model.domain.GracePeriod> gracePeriods;
  java.util.Set<google.registry.model.domain.secdns.DelegationSignerData> dsData;
  java.util.Set<google.registry.model.eppcommon.StatusValue> status;
  java.util.Set<java.lang.String> subordinateHosts;
  org.joda.time.DateTime deletionTime;
  org.joda.time.DateTime lastEppUpdateTime;
  org.joda.time.DateTime lastTransferTime;
  org.joda.time.DateTime registrationExpirationTime;
}
class google.registry.model.domain.GracePeriod {
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$OneTime> billingEventOneTime;
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$Recurring> billingEventRecurring;
  google.registry.model.domain.rgp.GracePeriodStatus type;
  java.lang.String clientId;
  org.joda.time.DateTime expirationTime;
}
class google.registry.model.domain.Period {
  google.registry.model.domain.Period$Unit unit;
  java.lang.Integer value;
}
enum google.registry.model.domain.Period$Unit {
  MONTHS;
  YEARS;
}
class google.registry.model.domain.launch.LaunchNotice {
  google.registry.model.domain.launch.LaunchNotice$NoticeIdType noticeId;
  org.joda.time.DateTime acceptedTime;
  org.joda.time.DateTime expirationTime;
}
class google.registry.model.domain.launch.LaunchNotice$NoticeIdType {
  java.lang.String tcnId;
  java.lang.String validatorId;
}
enum google.registry.model.domain.rgp.GracePeriodStatus {
  ADD;
  AUTO_RENEW;
  PENDING_DELETE;
  PENDING_RESTORE;
  REDEMPTION;
  RENEW;
  TRANSFER;
}
class google.registry.model.domain.secdns.DelegationSignerData {
  byte[] digest;
  int algorithm;
  int digestType;
  int keyTag;
}
class google.registry.model.domain.token.AllocationToken {
  @Id java.lang.String token;
  com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> redemptionHistoryEntry;
  double discountFraction;
  google.registry.model.CreateAutoTimestamp creationTime;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  google.registry.model.common.TimedTransitionProperty<google.registry.model.domain.token.AllocationToken$TokenStatus, google.registry.model.domain.token.AllocationToken$TokenStatusTransition> tokenStatusTransitions;
  google.registry.model.domain.token.AllocationToken$TokenType tokenType;
  java.lang.String domainName;
  java.util.Set<java.lang.String> allowedClientIds;
  java.util.Set<java.lang.String> allowedTlds;
}
enum google.registry.model.domain.token.AllocationToken$TokenStatus {
  CANCELLED;
  ENDED;
  NOT_STARTED;
  VALID;
}
class google.registry.model.domain.token.AllocationToken$TokenStatusTransition {
  google.registry.model.domain.token.AllocationToken$TokenStatus tokenStatus;
  org.joda.time.DateTime transitionTime;
}
enum google.registry.model.domain.token.AllocationToken$TokenType {
  SINGLE_USE;
  UNLIMITED_USE;
}
class google.registry.model.eppcommon.AuthInfo$PasswordAuth {
  java.lang.String repoId;
  java.lang.String value;
}
class google.registry.model.eppcommon.PresenceMarker {
  boolean marked;
}
enum google.registry.model.eppcommon.StatusValue {
  CLIENT_DELETE_PROHIBITED;
  CLIENT_HOLD;
  CLIENT_RENEW_PROHIBITED;
  CLIENT_TRANSFER_PROHIBITED;
  CLIENT_UPDATE_PROHIBITED;
  INACTIVE;
  LINKED;
  OK;
  PENDING_CREATE;
  PENDING_DELETE;
  PENDING_TRANSFER;
  PENDING_UPDATE;
  SERVER_DELETE_PROHIBITED;
  SERVER_HOLD;
  SERVER_RENEW_PROHIBITED;
  SERVER_TRANSFER_PROHIBITED;
  SERVER_UPDATE_PROHIBITED;
}
class google.registry.model.eppcommon.Trid {
  java.lang.String clientTransactionId;
  java.lang.String serverTransactionId;
}
class google.registry.model.host.HostResource {
  @Id java.lang.String repoId;
  com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest>> revisions;
  com.googlecode.objectify.Key<google.registry.model.domain.DomainBase> superordinateDomain;
  google.registry.model.CreateAutoTimestamp creationTime;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  java.lang.String creationClientId;
  java.lang.String currentSponsorClientId;
  java.lang.String fullyQualifiedHostName;
  java.lang.String lastEppUpdateClientId;
  java.util.Set<google.registry.model.eppcommon.StatusValue> status;
  java.util.Set<java.net.InetAddress> inetAddresses;
  org.joda.time.DateTime deletionTime;
  org.joda.time.DateTime lastEppUpdateTime;
  org.joda.time.DateTime lastSuperordinateChange;
  org.joda.time.DateTime lastTransferTime;
}
class google.registry.model.index.EppResourceIndex {
  @Id java.lang.String id;
  @Parent com.googlecode.objectify.Key<google.registry.model.index.EppResourceIndexBucket> bucket;
  com.googlecode.objectify.Key<? extends google.registry.model.EppResource> reference;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  java.lang.String kind;
}
class google.registry.model.index.EppResourceIndexBucket {
  @Id long bucketId;
}
class google.registry.model.index.ForeignKeyIndex$ForeignKeyContactIndex {
  @Id java.lang.String foreignKey;
  com.googlecode.objectify.Key<E> topReference;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  org.joda.time.DateTime deletionTime;
}
class google.registry.model.index.ForeignKeyIndex$ForeignKeyDomainIndex {
  @Id java.lang.String foreignKey;
  com.googlecode.objectify.Key<E> topReference;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  org.joda.time.DateTime deletionTime;
}
class google.registry.model.index.ForeignKeyIndex$ForeignKeyHostIndex {
  @Id java.lang.String foreignKey;
  com.googlecode.objectify.Key<E> topReference;
  google.registry.model.UpdateAutoTimestamp updateTimestamp;
  org.joda.time.DateTime deletionTime;
}
class google.registry.model.ofy.CommitLogBucket {
  @Id long bucketNum;
  org.joda.time.DateTime lastWrittenTime;
}
class google.registry.model.ofy.CommitLogCheckpoint {
  @Id long checkpointTime;
  @Parent com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogCheckpointRoot> parent;
  java.util.List<org.joda.time.DateTime> bucketTimestamps;
}
class google.registry.model.ofy.CommitLogCheckpointRoot {
  @Id long id;
  org.joda.time.DateTime lastWrittenTime;
}
class google.registry.model.ofy.CommitLogManifest {
  @Id long commitTime;
  @Parent com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogBucket> parent;
  java.util.Set<com.googlecode.objectify.Key<?>> deletions;
}
class google.registry.model.ofy.CommitLogMutation {
  @Id java.lang.String entityKey;
  @Parent com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest> parent;
  byte[] entityProtoBytes;
}
class google.registry.model.poll.PendingActionNotificationResponse$ContactPendingActionNotificationResponse {
  google.registry.model.eppcommon.Trid trid;
  google.registry.model.poll.PendingActionNotificationResponse$NameOrId nameOrId;
  org.joda.time.DateTime processedDate;
}
class google.registry.model.poll.PendingActionNotificationResponse$DomainPendingActionNotificationResponse {
  google.registry.model.eppcommon.Trid trid;
  google.registry.model.poll.PendingActionNotificationResponse$NameOrId nameOrId;
  org.joda.time.DateTime processedDate;
}
class google.registry.model.poll.PendingActionNotificationResponse$HostPendingActionNotificationResponse {
  google.registry.model.eppcommon.Trid trid;
  google.registry.model.poll.PendingActionNotificationResponse$NameOrId nameOrId;
  org.joda.time.DateTime processedDate;
}
class google.registry.model.poll.PendingActionNotificationResponse$NameOrId {
  boolean actionResult;
  java.lang.String value;
}
class google.registry.model.poll.PollMessage {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
  java.lang.String clientId;
  java.lang.String msg;
  org.joda.time.DateTime eventTime;
}
class google.registry.model.poll.PollMessage$Autorenew {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
  java.lang.String clientId;
  java.lang.String msg;
  java.lang.String targetId;
  org.joda.time.DateTime autorenewEndTime;
  org.joda.time.DateTime eventTime;
}
class google.registry.model.poll.PollMessage$OneTime {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.reporting.HistoryEntry> parent;
  java.lang.String clientId;
  java.lang.String msg;
  java.util.List<google.registry.model.poll.PendingActionNotificationResponse$ContactPendingActionNotificationResponse> contactPendingActionNotificationResponses;
  java.util.List<google.registry.model.poll.PendingActionNotificationResponse$DomainPendingActionNotificationResponse> domainPendingActionNotificationResponses;
  java.util.List<google.registry.model.poll.PendingActionNotificationResponse$HostPendingActionNotificationResponse> hostPendingActionNotificationResponses;
  java.util.List<google.registry.model.transfer.TransferResponse$ContactTransferResponse> contactTransferResponses;
  java.util.List<google.registry.model.transfer.TransferResponse$DomainTransferResponse> domainTransferResponses;
  org.joda.time.DateTime eventTime;
}
class google.registry.model.rde.RdeRevision {
  @Id java.lang.String id;
  int revision;
}
class google.registry.model.registrar.Registrar {
  @Id java.lang.String clientIdentifier;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  boolean blockPremiumNames;
  boolean contactsRequireSyncing;
  boolean registryLockAllowed;
  google.registry.model.CreateAutoTimestamp creationTime;
  google.registry.model.UpdateAutoTimestamp lastUpdateTime;
  google.registry.model.registrar.Registrar$State state;
  google.registry.model.registrar.Registrar$Type type;
  google.registry.model.registrar.RegistrarAddress internationalizedAddress;
  google.registry.model.registrar.RegistrarAddress localizedAddress;
  java.lang.Long billingIdentifier;
  java.lang.Long ianaIdentifier;
  java.lang.String clientCertificate;
  java.lang.String clientCertificateHash;
  java.lang.String driveFolderId;
  java.lang.String emailAddress;
  java.lang.String failoverClientCertificate;
  java.lang.String failoverClientCertificateHash;
  java.lang.String faxNumber;
  java.lang.String icannReferralEmail;
  java.lang.String passwordHash;
  java.lang.String phoneNumber;
  java.lang.String phonePasscode;
  java.lang.String poNumber;
  java.lang.String registrarName;
  java.lang.String salt;
  java.lang.String url;
  java.lang.String whoisServer;
  java.util.List<google.registry.util.CidrAddressBlock> ipAddressWhitelist;
  java.util.Map<org.joda.money.CurrencyUnit, google.registry.model.registrar.Registrar$BillingAccountEntry> billingAccountMap;
  java.util.Set<java.lang.String> allowedTlds;
  java.util.Set<java.lang.String> rdapBaseUrls;
  org.joda.time.DateTime lastCertificateUpdateTime;
}
class google.registry.model.registrar.Registrar$BillingAccountEntry {
  java.lang.String accountId;
  org.joda.money.CurrencyUnit currency;
}
enum google.registry.model.registrar.Registrar$State {
  ACTIVE;
  DISABLED;
  PENDING;
  SUSPENDED;
}
enum google.registry.model.registrar.Registrar$Type {
  EXTERNAL_MONITORING;
  INTERNAL;
  MONITORING;
  OTE;
  PDT;
  REAL;
  TEST;
}
class google.registry.model.registrar.RegistrarAddress {
  java.lang.String city;
  java.lang.String countryCode;
  java.lang.String state;
  java.lang.String zip;
  java.util.List<java.lang.String> street;
}
class google.registry.model.registrar.RegistrarContact {
  @Id java.lang.String emailAddress;
  @Parent com.googlecode.objectify.Key<google.registry.model.registrar.Registrar> parent;
  boolean allowedToSetRegistryLockPassword;
  boolean visibleInDomainWhoisAsAbuse;
  boolean visibleInWhoisAsAdmin;
  boolean visibleInWhoisAsTech;
  java.lang.String faxNumber;
  java.lang.String gaeUserId;
  java.lang.String name;
  java.lang.String phoneNumber;
  java.lang.String registryLockEmailAddress;
  java.lang.String registryLockPasswordHash;
  java.lang.String registryLockPasswordSalt;
  java.util.Set<google.registry.model.registrar.RegistrarContact$Type> types;
}
enum google.registry.model.registrar.RegistrarContact$Type {
  ABUSE;
  ADMIN;
  BILLING;
  LEGAL;
  MARKETING;
  TECH;
  WHOIS;
}
class google.registry.model.registry.Registry {
  @Id java.lang.String tldStrId;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  boolean dnsPaused;
  boolean escrowEnabled;
  com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList> premiumList;
  google.registry.model.CreateAutoTimestamp creationTime;
  google.registry.model.common.TimedTransitionProperty<google.registry.model.registry.Registry$TldState, google.registry.model.registry.Registry$TldStateTransition> tldStateTransitions;
  google.registry.model.common.TimedTransitionProperty<org.joda.money.Money, google.registry.model.registry.Registry$BillingCostTransition> eapFeeSchedule;
  google.registry.model.common.TimedTransitionProperty<org.joda.money.Money, google.registry.model.registry.Registry$BillingCostTransition> renewBillingCostTransitions;
  google.registry.model.registry.Registry$TldType tldType;
  int numDnsPublishLocks;
  java.lang.String driveFolderId;
  java.lang.String lordnUsername;
  java.lang.String pricingEngineClassName;
  java.lang.String roidSuffix;
  java.lang.String tldStr;
  java.lang.String tldUnicode;
  java.util.Set<com.googlecode.objectify.Key<google.registry.model.registry.label.ReservedList>> reservedLists;
  java.util.Set<java.lang.String> allowedFullyQualifiedHostNames;
  java.util.Set<java.lang.String> allowedRegistrantContactIds;
  java.util.Set<java.lang.String> dnsWriters;
  org.joda.money.CurrencyUnit currency;
  org.joda.money.Money createBillingCost;
  org.joda.money.Money restoreBillingCost;
  org.joda.money.Money serverStatusChangeBillingCost;
  org.joda.time.DateTime claimsPeriodEnd;
  org.joda.time.Duration addGracePeriodLength;
  org.joda.time.Duration anchorTenantAddGracePeriodLength;
  org.joda.time.Duration autoRenewGracePeriodLength;
  org.joda.time.Duration automaticTransferLength;
  org.joda.time.Duration pendingDeleteLength;
  org.joda.time.Duration redemptionGracePeriodLength;
  org.joda.time.Duration renewGracePeriodLength;
  org.joda.time.Duration transferGracePeriodLength;
}
class google.registry.model.registry.Registry$BillingCostTransition {
  org.joda.money.Money billingCost;
  org.joda.time.DateTime transitionTime;
}
enum google.registry.model.registry.Registry$TldState {
  GENERAL_AVAILABILITY;
  PDT;
  PREDELEGATION;
  QUIET_PERIOD;
  START_DATE_SUNRISE;
}
class google.registry.model.registry.Registry$TldStateTransition {
  google.registry.model.registry.Registry$TldState tldState;
  org.joda.time.DateTime transitionTime;
}
enum google.registry.model.registry.Registry$TldType {
  REAL;
  TEST;
}
class google.registry.model.registry.label.PremiumList {
  @Id java.lang.String name;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList$PremiumListRevision> revisionKey;
  org.joda.time.DateTime creationTime;
  org.joda.time.DateTime lastUpdateTime;
}
class google.registry.model.registry.label.PremiumList$PremiumListEntry {
  @Id java.lang.String label;
  @Parent com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList$PremiumListRevision> parent;
  java.lang.String comment;
  org.joda.money.Money price;
}
class google.registry.model.registry.label.PremiumList$PremiumListRevision {
  @Id long revisionId;
  @Parent com.googlecode.objectify.Key<google.registry.model.registry.label.PremiumList> parent;
  com.google.common.hash.BloomFilter<java.lang.String> probablePremiumLabels;
}
enum google.registry.model.registry.label.ReservationType {
  ALLOWED_IN_SUNRISE;
  FULLY_BLOCKED;
  NAME_COLLISION;
  RESERVED_FOR_ANCHOR_TENANT;
  RESERVED_FOR_SPECIFIC_USE;
}
class google.registry.model.registry.label.ReservedList {
  @Id java.lang.String name;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  boolean shouldPublish;
  java.util.Map<java.lang.String, google.registry.model.registry.label.ReservedList$ReservedListEntry> reservedListMap;
  org.joda.time.DateTime creationTime;
  org.joda.time.DateTime lastUpdateTime;
}
class google.registry.model.registry.label.ReservedList$ReservedListEntry {
  @Id java.lang.String label;
  google.registry.model.registry.label.ReservationType reservationType;
  java.lang.String comment;
}
class google.registry.model.reporting.DomainTransactionRecord {
  google.registry.model.reporting.DomainTransactionRecord$TransactionReportField reportField;
  java.lang.Integer reportAmount;
  java.lang.String tld;
  org.joda.time.DateTime reportingTime;
}
enum google.registry.model.reporting.DomainTransactionRecord$TransactionReportField {
  DELETED_DOMAINS_GRACE;
  DELETED_DOMAINS_NOGRACE;
  NET_ADDS_10_YR;
  NET_ADDS_1_YR;
  NET_ADDS_2_YR;
  NET_ADDS_3_YR;
  NET_ADDS_4_YR;
  NET_ADDS_5_YR;
  NET_ADDS_6_YR;
  NET_ADDS_7_YR;
  NET_ADDS_8_YR;
  NET_ADDS_9_YR;
  NET_RENEWS_10_YR;
  NET_RENEWS_1_YR;
  NET_RENEWS_2_YR;
  NET_RENEWS_3_YR;
  NET_RENEWS_4_YR;
  NET_RENEWS_5_YR;
  NET_RENEWS_6_YR;
  NET_RENEWS_7_YR;
  NET_RENEWS_8_YR;
  NET_RENEWS_9_YR;
  RESTORED_DOMAINS;
  TRANSFER_NACKED;
  TRANSFER_SUCCESSFUL;
}
class google.registry.model.reporting.HistoryEntry {
  @Id long id;
  @Parent com.googlecode.objectify.Key<? extends google.registry.model.EppResource> parent;
  boolean bySuperuser;
  byte[] xmlBytes;
  google.registry.model.domain.Period period;
  google.registry.model.eppcommon.Trid trid;
  google.registry.model.reporting.HistoryEntry$Type type;
  java.lang.Boolean requestedByRegistrar;
  java.lang.String clientId;
  java.lang.String otherClientId;
  java.lang.String reason;
  java.util.Set<google.registry.model.reporting.DomainTransactionRecord> domainTransactionRecords;
  org.joda.time.DateTime modificationTime;
}
enum google.registry.model.reporting.HistoryEntry$Type {
  CONTACT_CREATE;
  CONTACT_DELETE;
  CONTACT_DELETE_FAILURE;
  CONTACT_PENDING_DELETE;
  CONTACT_TRANSFER_APPROVE;
  CONTACT_TRANSFER_CANCEL;
  CONTACT_TRANSFER_REJECT;
  CONTACT_TRANSFER_REQUEST;
  CONTACT_UPDATE;
  DOMAIN_ALLOCATE;
  DOMAIN_AUTORENEW;
  DOMAIN_CREATE;
  DOMAIN_DELETE;
  DOMAIN_RENEW;
  DOMAIN_RESTORE;
  DOMAIN_TRANSFER_APPROVE;
  DOMAIN_TRANSFER_CANCEL;
  DOMAIN_TRANSFER_REJECT;
  DOMAIN_TRANSFER_REQUEST;
  DOMAIN_UPDATE;
  HOST_CREATE;
  HOST_DELETE;
  HOST_DELETE_FAILURE;
  HOST_PENDING_DELETE;
  HOST_UPDATE;
  RDE_IMPORT;
  SYNTHETIC;
}
class google.registry.model.server.KmsSecret {
  @Id java.lang.String name;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  com.googlecode.objectify.Key<google.registry.model.server.KmsSecretRevision> latestRevision;
}
class google.registry.model.server.KmsSecretRevision {
  @Id long revisionKey;
  @Parent com.googlecode.objectify.Key<google.registry.model.server.KmsSecret> parent;
  google.registry.model.CreateAutoTimestamp creationTime;
  java.lang.String encryptedValue;
  java.lang.String kmsCryptoKeyVersionName;
}
class google.registry.model.server.Lock {
  @Id java.lang.String lockId;
  java.lang.String requestLogId;
  java.lang.String resourceName;
  java.lang.String tld;
  org.joda.time.DateTime acquiredTime;
  org.joda.time.DateTime expirationTime;
}
class google.registry.model.server.ServerSecret {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  long leastSignificant;
  long mostSignificant;
}
class google.registry.model.smd.SignedMarkRevocationList {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  java.util.Map<java.lang.String, org.joda.time.DateTime> revokes;
  org.joda.time.DateTime creationTime;
}
class google.registry.model.tmch.ClaimsListShard {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.tmch.ClaimsListShard$ClaimsListRevision> parent;
  java.util.Map<java.lang.String, java.lang.String> labelsToKeys;
  org.joda.time.DateTime creationTime;
}
class google.registry.model.tmch.ClaimsListShard$ClaimsListRevision {
  @Id long versionId;
  @Parent com.googlecode.objectify.Key<google.registry.model.tmch.ClaimsListShard$ClaimsListSingleton> parent;
}
class google.registry.model.tmch.ClaimsListShard$ClaimsListSingleton {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  com.googlecode.objectify.Key<google.registry.model.tmch.ClaimsListShard$ClaimsListRevision> activeRevision;
}
class google.registry.model.tmch.TmchCrl {
  @Id long id;
  @Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
  java.lang.String crl;
  java.lang.String url;
  org.joda.time.DateTime updated;
}
class google.registry.model.transfer.TransferData {
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$OneTime> serverApproveBillingEvent;
  com.googlecode.objectify.Key<google.registry.model.billing.BillingEvent$Recurring> serverApproveAutorenewEvent;
  com.googlecode.objectify.Key<google.registry.model.poll.PollMessage$Autorenew> serverApproveAutorenewPollMessage;
  google.registry.model.domain.Period transferPeriod;
  google.registry.model.eppcommon.Trid transferRequestTrid;
  google.registry.model.transfer.TransferStatus transferStatus;
  java.lang.String gainingClientId;
  java.lang.String losingClientId;
  java.util.Set<com.googlecode.objectify.Key<? extends google.registry.model.transfer.TransferData$TransferServerApproveEntity>> serverApproveEntities;
  org.joda.time.DateTime pendingTransferExpirationTime;
  org.joda.time.DateTime transferRequestTime;
  org.joda.time.DateTime transferredRegistrationExpirationTime;
}
class google.registry.model.transfer.TransferResponse$ContactTransferResponse {
  google.registry.model.transfer.TransferStatus transferStatus;
  java.lang.String contactId;
  java.lang.String gainingClientId;
  java.lang.String losingClientId;
  org.joda.time.DateTime pendingTransferExpirationTime;
  org.joda.time.DateTime transferRequestTime;
}
class google.registry.model.transfer.TransferResponse$DomainTransferResponse {
  google.registry.model.transfer.TransferStatus transferStatus;
  java.lang.String fullyQualifiedDomainName;
  java.lang.String gainingClientId;
  java.lang.String losingClientId;
  org.joda.time.DateTime extendedRegistrationExpirationTime;
  org.joda.time.DateTime pendingTransferExpirationTime;
  org.joda.time.DateTime transferRequestTime;
}
enum google.registry.model.transfer.TransferStatus {
  CLIENT_APPROVED;
  CLIENT_CANCELLED;
  CLIENT_REJECTED;
  PENDING;
  SERVER_APPROVED;
  SERVER_CANCELLED;
}
