x-twitter-scraper 0.7.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +3 -3
  4. data/lib/x_twitter_scraper/models/credit_topup_balance_response.rb +5 -5
  5. data/lib/x_twitter_scraper/models/draw_export_params.rb +8 -3
  6. data/lib/x_twitter_scraper/models/draw_list_params.rb +2 -2
  7. data/lib/x_twitter_scraper/models/error.rb +8 -0
  8. data/lib/x_twitter_scraper/models/event_list_params.rb +13 -5
  9. data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +731 -82
  10. data/lib/x_twitter_scraper/models/extraction_estimate_cost_response.rb +1 -0
  11. data/lib/x_twitter_scraper/models/extraction_export_results_params.rb +145 -1
  12. data/lib/x_twitter_scraper/models/extraction_list_params.rb +2 -2
  13. data/lib/x_twitter_scraper/models/extraction_retrieve_params.rb +70 -3
  14. data/lib/x_twitter_scraper/models/extraction_run_params.rb +662 -1
  15. data/lib/x_twitter_scraper/models/extraction_run_response.rb +27 -48
  16. data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +8 -8
  17. data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +9 -9
  18. data/lib/x_twitter_scraper/models/monitor.rb +29 -1
  19. data/lib/x_twitter_scraper/models/paginated_tweets.rb +4 -4
  20. data/lib/x_twitter_scraper/models/paginated_users.rb +5 -5
  21. data/lib/x_twitter_scraper/models/support/attachment_download_params.rb +28 -0
  22. data/lib/x_twitter_scraper/models/x/community_retrieve_members_params.rb +113 -1
  23. data/lib/x_twitter_scraper/models/x/community_retrieve_moderators_params.rb +117 -1
  24. data/lib/x_twitter_scraper/models/x/list_retrieve_followers_params.rb +117 -6
  25. data/lib/x_twitter_scraper/models/x/list_retrieve_members_params.rb +116 -1
  26. data/lib/x_twitter_scraper/models/x/tweet_get_favoriters_params.rb +117 -6
  27. data/lib/x_twitter_scraper/models/x/tweet_get_quotes_params.rb +153 -1
  28. data/lib/x_twitter_scraper/models/x/tweet_get_replies_params.rb +246 -16
  29. data/lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb +3 -2
  30. data/lib/x_twitter_scraper/models/x/tweet_get_retweeters_params.rb +117 -6
  31. data/lib/x_twitter_scraper/models/x/tweet_search_params.rb +187 -14
  32. data/lib/x_twitter_scraper/models/x/tweet_search_response.rb +299 -0
  33. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_params.rb +143 -10
  34. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_response.rb +241 -0
  35. data/lib/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rb +117 -6
  36. data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +143 -10
  37. data/lib/x_twitter_scraper/models/x/user_retrieve_following_response.rb +241 -0
  38. data/lib/x_twitter_scraper/models/x/user_retrieve_likes_params.rb +153 -1
  39. data/lib/x_twitter_scraper/models/x/user_retrieve_media_params.rb +153 -1
  40. data/lib/x_twitter_scraper/models/x/user_retrieve_mentions_params.rb +153 -1
  41. data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +159 -7
  42. data/lib/x_twitter_scraper/models/x/user_retrieve_search_params.rb +116 -1
  43. data/lib/x_twitter_scraper/models/x/user_retrieve_tweets_params.rb +159 -7
  44. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rb +157 -8
  45. data/lib/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rb +245 -0
  46. data/lib/x_twitter_scraper/models/x/x_account.rb +7 -11
  47. data/lib/x_twitter_scraper/resources/credits.rb +2 -2
  48. data/lib/x_twitter_scraper/resources/draws.rb +5 -2
  49. data/lib/x_twitter_scraper/resources/events.rb +10 -4
  50. data/lib/x_twitter_scraper/resources/extractions.rb +383 -84
  51. data/lib/x_twitter_scraper/resources/guest_wallets.rb +9 -13
  52. data/lib/x_twitter_scraper/resources/support/attachments.rb +42 -0
  53. data/lib/x_twitter_scraper/resources/support.rb +5 -0
  54. data/lib/x_twitter_scraper/resources/x/communities.rb +95 -4
  55. data/lib/x_twitter_scraper/resources/x/lists.rb +96 -5
  56. data/lib/x_twitter_scraper/resources/x/tweets.rb +286 -28
  57. data/lib/x_twitter_scraper/resources/x/users.rb +531 -41
  58. data/lib/x_twitter_scraper/version.rb +1 -1
  59. data/lib/x_twitter_scraper.rb +7 -1
  60. data/rbi/x_twitter_scraper/models/credit_topup_balance_response.rbi +6 -6
  61. data/rbi/x_twitter_scraper/models/draw_export_params.rbi +6 -3
  62. data/rbi/x_twitter_scraper/models/draw_list_params.rbi +2 -2
  63. data/rbi/x_twitter_scraper/models/error.rbi +40 -0
  64. data/rbi/x_twitter_scraper/models/event_list_params.rbi +15 -4
  65. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_params.rbi +1338 -86
  66. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_response.rbi +5 -0
  67. data/rbi/x_twitter_scraper/models/extraction_export_results_params.rbi +198 -0
  68. data/rbi/x_twitter_scraper/models/extraction_list_params.rbi +2 -2
  69. data/rbi/x_twitter_scraper/models/extraction_retrieve_params.rbi +194 -2
  70. data/rbi/x_twitter_scraper/models/extraction_run_params.rbi +1221 -0
  71. data/rbi/x_twitter_scraper/models/extraction_run_response.rbi +35 -162
  72. data/rbi/x_twitter_scraper/models/guest_wallet_create_response.rbi +8 -6
  73. data/rbi/x_twitter_scraper/models/guest_wallet_topup_response.rbi +9 -7
  74. data/rbi/x_twitter_scraper/models/monitor.rbi +54 -3
  75. data/rbi/x_twitter_scraper/models/paginated_tweets.rbi +4 -4
  76. data/rbi/x_twitter_scraper/models/paginated_users.rbi +5 -5
  77. data/rbi/x_twitter_scraper/models/support/attachment_download_params.rbi +51 -0
  78. data/rbi/x_twitter_scraper/models/x/community_retrieve_members_params.rbi +154 -0
  79. data/rbi/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbi +154 -0
  80. data/rbi/x_twitter_scraper/models/x/list_retrieve_followers_params.rbi +160 -8
  81. data/rbi/x_twitter_scraper/models/x/list_retrieve_members_params.rbi +154 -0
  82. data/rbi/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbi +160 -8
  83. data/rbi/x_twitter_scraper/models/x/tweet_get_quotes_params.rbi +209 -0
  84. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_params.rbi +403 -20
  85. data/rbi/x_twitter_scraper/models/x/tweet_get_replies_response.rbi +3 -2
  86. data/rbi/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbi +160 -8
  87. data/rbi/x_twitter_scraper/models/x/tweet_search_params.rbi +279 -16
  88. data/rbi/x_twitter_scraper/models/x/tweet_search_response.rbi +543 -0
  89. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_params.rbi +228 -12
  90. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_response.rbi +440 -0
  91. data/rbi/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbi +160 -8
  92. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_params.rbi +228 -12
  93. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_response.rbi +440 -0
  94. data/rbi/x_twitter_scraper/models/x/user_retrieve_likes_params.rbi +209 -0
  95. data/rbi/x_twitter_scraper/models/x/user_retrieve_media_params.rbi +209 -0
  96. data/rbi/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbi +209 -0
  97. data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +217 -8
  98. data/rbi/x_twitter_scraper/models/x/user_retrieve_search_params.rbi +154 -0
  99. data/rbi/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbi +217 -8
  100. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbi +248 -10
  101. data/rbi/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbi +440 -0
  102. data/rbi/x_twitter_scraper/models/x/x_account.rbi +9 -15
  103. data/rbi/x_twitter_scraper/resources/credits.rbi +2 -2
  104. data/rbi/x_twitter_scraper/resources/draws.rbi +3 -2
  105. data/rbi/x_twitter_scraper/resources/events.rbi +5 -2
  106. data/rbi/x_twitter_scraper/resources/extractions.rbi +525 -83
  107. data/rbi/x_twitter_scraper/resources/guest_wallets.rbi +9 -13
  108. data/rbi/x_twitter_scraper/resources/support/attachments.rbi +35 -0
  109. data/rbi/x_twitter_scraper/resources/support.rbi +4 -0
  110. data/rbi/x_twitter_scraper/resources/x/communities.rbi +84 -0
  111. data/rbi/x_twitter_scraper/resources/x/lists.rbi +87 -4
  112. data/rbi/x_twitter_scraper/resources/x/tweets.rbi +307 -31
  113. data/rbi/x_twitter_scraper/resources/x/users.rbi +558 -34
  114. data/sig/x_twitter_scraper/models/error.rbs +16 -0
  115. data/sig/x_twitter_scraper/models/event_list_params.rbs +7 -0
  116. data/sig/x_twitter_scraper/models/extraction_estimate_cost_params.rbs +605 -1
  117. data/sig/x_twitter_scraper/models/extraction_estimate_cost_response.rbs +2 -0
  118. data/sig/x_twitter_scraper/models/extraction_export_results_params.rbs +127 -1
  119. data/sig/x_twitter_scraper/models/extraction_retrieve_params.rbs +74 -1
  120. data/sig/x_twitter_scraper/models/extraction_run_params.rbs +611 -1
  121. data/sig/x_twitter_scraper/models/extraction_run_response.rbs +29 -67
  122. data/sig/x_twitter_scraper/models/guest_wallet_create_response.rbs +4 -4
  123. data/sig/x_twitter_scraper/models/guest_wallet_topup_response.rbs +4 -4
  124. data/sig/x_twitter_scraper/models/monitor.rbs +29 -3
  125. data/sig/x_twitter_scraper/models/support/attachment_download_params.rbs +32 -0
  126. data/sig/x_twitter_scraper/models/x/community_retrieve_members_params.rbs +103 -1
  127. data/sig/x_twitter_scraper/models/x/community_retrieve_moderators_params.rbs +102 -1
  128. data/sig/x_twitter_scraper/models/x/list_retrieve_followers_params.rbs +103 -1
  129. data/sig/x_twitter_scraper/models/x/list_retrieve_members_params.rbs +103 -1
  130. data/sig/x_twitter_scraper/models/x/tweet_get_favoriters_params.rbs +103 -1
  131. data/sig/x_twitter_scraper/models/x/tweet_get_quotes_params.rbs +134 -1
  132. data/sig/x_twitter_scraper/models/x/tweet_get_replies_params.rbs +207 -2
  133. data/sig/x_twitter_scraper/models/x/tweet_get_retweeters_params.rbs +103 -1
  134. data/sig/x_twitter_scraper/models/x/tweet_search_params.rbs +154 -1
  135. data/sig/x_twitter_scraper/models/x/tweet_search_response.rbs +258 -0
  136. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_params.rbs +119 -1
  137. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_response.rbs +216 -0
  138. data/sig/x_twitter_scraper/models/x/user_retrieve_followers_you_know_params.rbs +103 -1
  139. data/sig/x_twitter_scraper/models/x/user_retrieve_following_params.rbs +119 -1
  140. data/sig/x_twitter_scraper/models/x/user_retrieve_following_response.rbs +216 -0
  141. data/sig/x_twitter_scraper/models/x/user_retrieve_likes_params.rbs +134 -1
  142. data/sig/x_twitter_scraper/models/x/user_retrieve_media_params.rbs +134 -1
  143. data/sig/x_twitter_scraper/models/x/user_retrieve_mentions_params.rbs +134 -1
  144. data/sig/x_twitter_scraper/models/x/user_retrieve_replies_params.rbs +134 -1
  145. data/sig/x_twitter_scraper/models/x/user_retrieve_search_params.rbs +102 -1
  146. data/sig/x_twitter_scraper/models/x/user_retrieve_tweets_params.rbs +134 -1
  147. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_params.rbs +137 -1
  148. data/sig/x_twitter_scraper/models/x/user_retrieve_verified_followers_response.rbs +216 -0
  149. data/sig/x_twitter_scraper/resources/events.rbs +1 -0
  150. data/sig/x_twitter_scraper/resources/extractions.rbs +137 -0
  151. data/sig/x_twitter_scraper/resources/support/attachments.rbs +15 -0
  152. data/sig/x_twitter_scraper/resources/support.rbs +2 -0
  153. data/sig/x_twitter_scraper/resources/x/communities.rbs +28 -0
  154. data/sig/x_twitter_scraper/resources/x/lists.rbs +28 -0
  155. data/sig/x_twitter_scraper/resources/x/tweets.rbs +93 -1
  156. data/sig/x_twitter_scraper/resources/x/users.rbs +173 -3
  157. metadata +19 -1
