1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Change, GroupChange, RecentContact, UpcomingBirthday, GroupChoice, and
# Snapshot are Data classes, whose members the inline parser cannot read
# (see sig/pro_tacts/contact.rbs). Store itself is an ordinary class and
# its types are inline in store.rb.
module ProTacts
  class Store
    class Change
      attr_reader sequence: Integer
      attr_reader card_id: String
      attr_reader action: String
      attr_reader etag: String?
      attr_reader diff: CardDiff
      attr_reader created_at: String

      def self.new: (sequence: Integer, card_id: String, action: String, etag: String?, diff: CardDiff, created_at: String) -> instance
    end

    class GroupChange
      attr_reader sequence: Integer
      attr_reader group_id: String
      attr_reader action: String
      attr_reader detail: Hash[String, untyped]
      attr_reader created_at: String

      def self.new: (sequence: Integer, group_id: String, action: String, detail: Hash[String, untyped], created_at: String) -> instance
    end

    class RecentContact
      attr_reader contact: ListedContact
      attr_reader updated_at: String

      def self.new: (contact: ListedContact, updated_at: String) -> instance
    end

    class UpcomingBirthday
      attr_reader contact: ListedContact
      attr_reader occurs_on: Date

      def self.new: (contact: ListedContact, occurs_on: Date) -> instance
    end

    class GroupChoice
      attr_reader id: String
      attr_reader name: String?
      attr_reader label: String
      attr_reader member_count: Integer

      def self.new: (id: String, name: String?, label: String, member_count: Integer) -> instance
    end

    class Snapshot
      attr_reader cards: Hash[String, String]
      attr_reader birthdays: Hash[String, Birthday]
      attr_reader groups: Array[Group]
      attr_reader group_photos: Hash[String, Contact::Photo]
      attr_reader books: Hash[String, String]

      def self.new: (cards: Hash[String, String], birthdays: Hash[String, Birthday], groups: Array[Group], group_photos: Hash[String, Contact::Photo], books: Hash[String, String]) -> instance
    end
  end
end