@@ -0,0 +1,440 @@
1
+ # typed: strong
2
+
3
+ module XTwitterScraper
4
+ module Models
5
+ module X
6
+ # Paginated user profiles. No-mode follower, following, and verified follower
7
+ # requests merge independent views automatically. Response fields, page size,
8
+ # aliases, filters, and per-returned-profile billing stay unchanged. Existing
9
+ # unprefixed cursors retain legacy behavior. Follow next_cursor while
10
+ # has_next_page is true.
11
+ module UserRetrieveFollowingResponse
12
+ extend XTwitterScraper::Internal::Type::Union
13
+
14
+ Variants =
15
+ T.type_alias do
16
+ T.any(
17
+ XTwitterScraper::PaginatedUsers,
18
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse
19
+ )
20
+ end
21
+
22
+ class UserListCoverageResponse < XTwitterScraper::Models::PaginatedUsers
23
+ OrHash =
24
+ T.type_alias do
25
+ T.any(
26
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse,
27
+ XTwitterScraper::Internal::AnyHash
28
+ )
29
+ end
30
+
31
+ # Coverage evidence across parallel relationship strategies.
32
+ sig do
33
+ returns(
34
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic
35
+ )
36
+ end
37
+ attr_reader :diagnostic
38
+
39
+ sig do
40
+ params(
41
+ diagnostic:
42
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::OrHash
43
+ ).void
44
+ end
45
+ attr_writer :diagnostic
46
+
47
+ sig do
48
+ returns(
49
+ T.nilable(
50
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::HasNextPage::TaggedBoolean
51
+ )
52
+ )
53
+ end
54
+ attr_reader :has_next_page
55
+
56
+ sig do
57
+ params(
58
+ has_next_page:
59
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::HasNextPage::OrBoolean
60
+ ).void
61
+ end
62
+ attr_writer :has_next_page
63
+
64
+ sig do
65
+ returns(
66
+ T.nilable(
67
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::NextCursor::TaggedSymbol
68
+ )
69
+ )
70
+ end
71
+ attr_reader :next_cursor
72
+
73
+ sig do
74
+ params(
75
+ next_cursor:
76
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::NextCursor::OrSymbol
77
+ ).void
78
+ end
79
+ attr_writer :next_cursor
80
+
81
+ # Paginated user profiles. No-mode follower, following, and verified follower
82
+ # requests merge independent views automatically. Response fields, page size,
83
+ # aliases, filters, and per-returned-profile billing stay unchanged. Existing
84
+ # unprefixed cursors retain legacy behavior. Follow next_cursor while
85
+ # has_next_page is true.
86
+ sig do
87
+ params(
88
+ diagnostic:
89
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::OrHash,
90
+ has_next_page:
91
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::HasNextPage::OrBoolean,
92
+ next_cursor:
93
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::NextCursor::OrSymbol
94
+ ).returns(T.attached_class)
95
+ end
96
+ def self.new(
97
+ # Coverage evidence across parallel relationship strategies.
98
+ diagnostic:,
99
+ has_next_page: nil,
100
+ next_cursor: nil
101
+ )
102
+ end
103
+
104
+ sig do
105
+ override.returns(
106
+ {
107
+ diagnostic:
108
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic,
109
+ has_next_page:
110
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::HasNextPage::TaggedBoolean,
111
+ next_cursor:
112
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::NextCursor::TaggedSymbol
113
+ }
114
+ )
115
+ end
116
+ def to_hash
117
+ end
118
+
119
+ class Diagnostic < XTwitterScraper::Internal::Type::BaseModel
120
+ OrHash =
121
+ T.type_alias do
122
+ T.any(
123
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic,
124
+ XTwitterScraper::Internal::AnyHash
125
+ )
126
+ end
127
+
128
+ # True when every strategy exhausted its source.
129
+ sig { returns(T::Boolean) }
130
+ attr_accessor :complete
131
+
132
+ sig { returns(Integer) }
133
+ attr_accessor :cursor_failure_count
134
+
135
+ sig { returns(T::Boolean) }
136
+ attr_accessor :deadline_reached
137
+
138
+ sig { returns(Integer) }
139
+ attr_accessor :duplicate_count
140
+
141
+ sig { returns(Integer) }
142
+ attr_accessor :failed_strategy_count
143
+
144
+ sig { returns(Integer) }
145
+ attr_accessor :malformed_count
146
+
147
+ sig { returns(Integer) }
148
+ attr_accessor :pages_fetched
149
+
150
+ # Whether credits or the requested limit reduced output.
151
+ sig { returns(T::Boolean) }
152
+ attr_accessor :response_truncated
153
+
154
+ sig { returns(T::Boolean) }
155
+ attr_accessor :result_limit_reached
156
+
157
+ sig { returns(Integer) }
158
+ attr_accessor :returned_users
159
+
160
+ sig { returns(Integer) }
161
+ attr_accessor :stalled_strategy_count
162
+
163
+ sig do
164
+ returns(
165
+ T::Array[
166
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy
167
+ ]
168
+ )
169
+ end
170
+ attr_accessor :strategies
171
+
172
+ sig { returns(Integer) }
173
+ attr_accessor :strategy_count
174
+
175
+ sig { returns(Integer) }
176
+ attr_accessor :unique_users
177
+
178
+ # Coverage evidence across parallel relationship strategies.
179
+ sig do
180
+ params(
181
+ complete: T::Boolean,
182
+ cursor_failure_count: Integer,
183
+ deadline_reached: T::Boolean,
184
+ duplicate_count: Integer,
185
+ failed_strategy_count: Integer,
186
+ malformed_count: Integer,
187
+ pages_fetched: Integer,
188
+ response_truncated: T::Boolean,
189
+ result_limit_reached: T::Boolean,
190
+ returned_users: Integer,
191
+ stalled_strategy_count: Integer,
192
+ strategies:
193
+ T::Array[
194
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::OrHash
195
+ ],
196
+ strategy_count: Integer,
197
+ unique_users: Integer
198
+ ).returns(T.attached_class)
199
+ end
200
+ def self.new(
201
+ # True when every strategy exhausted its source.
202
+ complete:,
203
+ cursor_failure_count:,
204
+ deadline_reached:,
205
+ duplicate_count:,
206
+ failed_strategy_count:,
207
+ malformed_count:,
208
+ pages_fetched:,
209
+ # Whether credits or the requested limit reduced output.
210
+ response_truncated:,
211
+ result_limit_reached:,
212
+ returned_users:,
213
+ stalled_strategy_count:,
214
+ strategies:,
215
+ strategy_count:,
216
+ unique_users:
217
+ )
218
+ end
219
+
220
+ sig do
221
+ override.returns(
222
+ {
223
+ complete: T::Boolean,
224
+ cursor_failure_count: Integer,
225
+ deadline_reached: T::Boolean,
226
+ duplicate_count: Integer,
227
+ failed_strategy_count: Integer,
228
+ malformed_count: Integer,
229
+ pages_fetched: Integer,
230
+ response_truncated: T::Boolean,
231
+ result_limit_reached: T::Boolean,
232
+ returned_users: Integer,
233
+ stalled_strategy_count: Integer,
234
+ strategies:
235
+ T::Array[
236
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy
237
+ ],
238
+ strategy_count: Integer,
239
+ unique_users: Integer
240
+ }
241
+ )
242
+ end
243
+ def to_hash
244
+ end
245
+
246
+ class Strategy < XTwitterScraper::Internal::Type::BaseModel
247
+ OrHash =
248
+ T.type_alias do
249
+ T.any(
250
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy,
251
+ XTwitterScraper::Internal::AnyHash
252
+ )
253
+ end
254
+
255
+ sig { returns(Integer) }
256
+ attr_accessor :duplicate_count
257
+
258
+ sig { returns(Integer) }
259
+ attr_accessor :pages_fetched
260
+
261
+ sig do
262
+ returns(
263
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
264
+ )
265
+ end
266
+ attr_accessor :stop_reason
267
+
268
+ sig { returns(Integer) }
269
+ attr_accessor :strategy
270
+
271
+ sig { returns(Integer) }
272
+ attr_accessor :unique_added
273
+
274
+ sig do
275
+ params(
276
+ duplicate_count: Integer,
277
+ pages_fetched: Integer,
278
+ stop_reason:
279
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::OrSymbol,
280
+ strategy: Integer,
281
+ unique_added: Integer
282
+ ).returns(T.attached_class)
283
+ end
284
+ def self.new(
285
+ duplicate_count:,
286
+ pages_fetched:,
287
+ stop_reason:,
288
+ strategy:,
289
+ unique_added:
290
+ )
291
+ end
292
+
293
+ sig do
294
+ override.returns(
295
+ {
296
+ duplicate_count: Integer,
297
+ pages_fetched: Integer,
298
+ stop_reason:
299
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol,
300
+ strategy: Integer,
301
+ unique_added: Integer
302
+ }
303
+ )
304
+ end
305
+ def to_hash
306
+ end
307
+
308
+ module StopReason
309
+ extend XTwitterScraper::Internal::Type::Enum
310
+
311
+ TaggedSymbol =
312
+ T.type_alias do
313
+ T.all(
314
+ Symbol,
315
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason
316
+ )
317
+ end
318
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
319
+
320
+ CURSOR_FAILURE =
321
+ T.let(
322
+ :cursor_failure,
323
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
324
+ )
325
+ DEADLINE =
326
+ T.let(
327
+ :deadline,
328
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
329
+ )
330
+ EXHAUSTED =
331
+ T.let(
332
+ :exhausted,
333
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
334
+ )
335
+ FAILED =
336
+ T.let(
337
+ :failed,
338
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
339
+ )
340
+ PAGE_LIMIT =
341
+ T.let(
342
+ :page_limit,
343
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
344
+ )
345
+ RESULT_LIMIT =
346
+ T.let(
347
+ :result_limit,
348
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
349
+ )
350
+ STALLED =
351
+ T.let(
352
+ :stalled,
353
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
354
+ )
355
+
356
+ sig do
357
+ override.returns(
358
+ T::Array[
359
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::Diagnostic::Strategy::StopReason::TaggedSymbol
360
+ ]
361
+ )
362
+ end
363
+ def self.values
364
+ end
365
+ end
366
+ end
367
+ end
368
+
369
+ module HasNextPage
370
+ extend XTwitterScraper::Internal::Type::Enum
371
+
372
+ TaggedBoolean =
373
+ T.type_alias do
374
+ T.all(
375
+ T::Boolean,
376
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::HasNextPage
377
+ )
378
+ end
379
+ OrBoolean = T.type_alias { T::Boolean }
380
+
381
+ FALSE =
382
+ T.let(
383
+ false,
384
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::HasNextPage::TaggedBoolean
385
+ )
386
+
387
+ sig do
388
+ override.returns(
389
+ T::Array[
390
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::HasNextPage::TaggedBoolean
391
+ ]
392
+ )
393
+ end
394
+ def self.values
395
+ end
396
+ end
397
+
398
+ module NextCursor
399
+ extend XTwitterScraper::Internal::Type::Enum
400
+
401
+ TaggedSymbol =
402
+ T.type_alias do
403
+ T.all(
404
+ Symbol,
405
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::NextCursor
406
+ )
407
+ end
408
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
409
+
410
+ EMPTY =
411
+ T.let(
412
+ :"",
413
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::NextCursor::TaggedSymbol
414
+ )
415
+
416
+ sig do
417
+ override.returns(
418
+ T::Array[
419
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::UserListCoverageResponse::NextCursor::TaggedSymbol
420
+ ]
421
+ )
422
+ end
423
+ def self.values
424
+ end
425
+ end
426
+ end
427
+
428
+ sig do
429
+ override.returns(
430
+ T::Array[
431
+ XTwitterScraper::Models::X::UserRetrieveFollowingResponse::Variants
432
+ ]
433
+ )
434
+ end
435
+ def self.variants
436
+ end
437
+ end
438
+ end
439
+ end
440
+ end