imagekitio 3.1.0 → 4.0.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 (483) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +116 -0
  4. data/README.md +534 -705
  5. data/SECURITY.md +27 -0
  6. data/lib/imagekitio/client.rb +122 -195
  7. data/lib/imagekitio/errors.rb +226 -2
  8. data/lib/imagekitio/file_part.rb +58 -0
  9. data/lib/imagekitio/helpers/crypto_utils.rb +25 -0
  10. data/lib/imagekitio/helpers/helper.rb +689 -0
  11. data/lib/imagekitio/helpers/transformation_utils.rb +164 -0
  12. data/lib/imagekitio/helpers/uuid_utils.rb +18 -0
  13. data/lib/imagekitio/internal/transport/base_client.rb +567 -0
  14. data/lib/imagekitio/internal/transport/pooled_net_requester.rb +217 -0
  15. data/lib/imagekitio/internal/type/array_of.rb +168 -0
  16. data/lib/imagekitio/internal/type/base_model.rb +530 -0
  17. data/lib/imagekitio/internal/type/base_page.rb +55 -0
  18. data/lib/imagekitio/internal/type/boolean.rb +77 -0
  19. data/lib/imagekitio/internal/type/converter.rb +327 -0
  20. data/lib/imagekitio/internal/type/enum.rb +156 -0
  21. data/lib/imagekitio/internal/type/file_input.rb +111 -0
  22. data/lib/imagekitio/internal/type/hash_of.rb +188 -0
  23. data/lib/imagekitio/internal/type/request_parameters.rb +42 -0
  24. data/lib/imagekitio/internal/type/union.rb +250 -0
  25. data/lib/imagekitio/internal/type/unknown.rb +81 -0
  26. data/lib/imagekitio/internal/util.rb +915 -0
  27. data/lib/imagekitio/internal.rb +20 -0
  28. data/lib/imagekitio/models/accounts/origin_create_params.rb +24 -0
  29. data/lib/imagekitio/models/accounts/origin_delete_params.rb +16 -0
  30. data/lib/imagekitio/models/accounts/origin_get_params.rb +16 -0
  31. data/lib/imagekitio/models/accounts/origin_list_params.rb +16 -0
  32. data/lib/imagekitio/models/accounts/origin_list_response.rb +11 -0
  33. data/lib/imagekitio/models/accounts/origin_request.rb +547 -0
  34. data/lib/imagekitio/models/accounts/origin_response.rb +568 -0
  35. data/lib/imagekitio/models/accounts/origin_update_params.rb +24 -0
  36. data/lib/imagekitio/models/accounts/url_endpoint_create_params.rb +16 -0
  37. data/lib/imagekitio/models/accounts/url_endpoint_delete_params.rb +16 -0
  38. data/lib/imagekitio/models/accounts/url_endpoint_get_params.rb +16 -0
  39. data/lib/imagekitio/models/accounts/url_endpoint_list_params.rb +16 -0
  40. data/lib/imagekitio/models/accounts/url_endpoint_list_response.rb +11 -0
  41. data/lib/imagekitio/models/accounts/url_endpoint_request.rb +110 -0
  42. data/lib/imagekitio/models/accounts/url_endpoint_response.rb +123 -0
  43. data/lib/imagekitio/models/accounts/url_endpoint_update_params.rb +16 -0
  44. data/lib/imagekitio/models/accounts/usage_get_params.rb +37 -0
  45. data/lib/imagekitio/models/accounts/usage_get_response.rb +51 -0
  46. data/lib/imagekitio/models/asset_list_params.rb +158 -0
  47. data/lib/imagekitio/models/asset_list_response.rb +24 -0
  48. data/lib/imagekitio/models/base_overlay.rb +21 -0
  49. data/lib/imagekitio/models/base_webhook_event.rb +24 -0
  50. data/lib/imagekitio/models/beta/v2/file_upload_params.rb +510 -0
  51. data/lib/imagekitio/models/beta/v2/file_upload_response.rb +618 -0
  52. data/lib/imagekitio/models/cache/invalidation_create_params.rb +27 -0
  53. data/lib/imagekitio/models/cache/invalidation_create_response.rb +23 -0
  54. data/lib/imagekitio/models/cache/invalidation_get_params.rb +16 -0
  55. data/lib/imagekitio/models/cache/invalidation_get_response.rb +35 -0
  56. data/lib/imagekitio/models/custom_metadata_field.rb +243 -0
  57. data/lib/imagekitio/models/custom_metadata_field_create_params.rb +238 -0
  58. data/lib/imagekitio/models/custom_metadata_field_delete_params.rb +14 -0
  59. data/lib/imagekitio/models/custom_metadata_field_delete_response.rb +10 -0
  60. data/lib/imagekitio/models/custom_metadata_field_list_params.rb +36 -0
  61. data/lib/imagekitio/models/custom_metadata_field_list_response.rb +9 -0
  62. data/lib/imagekitio/models/custom_metadata_field_update_params.rb +212 -0
  63. data/lib/imagekitio/models/extensions.rb +136 -0
  64. data/lib/imagekitio/models/file.rb +497 -0
  65. data/lib/imagekitio/models/file_copy_params.rb +43 -0
  66. data/lib/imagekitio/models/file_copy_response.rb +10 -0
  67. data/lib/imagekitio/models/file_delete_params.rb +14 -0
  68. data/lib/imagekitio/models/file_get_params.rb +14 -0
  69. data/lib/imagekitio/models/file_move_params.rb +33 -0
  70. data/lib/imagekitio/models/file_move_response.rb +10 -0
  71. data/lib/imagekitio/models/file_rename_params.rb +61 -0
  72. data/lib/imagekitio/models/file_rename_response.rb +21 -0
  73. data/lib/imagekitio/models/file_update_params.rb +22 -0
  74. data/lib/imagekitio/models/file_update_response.rb +104 -0
  75. data/lib/imagekitio/models/file_upload_params.rb +540 -0
  76. data/lib/imagekitio/models/file_upload_response.rb +611 -0
  77. data/lib/imagekitio/models/files/bulk_add_tags_params.rb +35 -0
  78. data/lib/imagekitio/models/files/bulk_add_tags_response.rb +24 -0
  79. data/lib/imagekitio/models/files/bulk_delete_params.rb +27 -0
  80. data/lib/imagekitio/models/files/bulk_delete_response.rb +24 -0
  81. data/lib/imagekitio/models/files/bulk_remove_ai_tags_params.rb +35 -0
  82. data/lib/imagekitio/models/files/bulk_remove_ai_tags_response.rb +24 -0
  83. data/lib/imagekitio/models/files/bulk_remove_tags_params.rb +35 -0
  84. data/lib/imagekitio/models/files/bulk_remove_tags_response.rb +24 -0
  85. data/lib/imagekitio/models/files/metadata_get_from_url_params.rb +28 -0
  86. data/lib/imagekitio/models/files/metadata_get_params.rb +16 -0
  87. data/lib/imagekitio/models/files/version_delete_params.rb +22 -0
  88. data/lib/imagekitio/models/files/version_delete_response.rb +12 -0
  89. data/lib/imagekitio/models/files/version_get_params.rb +22 -0
  90. data/lib/imagekitio/models/files/version_list_params.rb +16 -0
  91. data/lib/imagekitio/models/files/version_list_response.rb +10 -0
  92. data/lib/imagekitio/models/files/version_restore_params.rb +22 -0
  93. data/lib/imagekitio/models/folder.rb +76 -0
  94. data/lib/imagekitio/models/folder_copy_params.rb +44 -0
  95. data/lib/imagekitio/models/folder_copy_response.rb +23 -0
  96. data/lib/imagekitio/models/folder_create_params.rb +43 -0
  97. data/lib/imagekitio/models/folder_create_response.rb +10 -0
  98. data/lib/imagekitio/models/folder_delete_params.rb +25 -0
  99. data/lib/imagekitio/models/folder_delete_response.rb +10 -0
  100. data/lib/imagekitio/models/folder_move_params.rb +34 -0
  101. data/lib/imagekitio/models/folder_move_response.rb +23 -0
  102. data/lib/imagekitio/models/folder_rename_params.rb +59 -0
  103. data/lib/imagekitio/models/folder_rename_response.rb +23 -0
  104. data/lib/imagekitio/models/folders/job_get_params.rb +16 -0
  105. data/lib/imagekitio/models/folders/job_get_response.rb +74 -0
  106. data/lib/imagekitio/models/get_image_attributes_options.rb +68 -0
  107. data/lib/imagekitio/models/image_overlay.rb +66 -0
  108. data/lib/imagekitio/models/metadata.rb +483 -0
  109. data/lib/imagekitio/models/overlay.rb +28 -0
  110. data/lib/imagekitio/models/overlay_position.rb +101 -0
  111. data/lib/imagekitio/models/overlay_timing.rb +97 -0
  112. data/lib/imagekitio/models/responsive_image_attributes.rb +48 -0
  113. data/lib/imagekitio/models/solid_color_overlay.rb +42 -0
  114. data/lib/imagekitio/models/solid_color_overlay_transformation.rb +135 -0
  115. data/lib/imagekitio/models/src_options.rb +96 -0
  116. data/lib/imagekitio/models/streaming_resolution.rb +22 -0
  117. data/lib/imagekitio/models/subtitle_overlay.rb +64 -0
  118. data/lib/imagekitio/models/subtitle_overlay_transformation.rb +113 -0
  119. data/lib/imagekitio/models/text_overlay.rb +65 -0
  120. data/lib/imagekitio/models/text_overlay_transformation.rb +267 -0
  121. data/lib/imagekitio/models/transformation.rb +1100 -0
  122. data/lib/imagekitio/models/transformation_position.rb +19 -0
  123. data/lib/imagekitio/models/unsafe_unwrap_webhook_event.rb +36 -0
  124. data/lib/imagekitio/models/unwrap_webhook_event.rb +36 -0
  125. data/lib/imagekitio/models/update_file_request.rb +164 -0
  126. data/lib/imagekitio/models/upload_post_transform_error_event.rb +180 -0
  127. data/lib/imagekitio/models/upload_post_transform_success_event.rb +143 -0
  128. data/lib/imagekitio/models/upload_pre_transform_error_event.rb +108 -0
  129. data/lib/imagekitio/models/upload_pre_transform_success_event.rb +690 -0
  130. data/lib/imagekitio/models/video_overlay.rb +64 -0
  131. data/lib/imagekitio/models/video_transformation_accepted_event.rb +279 -0
  132. data/lib/imagekitio/models/video_transformation_error_event.rb +326 -0
  133. data/lib/imagekitio/models/video_transformation_ready_event.rb +379 -0
  134. data/lib/imagekitio/models/webhook_unsafe_unwrap_params.rb +14 -0
  135. data/lib/imagekitio/models/webhook_unwrap_params.rb +14 -0
  136. data/lib/imagekitio/models.rb +160 -0
  137. data/lib/imagekitio/request_options.rb +77 -0
  138. data/lib/imagekitio/resources/accounts/origins.rb +145 -0
  139. data/lib/imagekitio/resources/accounts/url_endpoints.rb +151 -0
  140. data/lib/imagekitio/resources/accounts/usage.rb +46 -0
  141. data/lib/imagekitio/resources/accounts.rb +26 -0
  142. data/lib/imagekitio/resources/assets.rb +54 -0
  143. data/lib/imagekitio/resources/beta/v2/files.rb +110 -0
  144. data/lib/imagekitio/resources/beta/v2.rb +20 -0
  145. data/lib/imagekitio/resources/beta.rb +18 -0
  146. data/lib/imagekitio/resources/cache/invalidation.rb +66 -0
  147. data/lib/imagekitio/resources/cache.rb +18 -0
  148. data/lib/imagekitio/resources/custom_metadata_fields.rb +133 -0
  149. data/lib/imagekitio/resources/files/bulk.rb +131 -0
  150. data/lib/imagekitio/resources/files/metadata.rb +69 -0
  151. data/lib/imagekitio/resources/files/versions.rb +132 -0
  152. data/lib/imagekitio/resources/files.rb +305 -0
  153. data/lib/imagekitio/resources/folders/job.rb +39 -0
  154. data/lib/imagekitio/resources/folders.rb +166 -0
  155. data/lib/imagekitio/resources/webhooks.rb +30 -0
  156. data/lib/imagekitio/version.rb +5 -0
  157. data/lib/imagekitio.rb +181 -13
  158. data/manifest.yaml +15 -0
  159. data/rbi/imagekitio/client.rbi +92 -0
  160. data/rbi/imagekitio/errors.rbi +205 -0
  161. data/rbi/imagekitio/file_part.rbi +37 -0
  162. data/rbi/imagekitio/helpers/helper.rbi +41 -0
  163. data/rbi/imagekitio/internal/transport/base_client.rbi +295 -0
  164. data/rbi/imagekitio/internal/transport/pooled_net_requester.rbi +80 -0
  165. data/rbi/imagekitio/internal/type/array_of.rbi +104 -0
  166. data/rbi/imagekitio/internal/type/base_model.rbi +304 -0
  167. data/rbi/imagekitio/internal/type/base_page.rbi +42 -0
  168. data/rbi/imagekitio/internal/type/boolean.rbi +58 -0
  169. data/rbi/imagekitio/internal/type/converter.rbi +216 -0
  170. data/rbi/imagekitio/internal/type/enum.rbi +82 -0
  171. data/rbi/imagekitio/internal/type/file_input.rbi +59 -0
  172. data/rbi/imagekitio/internal/type/hash_of.rbi +104 -0
  173. data/rbi/imagekitio/internal/type/request_parameters.rbi +29 -0
  174. data/rbi/imagekitio/internal/type/union.rbi +128 -0
  175. data/rbi/imagekitio/internal/type/unknown.rbi +58 -0
  176. data/rbi/imagekitio/internal/util.rbi +487 -0
  177. data/rbi/imagekitio/internal.rbi +18 -0
  178. data/rbi/imagekitio/models/accounts/origin_create_params.rbi +81 -0
  179. data/rbi/imagekitio/models/accounts/origin_delete_params.rbi +34 -0
  180. data/rbi/imagekitio/models/accounts/origin_get_params.rbi +34 -0
  181. data/rbi/imagekitio/models/accounts/origin_list_params.rbi +34 -0
  182. data/rbi/imagekitio/models/accounts/origin_list_response.rbi +15 -0
  183. data/rbi/imagekitio/models/accounts/origin_request.rbi +775 -0
  184. data/rbi/imagekitio/models/accounts/origin_response.rbi +718 -0
  185. data/rbi/imagekitio/models/accounts/origin_update_params.rbi +81 -0
  186. data/rbi/imagekitio/models/accounts/url_endpoint_create_params.rbi +34 -0
  187. data/rbi/imagekitio/models/accounts/url_endpoint_delete_params.rbi +34 -0
  188. data/rbi/imagekitio/models/accounts/url_endpoint_get_params.rbi +34 -0
  189. data/rbi/imagekitio/models/accounts/url_endpoint_list_params.rbi +34 -0
  190. data/rbi/imagekitio/models/accounts/url_endpoint_list_response.rbi +15 -0
  191. data/rbi/imagekitio/models/accounts/url_endpoint_request.rbi +218 -0
  192. data/rbi/imagekitio/models/accounts/url_endpoint_response.rbi +213 -0
  193. data/rbi/imagekitio/models/accounts/url_endpoint_update_params.rbi +34 -0
  194. data/rbi/imagekitio/models/accounts/usage_get_params.rbi +60 -0
  195. data/rbi/imagekitio/models/accounts/usage_get_response.rbi +89 -0
  196. data/rbi/imagekitio/models/asset_list_params.rbi +281 -0
  197. data/rbi/imagekitio/models/asset_list_response.rbi +28 -0
  198. data/rbi/imagekitio/models/base_overlay.rbi +44 -0
  199. data/rbi/imagekitio/models/base_webhook_event.rbi +33 -0
  200. data/rbi/imagekitio/models/beta/v2/file_upload_params.rbi +861 -0
  201. data/rbi/imagekitio/models/beta/v2/file_upload_response.rbi +1197 -0
  202. data/rbi/imagekitio/models/cache/invalidation_create_params.rbi +45 -0
  203. data/rbi/imagekitio/models/cache/invalidation_create_response.rbi +37 -0
  204. data/rbi/imagekitio/models/cache/invalidation_get_params.rbi +34 -0
  205. data/rbi/imagekitio/models/cache/invalidation_get_response.rbi +93 -0
  206. data/rbi/imagekitio/models/custom_metadata_field.rbi +422 -0
  207. data/rbi/imagekitio/models/custom_metadata_field_create_params.rbi +443 -0
  208. data/rbi/imagekitio/models/custom_metadata_field_delete_params.rbi +30 -0
  209. data/rbi/imagekitio/models/custom_metadata_field_delete_response.rbi +23 -0
  210. data/rbi/imagekitio/models/custom_metadata_field_list_params.rbi +66 -0
  211. data/rbi/imagekitio/models/custom_metadata_field_list_response.rbi +11 -0
  212. data/rbi/imagekitio/models/custom_metadata_field_update_params.rbi +376 -0
  213. data/rbi/imagekitio/models/extensions.rbi +274 -0
  214. data/rbi/imagekitio/models/file.rbi +789 -0
  215. data/rbi/imagekitio/models/file_copy_params.rbi +66 -0
  216. data/rbi/imagekitio/models/file_copy_response.rbi +23 -0
  217. data/rbi/imagekitio/models/file_delete_params.rbi +27 -0
  218. data/rbi/imagekitio/models/file_get_params.rbi +27 -0
  219. data/rbi/imagekitio/models/file_move_params.rbi +51 -0
  220. data/rbi/imagekitio/models/file_move_response.rbi +23 -0
  221. data/rbi/imagekitio/models/file_rename_params.rbi +102 -0
  222. data/rbi/imagekitio/models/file_rename_response.rbi +35 -0
  223. data/rbi/imagekitio/models/file_update_params.rbi +58 -0
  224. data/rbi/imagekitio/models/file_update_response.rbi +322 -0
  225. data/rbi/imagekitio/models/file_upload_params.rbi +897 -0
  226. data/rbi/imagekitio/models/file_upload_response.rbi +1176 -0
  227. data/rbi/imagekitio/models/files/bulk_add_tags_params.rbi +56 -0
  228. data/rbi/imagekitio/models/files/bulk_add_tags_response.rbi +41 -0
  229. data/rbi/imagekitio/models/files/bulk_delete_params.rbi +48 -0
  230. data/rbi/imagekitio/models/files/bulk_delete_response.rbi +41 -0
  231. data/rbi/imagekitio/models/files/bulk_remove_ai_tags_params.rbi +56 -0
  232. data/rbi/imagekitio/models/files/bulk_remove_ai_tags_response.rbi +41 -0
  233. data/rbi/imagekitio/models/files/bulk_remove_tags_params.rbi +56 -0
  234. data/rbi/imagekitio/models/files/bulk_remove_tags_response.rbi +41 -0
  235. data/rbi/imagekitio/models/files/metadata_get_from_url_params.rbi +47 -0
  236. data/rbi/imagekitio/models/files/metadata_get_params.rbi +34 -0
  237. data/rbi/imagekitio/models/files/version_delete_params.rbi +40 -0
  238. data/rbi/imagekitio/models/files/version_delete_response.rbi +25 -0
  239. data/rbi/imagekitio/models/files/version_get_params.rbi +40 -0
  240. data/rbi/imagekitio/models/files/version_list_params.rbi +34 -0
  241. data/rbi/imagekitio/models/files/version_list_response.rbi +13 -0
  242. data/rbi/imagekitio/models/files/version_restore_params.rbi +40 -0
  243. data/rbi/imagekitio/models/folder.rbi +121 -0
  244. data/rbi/imagekitio/models/folder_copy_params.rbi +68 -0
  245. data/rbi/imagekitio/models/folder_copy_response.rbi +33 -0
  246. data/rbi/imagekitio/models/folder_create_params.rbi +71 -0
  247. data/rbi/imagekitio/models/folder_create_response.rbi +23 -0
  248. data/rbi/imagekitio/models/folder_delete_params.rbi +40 -0
  249. data/rbi/imagekitio/models/folder_delete_response.rbi +23 -0
  250. data/rbi/imagekitio/models/folder_move_params.rbi +53 -0
  251. data/rbi/imagekitio/models/folder_move_response.rbi +33 -0
  252. data/rbi/imagekitio/models/folder_rename_params.rbi +98 -0
  253. data/rbi/imagekitio/models/folder_rename_response.rbi +33 -0
  254. data/rbi/imagekitio/models/folders/job_get_params.rbi +34 -0
  255. data/rbi/imagekitio/models/folders/job_get_response.rbi +173 -0
  256. data/rbi/imagekitio/models/get_image_attributes_options.rbi +121 -0
  257. data/rbi/imagekitio/models/image_overlay.rbi +109 -0
  258. data/rbi/imagekitio/models/metadata.rbi +813 -0
  259. data/rbi/imagekitio/models/overlay.rbi +28 -0
  260. data/rbi/imagekitio/models/overlay_position.rbi +148 -0
  261. data/rbi/imagekitio/models/overlay_timing.rbi +135 -0
  262. data/rbi/imagekitio/models/responsive_image_attributes.rbi +74 -0
  263. data/rbi/imagekitio/models/solid_color_overlay.rbi +79 -0
  264. data/rbi/imagekitio/models/solid_color_overlay_transformation.rbi +218 -0
  265. data/rbi/imagekitio/models/src_options.rbi +159 -0
  266. data/rbi/imagekitio/models/streaming_resolution.rbi +38 -0
  267. data/rbi/imagekitio/models/subtitle_overlay.rbi +114 -0
  268. data/rbi/imagekitio/models/subtitle_overlay_transformation.rbi +215 -0
  269. data/rbi/imagekitio/models/text_overlay.rbi +110 -0
  270. data/rbi/imagekitio/models/text_overlay_transformation.rbi +451 -0
  271. data/rbi/imagekitio/models/transformation.rbi +1646 -0
  272. data/rbi/imagekitio/models/transformation_position.rbi +28 -0
  273. data/rbi/imagekitio/models/unsafe_unwrap_webhook_event.rbi +33 -0
  274. data/rbi/imagekitio/models/unwrap_webhook_event.rbi +31 -0
  275. data/rbi/imagekitio/models/update_file_request.rbi +316 -0
  276. data/rbi/imagekitio/models/upload_post_transform_error_event.rbi +434 -0
  277. data/rbi/imagekitio/models/upload_post_transform_success_event.rbi +327 -0
  278. data/rbi/imagekitio/models/upload_pre_transform_error_event.rbi +244 -0
  279. data/rbi/imagekitio/models/upload_pre_transform_success_event.rbi +1300 -0
  280. data/rbi/imagekitio/models/video_overlay.rbi +105 -0
  281. data/rbi/imagekitio/models/video_transformation_accepted_event.rbi +659 -0
  282. data/rbi/imagekitio/models/video_transformation_error_event.rbi +772 -0
  283. data/rbi/imagekitio/models/video_transformation_ready_event.rbi +864 -0
  284. data/rbi/imagekitio/models/webhook_unsafe_unwrap_params.rbi +30 -0
  285. data/rbi/imagekitio/models/webhook_unwrap_params.rbi +27 -0
  286. data/rbi/imagekitio/models.rbi +135 -0
  287. data/rbi/imagekitio/request_options.rbi +59 -0
  288. data/rbi/imagekitio/resources/accounts/origins.rbi +91 -0
  289. data/rbi/imagekitio/resources/accounts/url_endpoints.rbi +129 -0
  290. data/rbi/imagekitio/resources/accounts/usage.rbi +36 -0
  291. data/rbi/imagekitio/resources/accounts.rbi +21 -0
  292. data/rbi/imagekitio/resources/assets.rbi +74 -0
  293. data/rbi/imagekitio/resources/beta/v2/files.rbi +193 -0
  294. data/rbi/imagekitio/resources/beta/v2.rbi +17 -0
  295. data/rbi/imagekitio/resources/beta.rbi +15 -0
  296. data/rbi/imagekitio/resources/cache/invalidation.rbi +44 -0
  297. data/rbi/imagekitio/resources/cache.rbi +15 -0
  298. data/rbi/imagekitio/resources/custom_metadata_fields.rbi +106 -0
  299. data/rbi/imagekitio/resources/files/bulk.rbi +88 -0
  300. data/rbi/imagekitio/resources/files/metadata.rbi +49 -0
  301. data/rbi/imagekitio/resources/files/versions.rbi +89 -0
  302. data/rbi/imagekitio/resources/files.rbi +364 -0
  303. data/rbi/imagekitio/resources/folders/job.rbi +29 -0
  304. data/rbi/imagekitio/resources/folders.rbi +146 -0
  305. data/rbi/imagekitio/resources/webhooks.rbi +50 -0
  306. data/rbi/imagekitio/version.rbi +5 -0
  307. data/sig/imagekitio/client.rbs +47 -0
  308. data/sig/imagekitio/errors.rbs +117 -0
  309. data/sig/imagekitio/file_part.rbs +21 -0
  310. data/sig/imagekitio/helpers/helper.rbs +24 -0
  311. data/sig/imagekitio/internal/transport/base_client.rbs +131 -0
  312. data/sig/imagekitio/internal/transport/pooled_net_requester.rbs +45 -0
  313. data/sig/imagekitio/internal/type/array_of.rbs +48 -0
  314. data/sig/imagekitio/internal/type/base_model.rbs +102 -0
  315. data/sig/imagekitio/internal/type/base_page.rbs +24 -0
  316. data/sig/imagekitio/internal/type/boolean.rbs +26 -0
  317. data/sig/imagekitio/internal/type/converter.rbs +79 -0
  318. data/sig/imagekitio/internal/type/enum.rbs +32 -0
  319. data/sig/imagekitio/internal/type/file_input.rbs +25 -0
  320. data/sig/imagekitio/internal/type/hash_of.rbs +48 -0
  321. data/sig/imagekitio/internal/type/request_parameters.rbs +19 -0
  322. data/sig/imagekitio/internal/type/union.rbs +52 -0
  323. data/sig/imagekitio/internal/type/unknown.rbs +26 -0
  324. data/sig/imagekitio/internal/util.rbs +185 -0
  325. data/sig/imagekitio/internal.rbs +9 -0
  326. data/sig/imagekitio/models/accounts/origin_create_params.rbs +30 -0
  327. data/sig/imagekitio/models/accounts/origin_delete_params.rbs +17 -0
  328. data/sig/imagekitio/models/accounts/origin_get_params.rbs +17 -0
  329. data/sig/imagekitio/models/accounts/origin_list_params.rbs +17 -0
  330. data/sig/imagekitio/models/accounts/origin_list_response.rbs +10 -0
  331. data/sig/imagekitio/models/accounts/origin_request.rbs +468 -0
  332. data/sig/imagekitio/models/accounts/origin_response.rbs +418 -0
  333. data/sig/imagekitio/models/accounts/origin_update_params.rbs +30 -0
  334. data/sig/imagekitio/models/accounts/url_endpoint_create_params.rbs +17 -0
  335. data/sig/imagekitio/models/accounts/url_endpoint_delete_params.rbs +17 -0
  336. data/sig/imagekitio/models/accounts/url_endpoint_get_params.rbs +17 -0
  337. data/sig/imagekitio/models/accounts/url_endpoint_list_params.rbs +17 -0
  338. data/sig/imagekitio/models/accounts/url_endpoint_list_response.rbs +10 -0
  339. data/sig/imagekitio/models/accounts/url_endpoint_request.rbs +97 -0
  340. data/sig/imagekitio/models/accounts/url_endpoint_response.rbs +96 -0
  341. data/sig/imagekitio/models/accounts/url_endpoint_update_params.rbs +17 -0
  342. data/sig/imagekitio/models/accounts/usage_get_params.rbs +30 -0
  343. data/sig/imagekitio/models/accounts/usage_get_response.rbs +52 -0
  344. data/sig/imagekitio/models/asset_list_params.rbs +138 -0
  345. data/sig/imagekitio/models/asset_list_response.rbs +16 -0
  346. data/sig/imagekitio/models/base_overlay.rbs +31 -0
  347. data/sig/imagekitio/models/base_webhook_event.rbs +15 -0
  348. data/sig/imagekitio/models/beta/v2/file_upload_params.rbs +310 -0
  349. data/sig/imagekitio/models/beta/v2/file_upload_response.rbs +487 -0
  350. data/sig/imagekitio/models/cache/invalidation_create_params.rbs +25 -0
  351. data/sig/imagekitio/models/cache/invalidation_create_response.rbs +17 -0
  352. data/sig/imagekitio/models/cache/invalidation_get_params.rbs +17 -0
  353. data/sig/imagekitio/models/cache/invalidation_get_response.rbs +35 -0
  354. data/sig/imagekitio/models/custom_metadata_field.rbs +178 -0
  355. data/sig/imagekitio/models/custom_metadata_field_create_params.rbs +179 -0
  356. data/sig/imagekitio/models/custom_metadata_field_delete_params.rbs +15 -0
  357. data/sig/imagekitio/models/custom_metadata_field_delete_response.rbs +11 -0
  358. data/sig/imagekitio/models/custom_metadata_field_list_params.rbs +32 -0
  359. data/sig/imagekitio/models/custom_metadata_field_list_response.rbs +8 -0
  360. data/sig/imagekitio/models/custom_metadata_field_update_params.rbs +152 -0
  361. data/sig/imagekitio/models/extensions.rbs +132 -0
  362. data/sig/imagekitio/models/file.rbs +384 -0
  363. data/sig/imagekitio/models/file_copy_params.rbs +38 -0
  364. data/sig/imagekitio/models/file_copy_response.rbs +11 -0
  365. data/sig/imagekitio/models/file_delete_params.rbs +15 -0
  366. data/sig/imagekitio/models/file_get_params.rbs +14 -0
  367. data/sig/imagekitio/models/file_move_params.rbs +28 -0
  368. data/sig/imagekitio/models/file_move_response.rbs +11 -0
  369. data/sig/imagekitio/models/file_rename_params.rbs +34 -0
  370. data/sig/imagekitio/models/file_rename_response.rbs +15 -0
  371. data/sig/imagekitio/models/file_update_params.rbs +28 -0
  372. data/sig/imagekitio/models/file_update_response.rbs +120 -0
  373. data/sig/imagekitio/models/file_upload_params.rbs +327 -0
  374. data/sig/imagekitio/models/file_upload_response.rbs +483 -0
  375. data/sig/imagekitio/models/files/bulk_add_tags_params.rbs +30 -0
  376. data/sig/imagekitio/models/files/bulk_add_tags_response.rbs +20 -0
  377. data/sig/imagekitio/models/files/bulk_delete_params.rbs +26 -0
  378. data/sig/imagekitio/models/files/bulk_delete_response.rbs +20 -0
  379. data/sig/imagekitio/models/files/bulk_remove_ai_tags_params.rbs +30 -0
  380. data/sig/imagekitio/models/files/bulk_remove_ai_tags_response.rbs +20 -0
  381. data/sig/imagekitio/models/files/bulk_remove_tags_params.rbs +30 -0
  382. data/sig/imagekitio/models/files/bulk_remove_tags_response.rbs +20 -0
  383. data/sig/imagekitio/models/files/metadata_get_from_url_params.rbs +25 -0
  384. data/sig/imagekitio/models/files/metadata_get_params.rbs +17 -0
  385. data/sig/imagekitio/models/files/version_delete_params.rbs +25 -0
  386. data/sig/imagekitio/models/files/version_delete_response.rbs +13 -0
  387. data/sig/imagekitio/models/files/version_get_params.rbs +25 -0
  388. data/sig/imagekitio/models/files/version_list_params.rbs +17 -0
  389. data/sig/imagekitio/models/files/version_list_response.rbs +9 -0
  390. data/sig/imagekitio/models/files/version_restore_params.rbs +25 -0
  391. data/sig/imagekitio/models/folder.rbs +69 -0
  392. data/sig/imagekitio/models/folder_copy_params.rbs +38 -0
  393. data/sig/imagekitio/models/folder_copy_response.rbs +13 -0
  394. data/sig/imagekitio/models/folder_create_params.rbs +28 -0
  395. data/sig/imagekitio/models/folder_create_response.rbs +11 -0
  396. data/sig/imagekitio/models/folder_delete_params.rbs +23 -0
  397. data/sig/imagekitio/models/folder_delete_response.rbs +11 -0
  398. data/sig/imagekitio/models/folder_move_params.rbs +28 -0
  399. data/sig/imagekitio/models/folder_move_response.rbs +13 -0
  400. data/sig/imagekitio/models/folder_rename_params.rbs +34 -0
  401. data/sig/imagekitio/models/folder_rename_response.rbs +13 -0
  402. data/sig/imagekitio/models/folders/job_get_params.rbs +17 -0
  403. data/sig/imagekitio/models/folders/job_get_response.rbs +72 -0
  404. data/sig/imagekitio/models/get_image_attributes_options.rbs +43 -0
  405. data/sig/imagekitio/models/image_overlay.rbs +59 -0
  406. data/sig/imagekitio/models/metadata.rbs +546 -0
  407. data/sig/imagekitio/models/overlay.rbs +16 -0
  408. data/sig/imagekitio/models/overlay_position.rbs +85 -0
  409. data/sig/imagekitio/models/overlay_timing.rbs +66 -0
  410. data/sig/imagekitio/models/responsive_image_attributes.rbs +36 -0
  411. data/sig/imagekitio/models/solid_color_overlay.rbs +38 -0
  412. data/sig/imagekitio/models/solid_color_overlay_transformation.rbs +97 -0
  413. data/sig/imagekitio/models/src_options.rbs +64 -0
  414. data/sig/imagekitio/models/streaming_resolution.rbs +20 -0
  415. data/sig/imagekitio/models/subtitle_overlay.rbs +59 -0
  416. data/sig/imagekitio/models/subtitle_overlay_transformation.rbs +78 -0
  417. data/sig/imagekitio/models/text_overlay.rbs +59 -0
  418. data/sig/imagekitio/models/text_overlay_transformation.rbs +195 -0
  419. data/sig/imagekitio/models/transformation.rbs +763 -0
  420. data/sig/imagekitio/models/transformation_position.rbs +14 -0
  421. data/sig/imagekitio/models/unsafe_unwrap_webhook_event.rbs +18 -0
  422. data/sig/imagekitio/models/unwrap_webhook_event.rbs +18 -0
  423. data/sig/imagekitio/models/update_file_request.rbs +122 -0
  424. data/sig/imagekitio/models/upload_post_transform_error_event.rbs +192 -0
  425. data/sig/imagekitio/models/upload_post_transform_success_event.rbs +142 -0
  426. data/sig/imagekitio/models/upload_pre_transform_error_event.rbs +115 -0
  427. data/sig/imagekitio/models/upload_pre_transform_success_event.rbs +541 -0
  428. data/sig/imagekitio/models/video_overlay.rbs +59 -0
  429. data/sig/imagekitio/models/video_transformation_accepted_event.rbs +261 -0
  430. data/sig/imagekitio/models/video_transformation_error_event.rbs +300 -0
  431. data/sig/imagekitio/models/video_transformation_ready_event.rbs +359 -0
  432. data/sig/imagekitio/models/webhook_unsafe_unwrap_params.rbs +15 -0
  433. data/sig/imagekitio/models/webhook_unwrap_params.rbs +15 -0
  434. data/sig/imagekitio/models.rbs +119 -0
  435. data/sig/imagekitio/request_options.rbs +36 -0
  436. data/sig/imagekitio/resources/accounts/origins.rbs +34 -0
  437. data/sig/imagekitio/resources/accounts/url_endpoints.rbs +40 -0
  438. data/sig/imagekitio/resources/accounts/usage.rbs +15 -0
  439. data/sig/imagekitio/resources/accounts.rbs +13 -0
  440. data/sig/imagekitio/resources/assets.rbs +18 -0
  441. data/sig/imagekitio/resources/beta/v2/files.rbs +35 -0
  442. data/sig/imagekitio/resources/beta/v2.rbs +11 -0
  443. data/sig/imagekitio/resources/beta.rbs +9 -0
  444. data/sig/imagekitio/resources/cache/invalidation.rbs +19 -0
  445. data/sig/imagekitio/resources/cache.rbs +9 -0
  446. data/sig/imagekitio/resources/custom_metadata_fields.rbs +32 -0
  447. data/sig/imagekitio/resources/files/bulk.rbs +32 -0
  448. data/sig/imagekitio/resources/files/metadata.rbs +19 -0
  449. data/sig/imagekitio/resources/files/versions.rbs +32 -0
  450. data/sig/imagekitio/resources/files.rbs +76 -0
  451. data/sig/imagekitio/resources/folders/job.rbs +14 -0
  452. data/sig/imagekitio/resources/folders.rbs +40 -0
  453. data/sig/imagekitio/resources/webhooks.rbs +27 -0
  454. data/sig/imagekitio/version.rbs +3 -0
  455. metadata +470 -136
  456. data/Rakefile +0 -27
  457. data/lib/active_storage/active_storage.rb +0 -7
  458. data/lib/active_storage/service/ik_file.rb +0 -115
  459. data/lib/active_storage/service/image_kit_io_service.rb +0 -188
  460. data/lib/carrierwave/carrierwave.rb +0 -83
  461. data/lib/carrierwave/storage/ik_file.rb +0 -51
  462. data/lib/carrierwave/storage/imagekit_store.rb +0 -68
  463. data/lib/carrierwave/support/uri_filename.rb +0 -12
  464. data/lib/imagekitio/api_service/bulk.rb +0 -58
  465. data/lib/imagekitio/api_service/custom_metadata_field.rb +0 -52
  466. data/lib/imagekitio/api_service/file.rb +0 -221
  467. data/lib/imagekitio/api_service/folder.rb +0 -49
  468. data/lib/imagekitio/base.rb +0 -12
  469. data/lib/imagekitio/configurable.rb +0 -43
  470. data/lib/imagekitio/constant.rb +0 -36
  471. data/lib/imagekitio/constants/default.rb +0 -22
  472. data/lib/imagekitio/constants/error.rb +0 -69
  473. data/lib/imagekitio/constants/file.rb +0 -11
  474. data/lib/imagekitio/constants/supported_transformation.rb +0 -39
  475. data/lib/imagekitio/constants/url.rb +0 -14
  476. data/lib/imagekitio/railtie.rb +0 -4
  477. data/lib/imagekitio/request.rb +0 -98
  478. data/lib/imagekitio/sdk/version.rb +0 -5
  479. data/lib/imagekitio/url.rb +0 -216
  480. data/lib/imagekitio/utils/calculation.rb +0 -45
  481. data/lib/imagekitio/utils/formatter.rb +0 -48
  482. data/lib/imagekitio/utils/option_validator.rb +0 -36
  483. data/lib/tasks/imagekitio/imagekitio_tasks.rake +0 -4
@@ -0,0 +1,1646 @@
1
+ # typed: strong
2
+
3
+ module Imagekitio
4
+ module Models
5
+ class Transformation < Imagekitio::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Imagekitio::Transformation, Imagekitio::Internal::AnyHash)
9
+ end
10
+
11
+ # Uses AI to change the background. Provide a text prompt or a base64-encoded
12
+ # prompt, e.g., `prompt-snow road` or `prompte-[urlencoded_base64_encoded_text]`.
13
+ # Not supported inside overlay. See
14
+ # [AI Change Background](https://imagekit.io/docs/ai-transformations#change-background-e-changebg).
15
+ sig { returns(T.nilable(String)) }
16
+ attr_reader :ai_change_background
17
+
18
+ sig { params(ai_change_background: String).void }
19
+ attr_writer :ai_change_background
20
+
21
+ # Adds an AI-based drop shadow around a foreground object on a transparent or
22
+ # removed background. Optionally, control the direction, elevation, and saturation
23
+ # of the light source (e.g., `az-45` to change light direction). Pass `true` for
24
+ # the default drop shadow, or provide a string for a custom drop shadow. Supported
25
+ # inside overlay. See
26
+ # [AI Drop Shadow](https://imagekit.io/docs/ai-transformations#ai-drop-shadow-e-dropshadow).
27
+ sig { returns(T.nilable(T.any(T::Boolean, String))) }
28
+ attr_reader :ai_drop_shadow
29
+
30
+ sig { params(ai_drop_shadow: T.any(T::Boolean, String)).void }
31
+ attr_writer :ai_drop_shadow
32
+
33
+ # Uses AI to edit images based on a text prompt. Provide a text prompt or a
34
+ # base64-encoded prompt, e.g., `prompt-snow road` or
35
+ # `prompte-[urlencoded_base64_encoded_text]`. Not supported inside overlay.
36
+ # See [AI Edit](https://imagekit.io/docs/ai-transformations#edit-image-e-edit).
37
+ sig { returns(T.nilable(String)) }
38
+ attr_reader :ai_edit
39
+
40
+ sig { params(ai_edit: String).void }
41
+ attr_writer :ai_edit
42
+
43
+ # Applies ImageKit's in-house background removal. Supported inside overlay. See
44
+ # [AI Background Removal](https://imagekit.io/docs/ai-transformations#imagekit-background-removal-e-bgremove).
45
+ sig do
46
+ returns(
47
+ T.nilable(Imagekitio::Transformation::AIRemoveBackground::OrBoolean)
48
+ )
49
+ end
50
+ attr_reader :ai_remove_background
51
+
52
+ sig do
53
+ params(
54
+ ai_remove_background:
55
+ Imagekitio::Transformation::AIRemoveBackground::OrBoolean
56
+ ).void
57
+ end
58
+ attr_writer :ai_remove_background
59
+
60
+ # Uses third-party background removal. Note: It is recommended to use
61
+ # aiRemoveBackground, ImageKit's in-house solution, which is more cost-effective.
62
+ # Supported inside overlay. See
63
+ # [External Background Removal](https://imagekit.io/docs/ai-transformations#background-removal-e-removedotbg).
64
+ sig do
65
+ returns(
66
+ T.nilable(
67
+ Imagekitio::Transformation::AIRemoveBackgroundExternal::OrBoolean
68
+ )
69
+ )
70
+ end
71
+ attr_reader :ai_remove_background_external
72
+
73
+ sig do
74
+ params(
75
+ ai_remove_background_external:
76
+ Imagekitio::Transformation::AIRemoveBackgroundExternal::OrBoolean
77
+ ).void
78
+ end
79
+ attr_writer :ai_remove_background_external
80
+
81
+ # Performs AI-based retouching to improve faces or product shots. Not supported
82
+ # inside overlay. See
83
+ # [AI Retouch](https://imagekit.io/docs/ai-transformations#retouch-e-retouch).
84
+ sig do
85
+ returns(T.nilable(Imagekitio::Transformation::AIRetouch::OrBoolean))
86
+ end
87
+ attr_reader :ai_retouch
88
+
89
+ sig do
90
+ params(
91
+ ai_retouch: Imagekitio::Transformation::AIRetouch::OrBoolean
92
+ ).void
93
+ end
94
+ attr_writer :ai_retouch
95
+
96
+ # Upscales images beyond their original dimensions using AI. Not supported inside
97
+ # overlay. See
98
+ # [AI Upscale](https://imagekit.io/docs/ai-transformations#upscale-e-upscale).
99
+ sig do
100
+ returns(T.nilable(Imagekitio::Transformation::AIUpscale::OrBoolean))
101
+ end
102
+ attr_reader :ai_upscale
103
+
104
+ sig do
105
+ params(
106
+ ai_upscale: Imagekitio::Transformation::AIUpscale::OrBoolean
107
+ ).void
108
+ end
109
+ attr_writer :ai_upscale
110
+
111
+ # Generates a variation of an image using AI. This produces a new image with
112
+ # slight variations from the original, such as changes in color, texture, and
113
+ # other visual elements, while preserving the structure and essence of the
114
+ # original image. Not supported inside overlay. See
115
+ # [AI Generate Variations](https://imagekit.io/docs/ai-transformations#generate-variations-of-an-image-e-genvar).
116
+ sig do
117
+ returns(T.nilable(Imagekitio::Transformation::AIVariation::OrBoolean))
118
+ end
119
+ attr_reader :ai_variation
120
+
121
+ sig do
122
+ params(
123
+ ai_variation: Imagekitio::Transformation::AIVariation::OrBoolean
124
+ ).void
125
+ end
126
+ attr_writer :ai_variation
127
+
128
+ # Specifies the aspect ratio for the output, e.g., "ar-4-3". Typically used with
129
+ # either width or height (but not both). For example: aspectRatio = `4:3`, `4_3`,
130
+ # or an expression like `iar_div_2`. See
131
+ # [Image resize and crop – Aspect ratio](https://imagekit.io/docs/image-resize-and-crop#aspect-ratio---ar).
132
+ sig do
133
+ returns(T.nilable(Imagekitio::Transformation::AspectRatio::Variants))
134
+ end
135
+ attr_reader :aspect_ratio
136
+
137
+ sig do
138
+ params(
139
+ aspect_ratio: Imagekitio::Transformation::AspectRatio::Variants
140
+ ).void
141
+ end
142
+ attr_writer :aspect_ratio
143
+
144
+ # Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
145
+ # [Audio codec](https://imagekit.io/docs/video-optimization#audio-codec---ac).
146
+ sig do
147
+ returns(T.nilable(Imagekitio::Transformation::AudioCodec::OrSymbol))
148
+ end
149
+ attr_reader :audio_codec
150
+
151
+ sig do
152
+ params(
153
+ audio_codec: Imagekitio::Transformation::AudioCodec::OrSymbol
154
+ ).void
155
+ end
156
+ attr_writer :audio_codec
157
+
158
+ # Specifies the background to be used in conjunction with certain cropping
159
+ # strategies when resizing an image.
160
+ #
161
+ # - A solid color: e.g., `red`, `F3F3F3`, `AAFF0010`. See
162
+ # [Solid color background](https://imagekit.io/docs/effects-and-enhancements#solid-color-background).
163
+ # - A blurred background: e.g., `blurred`, `blurred_25_N15`, etc. See
164
+ # [Blurred background](https://imagekit.io/docs/effects-and-enhancements#blurred-background).
165
+ # - Expand the image boundaries using generative fill: `genfill`. Not supported
166
+ # inside overlay. Optionally, control the background scene by passing a text
167
+ # prompt: `genfill[:-prompt-${text}]` or
168
+ # `genfill[:-prompte-${urlencoded_base64_encoded_text}]`. See
169
+ # [Generative fill background](https://imagekit.io/docs/ai-transformations#generative-fill-bg-genfill).
170
+ sig { returns(T.nilable(String)) }
171
+ attr_reader :background
172
+
173
+ sig { params(background: String).void }
174
+ attr_writer :background
175
+
176
+ # Specifies the Gaussian blur level. Accepts an integer value between 1 and 100,
177
+ # or an expression like `bl-10`. See
178
+ # [Blur](https://imagekit.io/docs/effects-and-enhancements#blur---bl).
179
+ sig { returns(T.nilable(Float)) }
180
+ attr_reader :blur
181
+
182
+ sig { params(blur: Float).void }
183
+ attr_writer :blur
184
+
185
+ # Adds a border to the output media. Accepts a string in the format
186
+ # `<border-width>_<hex-code>` (e.g., `5_FFF000` for a 5px yellow border), or an
187
+ # expression like `ih_div_20_FF00FF`. See
188
+ # [Border](https://imagekit.io/docs/effects-and-enhancements#border---b).
189
+ sig { returns(T.nilable(String)) }
190
+ attr_reader :border
191
+
192
+ sig { params(border: String).void }
193
+ attr_writer :border
194
+
195
+ # Indicates whether the output image should retain the original color profile. See
196
+ # [Color profile](https://imagekit.io/docs/image-optimization#color-profile---cp).
197
+ sig { returns(T.nilable(T::Boolean)) }
198
+ attr_reader :color_profile
199
+
200
+ sig { params(color_profile: T::Boolean).void }
201
+ attr_writer :color_profile
202
+
203
+ # Automatically enhances the contrast of an image (contrast stretch). See
204
+ # [Contrast Stretch](https://imagekit.io/docs/effects-and-enhancements#contrast-stretch---e-contrast).
205
+ sig do
206
+ returns(
207
+ T.nilable(Imagekitio::Transformation::ContrastStretch::OrBoolean)
208
+ )
209
+ end
210
+ attr_reader :contrast_stretch
211
+
212
+ sig do
213
+ params(
214
+ contrast_stretch:
215
+ Imagekitio::Transformation::ContrastStretch::OrBoolean
216
+ ).void
217
+ end
218
+ attr_writer :contrast_stretch
219
+
220
+ # Crop modes for image resizing. See
221
+ # [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
222
+ sig { returns(T.nilable(Imagekitio::Transformation::Crop::OrSymbol)) }
223
+ attr_reader :crop
224
+
225
+ sig { params(crop: Imagekitio::Transformation::Crop::OrSymbol).void }
226
+ attr_writer :crop
227
+
228
+ # Additional crop modes for image resizing. See
229
+ # [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
230
+ sig { returns(T.nilable(Imagekitio::Transformation::CropMode::OrSymbol)) }
231
+ attr_reader :crop_mode
232
+
233
+ sig do
234
+ params(crop_mode: Imagekitio::Transformation::CropMode::OrSymbol).void
235
+ end
236
+ attr_writer :crop_mode
237
+
238
+ # Specifies a fallback image if the resource is not found, e.g., a URL or file
239
+ # path. See
240
+ # [Default image](https://imagekit.io/docs/image-transformation#default-image---di).
241
+ sig { returns(T.nilable(String)) }
242
+ attr_reader :default_image
243
+
244
+ sig { params(default_image: String).void }
245
+ attr_writer :default_image
246
+
247
+ # Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio
248
+ # (DPR) calculation. See
249
+ # [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
250
+ sig { returns(T.nilable(Float)) }
251
+ attr_reader :dpr
252
+
253
+ sig { params(dpr: Float).void }
254
+ attr_writer :dpr
255
+
256
+ # Specifies the duration (in seconds) for trimming videos, e.g., `5` or `10.5`.
257
+ # Typically used with startOffset to indicate the length from the start offset.
258
+ # Arithmetic expressions are supported. See
259
+ # [Trim videos – Duration](https://imagekit.io/docs/trim-videos#duration---du).
260
+ sig { returns(T.nilable(Imagekitio::Transformation::Duration::Variants)) }
261
+ attr_reader :duration
262
+
263
+ sig do
264
+ params(duration: Imagekitio::Transformation::Duration::Variants).void
265
+ end
266
+ attr_writer :duration
267
+
268
+ # Specifies the end offset (in seconds) for trimming videos, e.g., `5` or `10.5`.
269
+ # Typically used with startOffset to define a time window. Arithmetic expressions
270
+ # are supported. See
271
+ # [Trim videos – End offset](https://imagekit.io/docs/trim-videos#end-offset---eo).
272
+ sig do
273
+ returns(T.nilable(Imagekitio::Transformation::EndOffset::Variants))
274
+ end
275
+ attr_reader :end_offset
276
+
277
+ sig do
278
+ params(end_offset: Imagekitio::Transformation::EndOffset::Variants).void
279
+ end
280
+ attr_writer :end_offset
281
+
282
+ # Flips or mirrors an image either horizontally, vertically, or both. Acceptable
283
+ # values: `h` (horizontal), `v` (vertical), `h_v` (horizontal and vertical), or
284
+ # `v_h`. See [Flip](https://imagekit.io/docs/effects-and-enhancements#flip---fl).
285
+ sig { returns(T.nilable(Imagekitio::Transformation::Flip::OrSymbol)) }
286
+ attr_reader :flip
287
+
288
+ sig { params(flip: Imagekitio::Transformation::Flip::OrSymbol).void }
289
+ attr_writer :flip
290
+
291
+ # Refines padding and cropping behavior for pad resize, maintain ratio, and
292
+ # extract crop modes. Supports manual positions and coordinate-based focus. With
293
+ # AI-based cropping, you can automatically keep key subjects in frame—such as
294
+ # faces or detected objects (e.g., `fo-face`, `fo-person`, `fo-car`)— while
295
+ # resizing.
296
+ #
297
+ # - See [Focus](https://imagekit.io/docs/image-resize-and-crop#focus---fo).
298
+ # - [Object aware cropping](https://imagekit.io/docs/image-resize-and-crop#object-aware-cropping---fo-object-name)
299
+ sig { returns(T.nilable(String)) }
300
+ attr_reader :focus
301
+
302
+ sig { params(focus: String).void }
303
+ attr_writer :focus
304
+
305
+ # Specifies the output format for images or videos, e.g., `jpg`, `png`, `webp`,
306
+ # `mp4`, or `auto`. You can also pass `orig` for images to return the original
307
+ # format. ImageKit automatically delivers images and videos in the optimal format
308
+ # based on device support unless overridden by the dashboard settings or the
309
+ # format parameter. See
310
+ # [Image format](https://imagekit.io/docs/image-optimization#format---f) and
311
+ # [Video format](https://imagekit.io/docs/video-optimization#format---f).
312
+ sig { returns(T.nilable(Imagekitio::Transformation::Format::OrSymbol)) }
313
+ attr_reader :format_
314
+
315
+ sig { params(format_: Imagekitio::Transformation::Format::OrSymbol).void }
316
+ attr_writer :format_
317
+
318
+ # Creates a linear gradient with two colors. Pass `true` for a default gradient,
319
+ # or provide a string for a custom gradient. See
320
+ # [Gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
321
+ sig { returns(T.nilable(T.any(T::Boolean, String))) }
322
+ attr_reader :gradient
323
+
324
+ sig { params(gradient: T.any(T::Boolean, String)).void }
325
+ attr_writer :gradient
326
+
327
+ # Enables a grayscale effect for images. See
328
+ # [Grayscale](https://imagekit.io/docs/effects-and-enhancements#grayscale---e-grayscale).
329
+ sig do
330
+ returns(T.nilable(Imagekitio::Transformation::Grayscale::OrBoolean))
331
+ end
332
+ attr_reader :grayscale
333
+
334
+ sig do
335
+ params(grayscale: Imagekitio::Transformation::Grayscale::OrBoolean).void
336
+ end
337
+ attr_writer :grayscale
338
+
339
+ # Specifies the height of the output. If a value between 0 and 1 is provided, it
340
+ # is treated as a percentage (e.g., `0.5` represents 50% of the original height).
341
+ # You can also supply arithmetic expressions (e.g., `ih_mul_0.5`). Height
342
+ # transformation –
343
+ # [Images](https://imagekit.io/docs/image-resize-and-crop#height---h) ·
344
+ # [Videos](https://imagekit.io/docs/video-resize-and-crop#height---h)
345
+ sig { returns(T.nilable(Imagekitio::Transformation::Height::Variants)) }
346
+ attr_reader :height
347
+
348
+ sig { params(height: Imagekitio::Transformation::Height::Variants).void }
349
+ attr_writer :height
350
+
351
+ # Specifies whether the output image (in JPEG or PNG) should be compressed
352
+ # losslessly. See
353
+ # [Lossless compression](https://imagekit.io/docs/image-optimization#lossless-webp-and-png---lo).
354
+ sig { returns(T.nilable(T::Boolean)) }
355
+ attr_reader :lossless
356
+
357
+ sig { params(lossless: T::Boolean).void }
358
+ attr_writer :lossless
359
+
360
+ # By default, ImageKit removes all metadata during automatic image compression.
361
+ # Set this to true to preserve metadata. See
362
+ # [Image metadata](https://imagekit.io/docs/image-optimization#image-metadata---md).
363
+ sig { returns(T.nilable(T::Boolean)) }
364
+ attr_reader :metadata
365
+
366
+ sig { params(metadata: T::Boolean).void }
367
+ attr_writer :metadata
368
+
369
+ # Named transformation reference. See
370
+ # [Named transformations](https://imagekit.io/docs/transformations#named-transformations).
371
+ sig { returns(T.nilable(String)) }
372
+ attr_reader :named
373
+
374
+ sig { params(named: String).void }
375
+ attr_writer :named
376
+
377
+ # Specifies the opacity level of the output image. See
378
+ # [Opacity](https://imagekit.io/docs/effects-and-enhancements#opacity---o).
379
+ sig { returns(T.nilable(Float)) }
380
+ attr_reader :opacity
381
+
382
+ sig { params(opacity: Float).void }
383
+ attr_writer :opacity
384
+
385
+ # If set to true, serves the original file without applying any transformations.
386
+ # See
387
+ # [Deliver original file as-is](https://imagekit.io/docs/core-delivery-features#deliver-original-file-as-is---orig-true).
388
+ sig { returns(T.nilable(T::Boolean)) }
389
+ attr_reader :original
390
+
391
+ sig { params(original: T::Boolean).void }
392
+ attr_writer :original
393
+
394
+ # Specifies an overlay to be applied on the parent image or video. ImageKit
395
+ # supports overlays including images, text, videos, subtitles, and solid colors.
396
+ # See
397
+ # [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
398
+ sig { returns(T.nilable(Imagekitio::Overlay)) }
399
+ attr_reader :overlay
400
+
401
+ sig { params(overlay: Imagekitio::Overlay).void }
402
+ attr_writer :overlay
403
+
404
+ # Extracts a specific page or frame from multi-page or layered files (PDF, PSD,
405
+ # AI). For example, specify by number (e.g., `2`), a range (e.g., `3-4` for the
406
+ # 2nd and 3rd layers), or by name (e.g., `name-layer-4` for a PSD layer). See
407
+ # [Thumbnail extraction](https://imagekit.io/docs/vector-and-animated-images#get-thumbnail-from-psd-pdf-ai-eps-and-animated-files).
408
+ sig { returns(T.nilable(Imagekitio::Transformation::Page::Variants)) }
409
+ attr_reader :page
410
+
411
+ sig { params(page: Imagekitio::Transformation::Page::Variants).void }
412
+ attr_writer :page
413
+
414
+ # Specifies whether the output JPEG image should be rendered progressively.
415
+ # Progressive loading begins with a low-quality, pixelated version of the full
416
+ # image, which gradually improves to provide a faster perceived load time. See
417
+ # [Progressive images](https://imagekit.io/docs/image-optimization#progressive-image---pr).
418
+ sig { returns(T.nilable(T::Boolean)) }
419
+ attr_reader :progressive
420
+
421
+ sig { params(progressive: T::Boolean).void }
422
+ attr_writer :progressive
423
+
424
+ # Specifies the quality of the output image for lossy formats such as JPEG, WebP,
425
+ # and AVIF. A higher quality value results in a larger file size with better
426
+ # quality, while a lower value produces a smaller file size with reduced quality.
427
+ # See [Quality](https://imagekit.io/docs/image-optimization#quality---q).
428
+ sig { returns(T.nilable(Float)) }
429
+ attr_reader :quality
430
+
431
+ sig { params(quality: Float).void }
432
+ attr_writer :quality
433
+
434
+ # Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
435
+ # or oval shape. See
436
+ # [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
437
+ sig { returns(T.nilable(T.any(Float, Symbol))) }
438
+ attr_reader :radius
439
+
440
+ sig { params(radius: T.any(Float, Symbol)).void }
441
+ attr_writer :radius
442
+
443
+ # Pass any transformation not directly supported by the SDK. This transformation
444
+ # string is appended to the URL as provided.
445
+ sig { returns(T.nilable(String)) }
446
+ attr_reader :raw
447
+
448
+ sig { params(raw: String).void }
449
+ attr_writer :raw
450
+
451
+ # Specifies the rotation angle in degrees. Positive values rotate the image
452
+ # clockwise; you can also use, for example, `N40` for counterclockwise rotation or
453
+ # `auto` to use the orientation specified in the image's EXIF data. For videos,
454
+ # only the following values are supported: 0, 90, 180, 270, or 360. See
455
+ # [Rotate](https://imagekit.io/docs/effects-and-enhancements#rotate---rt).
456
+ sig { returns(T.nilable(Imagekitio::Transformation::Rotation::Variants)) }
457
+ attr_reader :rotation
458
+
459
+ sig do
460
+ params(rotation: Imagekitio::Transformation::Rotation::Variants).void
461
+ end
462
+ attr_writer :rotation
463
+
464
+ # Adds a shadow beneath solid objects in an image with a transparent background.
465
+ # For AI-based drop shadows, refer to aiDropShadow. Pass `true` for a default
466
+ # shadow, or provide a string for a custom shadow. See
467
+ # [Shadow](https://imagekit.io/docs/effects-and-enhancements#shadow---e-shadow).
468
+ sig { returns(T.nilable(T.any(T::Boolean, String))) }
469
+ attr_reader :shadow
470
+
471
+ sig { params(shadow: T.any(T::Boolean, String)).void }
472
+ attr_writer :shadow
473
+
474
+ # Sharpens the input image, highlighting edges and finer details. Pass `true` for
475
+ # default sharpening, or provide a numeric value for custom sharpening. See
476
+ # [Sharpen](https://imagekit.io/docs/effects-and-enhancements#sharpen---e-sharpen).
477
+ sig { returns(T.nilable(T.any(T::Boolean, Float))) }
478
+ attr_reader :sharpen
479
+
480
+ sig { params(sharpen: T.any(T::Boolean, Float)).void }
481
+ attr_writer :sharpen
482
+
483
+ # Specifies the start offset (in seconds) for trimming videos, e.g., `5` or
484
+ # `10.5`. Arithmetic expressions are also supported. See
485
+ # [Trim videos – Start offset](https://imagekit.io/docs/trim-videos#start-offset---so).
486
+ sig do
487
+ returns(T.nilable(Imagekitio::Transformation::StartOffset::Variants))
488
+ end
489
+ attr_reader :start_offset
490
+
491
+ sig do
492
+ params(
493
+ start_offset: Imagekitio::Transformation::StartOffset::Variants
494
+ ).void
495
+ end
496
+ attr_writer :start_offset
497
+
498
+ # An array of resolutions for adaptive bitrate streaming, e.g., [`240`, `360`,
499
+ # `480`, `720`, `1080`]. See
500
+ # [Adaptive Bitrate Streaming](https://imagekit.io/docs/adaptive-bitrate-streaming).
501
+ sig do
502
+ returns(T.nilable(T::Array[Imagekitio::StreamingResolution::OrSymbol]))
503
+ end
504
+ attr_reader :streaming_resolutions
505
+
506
+ sig do
507
+ params(
508
+ streaming_resolutions:
509
+ T::Array[Imagekitio::StreamingResolution::OrSymbol]
510
+ ).void
511
+ end
512
+ attr_writer :streaming_resolutions
513
+
514
+ # Useful for images with a solid or nearly solid background and a central object.
515
+ # This parameter trims the background, leaving only the central object in the
516
+ # output image. See
517
+ # [Trim edges](https://imagekit.io/docs/effects-and-enhancements#trim-edges---t).
518
+ sig { returns(T.nilable(T.any(T::Boolean, Float))) }
519
+ attr_reader :trim
520
+
521
+ sig { params(trim: T.any(T::Boolean, Float)).void }
522
+ attr_writer :trim
523
+
524
+ # Applies Unsharp Masking (USM), an image sharpening technique. Pass `true` for a
525
+ # default unsharp mask, or provide a string for a custom unsharp mask. See
526
+ # [Unsharp Mask](https://imagekit.io/docs/effects-and-enhancements#unsharp-mask---e-usm).
527
+ sig { returns(T.nilable(T.any(T::Boolean, String))) }
528
+ attr_reader :unsharp_mask
529
+
530
+ sig { params(unsharp_mask: T.any(T::Boolean, String)).void }
531
+ attr_writer :unsharp_mask
532
+
533
+ # Specifies the video codec, e.g., `h264`, `vp9`, `av1`, or `none`. See
534
+ # [Video codec](https://imagekit.io/docs/video-optimization#video-codec---vc).
535
+ sig do
536
+ returns(T.nilable(Imagekitio::Transformation::VideoCodec::OrSymbol))
537
+ end
538
+ attr_reader :video_codec
539
+
540
+ sig do
541
+ params(
542
+ video_codec: Imagekitio::Transformation::VideoCodec::OrSymbol
543
+ ).void
544
+ end
545
+ attr_writer :video_codec
546
+
547
+ # Specifies the width of the output. If a value between 0 and 1 is provided, it is
548
+ # treated as a percentage (e.g., `0.4` represents 40% of the original width). You
549
+ # can also supply arithmetic expressions (e.g., `iw_div_2`). Width transformation
550
+ # – [Images](https://imagekit.io/docs/image-resize-and-crop#width---w) ·
551
+ # [Videos](https://imagekit.io/docs/video-resize-and-crop#width---w)
552
+ sig { returns(T.nilable(Imagekitio::Transformation::Width::Variants)) }
553
+ attr_reader :width
554
+
555
+ sig { params(width: Imagekitio::Transformation::Width::Variants).void }
556
+ attr_writer :width
557
+
558
+ # Focus using cropped image coordinates - X coordinate. See
559
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
560
+ sig { returns(T.nilable(Imagekitio::Transformation::X::Variants)) }
561
+ attr_reader :x
562
+
563
+ sig { params(x: Imagekitio::Transformation::X::Variants).void }
564
+ attr_writer :x
565
+
566
+ # Focus using cropped image coordinates - X center coordinate. See
567
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
568
+ sig { returns(T.nilable(Imagekitio::Transformation::XCenter::Variants)) }
569
+ attr_reader :x_center
570
+
571
+ sig do
572
+ params(x_center: Imagekitio::Transformation::XCenter::Variants).void
573
+ end
574
+ attr_writer :x_center
575
+
576
+ # Focus using cropped image coordinates - Y coordinate. See
577
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
578
+ sig { returns(T.nilable(Imagekitio::Transformation::Y::Variants)) }
579
+ attr_reader :y_
580
+
581
+ sig { params(y_: Imagekitio::Transformation::Y::Variants).void }
582
+ attr_writer :y_
583
+
584
+ # Focus using cropped image coordinates - Y center coordinate. See
585
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
586
+ sig { returns(T.nilable(Imagekitio::Transformation::YCenter::Variants)) }
587
+ attr_reader :y_center
588
+
589
+ sig do
590
+ params(y_center: Imagekitio::Transformation::YCenter::Variants).void
591
+ end
592
+ attr_writer :y_center
593
+
594
+ # Accepts a numeric value that determines how much to zoom in or out of the
595
+ # cropped area. It should be used in conjunction with fo-face or fo-<object_name>.
596
+ # See [Zoom](https://imagekit.io/docs/image-resize-and-crop#zoom---z).
597
+ sig { returns(T.nilable(Float)) }
598
+ attr_reader :zoom
599
+
600
+ sig { params(zoom: Float).void }
601
+ attr_writer :zoom
602
+
603
+ # The SDK provides easy-to-use names for transformations. These names are
604
+ # converted to the corresponding transformation string before being added to the
605
+ # URL. SDKs are updated regularly to support new transformations. If you want to
606
+ # use a transformation that is not supported by the SDK, You can use the `raw`
607
+ # parameter to pass the transformation string directly. See the
608
+ # [Transformations documentation](https://imagekit.io/docs/transformations).
609
+ sig do
610
+ params(
611
+ ai_change_background: String,
612
+ ai_drop_shadow: T.any(T::Boolean, String),
613
+ ai_edit: String,
614
+ ai_remove_background:
615
+ Imagekitio::Transformation::AIRemoveBackground::OrBoolean,
616
+ ai_remove_background_external:
617
+ Imagekitio::Transformation::AIRemoveBackgroundExternal::OrBoolean,
618
+ ai_retouch: Imagekitio::Transformation::AIRetouch::OrBoolean,
619
+ ai_upscale: Imagekitio::Transformation::AIUpscale::OrBoolean,
620
+ ai_variation: Imagekitio::Transformation::AIVariation::OrBoolean,
621
+ aspect_ratio: Imagekitio::Transformation::AspectRatio::Variants,
622
+ audio_codec: Imagekitio::Transformation::AudioCodec::OrSymbol,
623
+ background: String,
624
+ blur: Float,
625
+ border: String,
626
+ color_profile: T::Boolean,
627
+ contrast_stretch:
628
+ Imagekitio::Transformation::ContrastStretch::OrBoolean,
629
+ crop: Imagekitio::Transformation::Crop::OrSymbol,
630
+ crop_mode: Imagekitio::Transformation::CropMode::OrSymbol,
631
+ default_image: String,
632
+ dpr: Float,
633
+ duration: Imagekitio::Transformation::Duration::Variants,
634
+ end_offset: Imagekitio::Transformation::EndOffset::Variants,
635
+ flip: Imagekitio::Transformation::Flip::OrSymbol,
636
+ focus: String,
637
+ format_: Imagekitio::Transformation::Format::OrSymbol,
638
+ gradient: T.any(T::Boolean, String),
639
+ grayscale: Imagekitio::Transformation::Grayscale::OrBoolean,
640
+ height: Imagekitio::Transformation::Height::Variants,
641
+ lossless: T::Boolean,
642
+ metadata: T::Boolean,
643
+ named: String,
644
+ opacity: Float,
645
+ original: T::Boolean,
646
+ overlay: Imagekitio::Overlay,
647
+ page: Imagekitio::Transformation::Page::Variants,
648
+ progressive: T::Boolean,
649
+ quality: Float,
650
+ radius: T.any(Float, Symbol),
651
+ raw: String,
652
+ rotation: Imagekitio::Transformation::Rotation::Variants,
653
+ shadow: T.any(T::Boolean, String),
654
+ sharpen: T.any(T::Boolean, Float),
655
+ start_offset: Imagekitio::Transformation::StartOffset::Variants,
656
+ streaming_resolutions:
657
+ T::Array[Imagekitio::StreamingResolution::OrSymbol],
658
+ trim: T.any(T::Boolean, Float),
659
+ unsharp_mask: T.any(T::Boolean, String),
660
+ video_codec: Imagekitio::Transformation::VideoCodec::OrSymbol,
661
+ width: Imagekitio::Transformation::Width::Variants,
662
+ x: Imagekitio::Transformation::X::Variants,
663
+ x_center: Imagekitio::Transformation::XCenter::Variants,
664
+ y_: Imagekitio::Transformation::Y::Variants,
665
+ y_center: Imagekitio::Transformation::YCenter::Variants,
666
+ zoom: Float
667
+ ).returns(T.attached_class)
668
+ end
669
+ def self.new(
670
+ # Uses AI to change the background. Provide a text prompt or a base64-encoded
671
+ # prompt, e.g., `prompt-snow road` or `prompte-[urlencoded_base64_encoded_text]`.
672
+ # Not supported inside overlay. See
673
+ # [AI Change Background](https://imagekit.io/docs/ai-transformations#change-background-e-changebg).
674
+ ai_change_background: nil,
675
+ # Adds an AI-based drop shadow around a foreground object on a transparent or
676
+ # removed background. Optionally, control the direction, elevation, and saturation
677
+ # of the light source (e.g., `az-45` to change light direction). Pass `true` for
678
+ # the default drop shadow, or provide a string for a custom drop shadow. Supported
679
+ # inside overlay. See
680
+ # [AI Drop Shadow](https://imagekit.io/docs/ai-transformations#ai-drop-shadow-e-dropshadow).
681
+ ai_drop_shadow: nil,
682
+ # Uses AI to edit images based on a text prompt. Provide a text prompt or a
683
+ # base64-encoded prompt, e.g., `prompt-snow road` or
684
+ # `prompte-[urlencoded_base64_encoded_text]`. Not supported inside overlay.
685
+ # See [AI Edit](https://imagekit.io/docs/ai-transformations#edit-image-e-edit).
686
+ ai_edit: nil,
687
+ # Applies ImageKit's in-house background removal. Supported inside overlay. See
688
+ # [AI Background Removal](https://imagekit.io/docs/ai-transformations#imagekit-background-removal-e-bgremove).
689
+ ai_remove_background: nil,
690
+ # Uses third-party background removal. Note: It is recommended to use
691
+ # aiRemoveBackground, ImageKit's in-house solution, which is more cost-effective.
692
+ # Supported inside overlay. See
693
+ # [External Background Removal](https://imagekit.io/docs/ai-transformations#background-removal-e-removedotbg).
694
+ ai_remove_background_external: nil,
695
+ # Performs AI-based retouching to improve faces or product shots. Not supported
696
+ # inside overlay. See
697
+ # [AI Retouch](https://imagekit.io/docs/ai-transformations#retouch-e-retouch).
698
+ ai_retouch: nil,
699
+ # Upscales images beyond their original dimensions using AI. Not supported inside
700
+ # overlay. See
701
+ # [AI Upscale](https://imagekit.io/docs/ai-transformations#upscale-e-upscale).
702
+ ai_upscale: nil,
703
+ # Generates a variation of an image using AI. This produces a new image with
704
+ # slight variations from the original, such as changes in color, texture, and
705
+ # other visual elements, while preserving the structure and essence of the
706
+ # original image. Not supported inside overlay. See
707
+ # [AI Generate Variations](https://imagekit.io/docs/ai-transformations#generate-variations-of-an-image-e-genvar).
708
+ ai_variation: nil,
709
+ # Specifies the aspect ratio for the output, e.g., "ar-4-3". Typically used with
710
+ # either width or height (but not both). For example: aspectRatio = `4:3`, `4_3`,
711
+ # or an expression like `iar_div_2`. See
712
+ # [Image resize and crop – Aspect ratio](https://imagekit.io/docs/image-resize-and-crop#aspect-ratio---ar).
713
+ aspect_ratio: nil,
714
+ # Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
715
+ # [Audio codec](https://imagekit.io/docs/video-optimization#audio-codec---ac).
716
+ audio_codec: nil,
717
+ # Specifies the background to be used in conjunction with certain cropping
718
+ # strategies when resizing an image.
719
+ #
720
+ # - A solid color: e.g., `red`, `F3F3F3`, `AAFF0010`. See
721
+ # [Solid color background](https://imagekit.io/docs/effects-and-enhancements#solid-color-background).
722
+ # - A blurred background: e.g., `blurred`, `blurred_25_N15`, etc. See
723
+ # [Blurred background](https://imagekit.io/docs/effects-and-enhancements#blurred-background).
724
+ # - Expand the image boundaries using generative fill: `genfill`. Not supported
725
+ # inside overlay. Optionally, control the background scene by passing a text
726
+ # prompt: `genfill[:-prompt-${text}]` or
727
+ # `genfill[:-prompte-${urlencoded_base64_encoded_text}]`. See
728
+ # [Generative fill background](https://imagekit.io/docs/ai-transformations#generative-fill-bg-genfill).
729
+ background: nil,
730
+ # Specifies the Gaussian blur level. Accepts an integer value between 1 and 100,
731
+ # or an expression like `bl-10`. See
732
+ # [Blur](https://imagekit.io/docs/effects-and-enhancements#blur---bl).
733
+ blur: nil,
734
+ # Adds a border to the output media. Accepts a string in the format
735
+ # `<border-width>_<hex-code>` (e.g., `5_FFF000` for a 5px yellow border), or an
736
+ # expression like `ih_div_20_FF00FF`. See
737
+ # [Border](https://imagekit.io/docs/effects-and-enhancements#border---b).
738
+ border: nil,
739
+ # Indicates whether the output image should retain the original color profile. See
740
+ # [Color profile](https://imagekit.io/docs/image-optimization#color-profile---cp).
741
+ color_profile: nil,
742
+ # Automatically enhances the contrast of an image (contrast stretch). See
743
+ # [Contrast Stretch](https://imagekit.io/docs/effects-and-enhancements#contrast-stretch---e-contrast).
744
+ contrast_stretch: nil,
745
+ # Crop modes for image resizing. See
746
+ # [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
747
+ crop: nil,
748
+ # Additional crop modes for image resizing. See
749
+ # [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
750
+ crop_mode: nil,
751
+ # Specifies a fallback image if the resource is not found, e.g., a URL or file
752
+ # path. See
753
+ # [Default image](https://imagekit.io/docs/image-transformation#default-image---di).
754
+ default_image: nil,
755
+ # Accepts values between 0.1 and 5, or `auto` for automatic device pixel ratio
756
+ # (DPR) calculation. See
757
+ # [DPR](https://imagekit.io/docs/image-resize-and-crop#dpr---dpr).
758
+ dpr: nil,
759
+ # Specifies the duration (in seconds) for trimming videos, e.g., `5` or `10.5`.
760
+ # Typically used with startOffset to indicate the length from the start offset.
761
+ # Arithmetic expressions are supported. See
762
+ # [Trim videos – Duration](https://imagekit.io/docs/trim-videos#duration---du).
763
+ duration: nil,
764
+ # Specifies the end offset (in seconds) for trimming videos, e.g., `5` or `10.5`.
765
+ # Typically used with startOffset to define a time window. Arithmetic expressions
766
+ # are supported. See
767
+ # [Trim videos – End offset](https://imagekit.io/docs/trim-videos#end-offset---eo).
768
+ end_offset: nil,
769
+ # Flips or mirrors an image either horizontally, vertically, or both. Acceptable
770
+ # values: `h` (horizontal), `v` (vertical), `h_v` (horizontal and vertical), or
771
+ # `v_h`. See [Flip](https://imagekit.io/docs/effects-and-enhancements#flip---fl).
772
+ flip: nil,
773
+ # Refines padding and cropping behavior for pad resize, maintain ratio, and
774
+ # extract crop modes. Supports manual positions and coordinate-based focus. With
775
+ # AI-based cropping, you can automatically keep key subjects in frame—such as
776
+ # faces or detected objects (e.g., `fo-face`, `fo-person`, `fo-car`)— while
777
+ # resizing.
778
+ #
779
+ # - See [Focus](https://imagekit.io/docs/image-resize-and-crop#focus---fo).
780
+ # - [Object aware cropping](https://imagekit.io/docs/image-resize-and-crop#object-aware-cropping---fo-object-name)
781
+ focus: nil,
782
+ # Specifies the output format for images or videos, e.g., `jpg`, `png`, `webp`,
783
+ # `mp4`, or `auto`. You can also pass `orig` for images to return the original
784
+ # format. ImageKit automatically delivers images and videos in the optimal format
785
+ # based on device support unless overridden by the dashboard settings or the
786
+ # format parameter. See
787
+ # [Image format](https://imagekit.io/docs/image-optimization#format---f) and
788
+ # [Video format](https://imagekit.io/docs/video-optimization#format---f).
789
+ format_: nil,
790
+ # Creates a linear gradient with two colors. Pass `true` for a default gradient,
791
+ # or provide a string for a custom gradient. See
792
+ # [Gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
793
+ gradient: nil,
794
+ # Enables a grayscale effect for images. See
795
+ # [Grayscale](https://imagekit.io/docs/effects-and-enhancements#grayscale---e-grayscale).
796
+ grayscale: nil,
797
+ # Specifies the height of the output. If a value between 0 and 1 is provided, it
798
+ # is treated as a percentage (e.g., `0.5` represents 50% of the original height).
799
+ # You can also supply arithmetic expressions (e.g., `ih_mul_0.5`). Height
800
+ # transformation –
801
+ # [Images](https://imagekit.io/docs/image-resize-and-crop#height---h) ·
802
+ # [Videos](https://imagekit.io/docs/video-resize-and-crop#height---h)
803
+ height: nil,
804
+ # Specifies whether the output image (in JPEG or PNG) should be compressed
805
+ # losslessly. See
806
+ # [Lossless compression](https://imagekit.io/docs/image-optimization#lossless-webp-and-png---lo).
807
+ lossless: nil,
808
+ # By default, ImageKit removes all metadata during automatic image compression.
809
+ # Set this to true to preserve metadata. See
810
+ # [Image metadata](https://imagekit.io/docs/image-optimization#image-metadata---md).
811
+ metadata: nil,
812
+ # Named transformation reference. See
813
+ # [Named transformations](https://imagekit.io/docs/transformations#named-transformations).
814
+ named: nil,
815
+ # Specifies the opacity level of the output image. See
816
+ # [Opacity](https://imagekit.io/docs/effects-and-enhancements#opacity---o).
817
+ opacity: nil,
818
+ # If set to true, serves the original file without applying any transformations.
819
+ # See
820
+ # [Deliver original file as-is](https://imagekit.io/docs/core-delivery-features#deliver-original-file-as-is---orig-true).
821
+ original: nil,
822
+ # Specifies an overlay to be applied on the parent image or video. ImageKit
823
+ # supports overlays including images, text, videos, subtitles, and solid colors.
824
+ # See
825
+ # [Overlay using layers](https://imagekit.io/docs/transformations#overlay-using-layers).
826
+ overlay: nil,
827
+ # Extracts a specific page or frame from multi-page or layered files (PDF, PSD,
828
+ # AI). For example, specify by number (e.g., `2`), a range (e.g., `3-4` for the
829
+ # 2nd and 3rd layers), or by name (e.g., `name-layer-4` for a PSD layer). See
830
+ # [Thumbnail extraction](https://imagekit.io/docs/vector-and-animated-images#get-thumbnail-from-psd-pdf-ai-eps-and-animated-files).
831
+ page: nil,
832
+ # Specifies whether the output JPEG image should be rendered progressively.
833
+ # Progressive loading begins with a low-quality, pixelated version of the full
834
+ # image, which gradually improves to provide a faster perceived load time. See
835
+ # [Progressive images](https://imagekit.io/docs/image-optimization#progressive-image---pr).
836
+ progressive: nil,
837
+ # Specifies the quality of the output image for lossy formats such as JPEG, WebP,
838
+ # and AVIF. A higher quality value results in a larger file size with better
839
+ # quality, while a lower value produces a smaller file size with reduced quality.
840
+ # See [Quality](https://imagekit.io/docs/image-optimization#quality---q).
841
+ quality: nil,
842
+ # Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
843
+ # or oval shape. See
844
+ # [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
845
+ radius: nil,
846
+ # Pass any transformation not directly supported by the SDK. This transformation
847
+ # string is appended to the URL as provided.
848
+ raw: nil,
849
+ # Specifies the rotation angle in degrees. Positive values rotate the image
850
+ # clockwise; you can also use, for example, `N40` for counterclockwise rotation or
851
+ # `auto` to use the orientation specified in the image's EXIF data. For videos,
852
+ # only the following values are supported: 0, 90, 180, 270, or 360. See
853
+ # [Rotate](https://imagekit.io/docs/effects-and-enhancements#rotate---rt).
854
+ rotation: nil,
855
+ # Adds a shadow beneath solid objects in an image with a transparent background.
856
+ # For AI-based drop shadows, refer to aiDropShadow. Pass `true` for a default
857
+ # shadow, or provide a string for a custom shadow. See
858
+ # [Shadow](https://imagekit.io/docs/effects-and-enhancements#shadow---e-shadow).
859
+ shadow: nil,
860
+ # Sharpens the input image, highlighting edges and finer details. Pass `true` for
861
+ # default sharpening, or provide a numeric value for custom sharpening. See
862
+ # [Sharpen](https://imagekit.io/docs/effects-and-enhancements#sharpen---e-sharpen).
863
+ sharpen: nil,
864
+ # Specifies the start offset (in seconds) for trimming videos, e.g., `5` or
865
+ # `10.5`. Arithmetic expressions are also supported. See
866
+ # [Trim videos – Start offset](https://imagekit.io/docs/trim-videos#start-offset---so).
867
+ start_offset: nil,
868
+ # An array of resolutions for adaptive bitrate streaming, e.g., [`240`, `360`,
869
+ # `480`, `720`, `1080`]. See
870
+ # [Adaptive Bitrate Streaming](https://imagekit.io/docs/adaptive-bitrate-streaming).
871
+ streaming_resolutions: nil,
872
+ # Useful for images with a solid or nearly solid background and a central object.
873
+ # This parameter trims the background, leaving only the central object in the
874
+ # output image. See
875
+ # [Trim edges](https://imagekit.io/docs/effects-and-enhancements#trim-edges---t).
876
+ trim: nil,
877
+ # Applies Unsharp Masking (USM), an image sharpening technique. Pass `true` for a
878
+ # default unsharp mask, or provide a string for a custom unsharp mask. See
879
+ # [Unsharp Mask](https://imagekit.io/docs/effects-and-enhancements#unsharp-mask---e-usm).
880
+ unsharp_mask: nil,
881
+ # Specifies the video codec, e.g., `h264`, `vp9`, `av1`, or `none`. See
882
+ # [Video codec](https://imagekit.io/docs/video-optimization#video-codec---vc).
883
+ video_codec: nil,
884
+ # Specifies the width of the output. If a value between 0 and 1 is provided, it is
885
+ # treated as a percentage (e.g., `0.4` represents 40% of the original width). You
886
+ # can also supply arithmetic expressions (e.g., `iw_div_2`). Width transformation
887
+ # – [Images](https://imagekit.io/docs/image-resize-and-crop#width---w) ·
888
+ # [Videos](https://imagekit.io/docs/video-resize-and-crop#width---w)
889
+ width: nil,
890
+ # Focus using cropped image coordinates - X coordinate. See
891
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
892
+ x: nil,
893
+ # Focus using cropped image coordinates - X center coordinate. See
894
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
895
+ x_center: nil,
896
+ # Focus using cropped image coordinates - Y coordinate. See
897
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
898
+ y_: nil,
899
+ # Focus using cropped image coordinates - Y center coordinate. See
900
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
901
+ y_center: nil,
902
+ # Accepts a numeric value that determines how much to zoom in or out of the
903
+ # cropped area. It should be used in conjunction with fo-face or fo-<object_name>.
904
+ # See [Zoom](https://imagekit.io/docs/image-resize-and-crop#zoom---z).
905
+ zoom: nil
906
+ )
907
+ end
908
+
909
+ sig do
910
+ override.returns(
911
+ {
912
+ ai_change_background: String,
913
+ ai_drop_shadow: T.any(T::Boolean, String),
914
+ ai_edit: String,
915
+ ai_remove_background:
916
+ Imagekitio::Transformation::AIRemoveBackground::OrBoolean,
917
+ ai_remove_background_external:
918
+ Imagekitio::Transformation::AIRemoveBackgroundExternal::OrBoolean,
919
+ ai_retouch: Imagekitio::Transformation::AIRetouch::OrBoolean,
920
+ ai_upscale: Imagekitio::Transformation::AIUpscale::OrBoolean,
921
+ ai_variation: Imagekitio::Transformation::AIVariation::OrBoolean,
922
+ aspect_ratio: Imagekitio::Transformation::AspectRatio::Variants,
923
+ audio_codec: Imagekitio::Transformation::AudioCodec::OrSymbol,
924
+ background: String,
925
+ blur: Float,
926
+ border: String,
927
+ color_profile: T::Boolean,
928
+ contrast_stretch:
929
+ Imagekitio::Transformation::ContrastStretch::OrBoolean,
930
+ crop: Imagekitio::Transformation::Crop::OrSymbol,
931
+ crop_mode: Imagekitio::Transformation::CropMode::OrSymbol,
932
+ default_image: String,
933
+ dpr: Float,
934
+ duration: Imagekitio::Transformation::Duration::Variants,
935
+ end_offset: Imagekitio::Transformation::EndOffset::Variants,
936
+ flip: Imagekitio::Transformation::Flip::OrSymbol,
937
+ focus: String,
938
+ format_: Imagekitio::Transformation::Format::OrSymbol,
939
+ gradient: T.any(T::Boolean, String),
940
+ grayscale: Imagekitio::Transformation::Grayscale::OrBoolean,
941
+ height: Imagekitio::Transformation::Height::Variants,
942
+ lossless: T::Boolean,
943
+ metadata: T::Boolean,
944
+ named: String,
945
+ opacity: Float,
946
+ original: T::Boolean,
947
+ overlay: Imagekitio::Overlay,
948
+ page: Imagekitio::Transformation::Page::Variants,
949
+ progressive: T::Boolean,
950
+ quality: Float,
951
+ radius: T.any(Float, Symbol),
952
+ raw: String,
953
+ rotation: Imagekitio::Transformation::Rotation::Variants,
954
+ shadow: T.any(T::Boolean, String),
955
+ sharpen: T.any(T::Boolean, Float),
956
+ start_offset: Imagekitio::Transformation::StartOffset::Variants,
957
+ streaming_resolutions:
958
+ T::Array[Imagekitio::StreamingResolution::OrSymbol],
959
+ trim: T.any(T::Boolean, Float),
960
+ unsharp_mask: T.any(T::Boolean, String),
961
+ video_codec: Imagekitio::Transformation::VideoCodec::OrSymbol,
962
+ width: Imagekitio::Transformation::Width::Variants,
963
+ x: Imagekitio::Transformation::X::Variants,
964
+ x_center: Imagekitio::Transformation::XCenter::Variants,
965
+ y_: Imagekitio::Transformation::Y::Variants,
966
+ y_center: Imagekitio::Transformation::YCenter::Variants,
967
+ zoom: Float
968
+ }
969
+ )
970
+ end
971
+ def to_hash
972
+ end
973
+
974
+ # Adds an AI-based drop shadow around a foreground object on a transparent or
975
+ # removed background. Optionally, control the direction, elevation, and saturation
976
+ # of the light source (e.g., `az-45` to change light direction). Pass `true` for
977
+ # the default drop shadow, or provide a string for a custom drop shadow. Supported
978
+ # inside overlay. See
979
+ # [AI Drop Shadow](https://imagekit.io/docs/ai-transformations#ai-drop-shadow-e-dropshadow).
980
+ module AIDropShadow
981
+ extend Imagekitio::Internal::Type::Union
982
+
983
+ Variants = T.type_alias { T.any(T::Boolean, String) }
984
+
985
+ sig do
986
+ override.returns(
987
+ T::Array[Imagekitio::Transformation::AIDropShadow::Variants]
988
+ )
989
+ end
990
+ def self.variants
991
+ end
992
+ end
993
+
994
+ # Applies ImageKit's in-house background removal. Supported inside overlay. See
995
+ # [AI Background Removal](https://imagekit.io/docs/ai-transformations#imagekit-background-removal-e-bgremove).
996
+ module AIRemoveBackground
997
+ extend Imagekitio::Internal::Type::Enum
998
+
999
+ TaggedBoolean =
1000
+ T.type_alias do
1001
+ T.all(T::Boolean, Imagekitio::Transformation::AIRemoveBackground)
1002
+ end
1003
+ OrBoolean = T.type_alias { T::Boolean }
1004
+
1005
+ TRUE =
1006
+ T.let(
1007
+ true,
1008
+ Imagekitio::Transformation::AIRemoveBackground::TaggedBoolean
1009
+ )
1010
+
1011
+ sig do
1012
+ override.returns(
1013
+ T::Array[
1014
+ Imagekitio::Transformation::AIRemoveBackground::TaggedBoolean
1015
+ ]
1016
+ )
1017
+ end
1018
+ def self.values
1019
+ end
1020
+ end
1021
+
1022
+ # Uses third-party background removal. Note: It is recommended to use
1023
+ # aiRemoveBackground, ImageKit's in-house solution, which is more cost-effective.
1024
+ # Supported inside overlay. See
1025
+ # [External Background Removal](https://imagekit.io/docs/ai-transformations#background-removal-e-removedotbg).
1026
+ module AIRemoveBackgroundExternal
1027
+ extend Imagekitio::Internal::Type::Enum
1028
+
1029
+ TaggedBoolean =
1030
+ T.type_alias do
1031
+ T.all(
1032
+ T::Boolean,
1033
+ Imagekitio::Transformation::AIRemoveBackgroundExternal
1034
+ )
1035
+ end
1036
+ OrBoolean = T.type_alias { T::Boolean }
1037
+
1038
+ TRUE =
1039
+ T.let(
1040
+ true,
1041
+ Imagekitio::Transformation::AIRemoveBackgroundExternal::TaggedBoolean
1042
+ )
1043
+
1044
+ sig do
1045
+ override.returns(
1046
+ T::Array[
1047
+ Imagekitio::Transformation::AIRemoveBackgroundExternal::TaggedBoolean
1048
+ ]
1049
+ )
1050
+ end
1051
+ def self.values
1052
+ end
1053
+ end
1054
+
1055
+ # Performs AI-based retouching to improve faces or product shots. Not supported
1056
+ # inside overlay. See
1057
+ # [AI Retouch](https://imagekit.io/docs/ai-transformations#retouch-e-retouch).
1058
+ module AIRetouch
1059
+ extend Imagekitio::Internal::Type::Enum
1060
+
1061
+ TaggedBoolean =
1062
+ T.type_alias do
1063
+ T.all(T::Boolean, Imagekitio::Transformation::AIRetouch)
1064
+ end
1065
+ OrBoolean = T.type_alias { T::Boolean }
1066
+
1067
+ TRUE = T.let(true, Imagekitio::Transformation::AIRetouch::TaggedBoolean)
1068
+
1069
+ sig do
1070
+ override.returns(
1071
+ T::Array[Imagekitio::Transformation::AIRetouch::TaggedBoolean]
1072
+ )
1073
+ end
1074
+ def self.values
1075
+ end
1076
+ end
1077
+
1078
+ # Upscales images beyond their original dimensions using AI. Not supported inside
1079
+ # overlay. See
1080
+ # [AI Upscale](https://imagekit.io/docs/ai-transformations#upscale-e-upscale).
1081
+ module AIUpscale
1082
+ extend Imagekitio::Internal::Type::Enum
1083
+
1084
+ TaggedBoolean =
1085
+ T.type_alias do
1086
+ T.all(T::Boolean, Imagekitio::Transformation::AIUpscale)
1087
+ end
1088
+ OrBoolean = T.type_alias { T::Boolean }
1089
+
1090
+ TRUE = T.let(true, Imagekitio::Transformation::AIUpscale::TaggedBoolean)
1091
+
1092
+ sig do
1093
+ override.returns(
1094
+ T::Array[Imagekitio::Transformation::AIUpscale::TaggedBoolean]
1095
+ )
1096
+ end
1097
+ def self.values
1098
+ end
1099
+ end
1100
+
1101
+ # Generates a variation of an image using AI. This produces a new image with
1102
+ # slight variations from the original, such as changes in color, texture, and
1103
+ # other visual elements, while preserving the structure and essence of the
1104
+ # original image. Not supported inside overlay. See
1105
+ # [AI Generate Variations](https://imagekit.io/docs/ai-transformations#generate-variations-of-an-image-e-genvar).
1106
+ module AIVariation
1107
+ extend Imagekitio::Internal::Type::Enum
1108
+
1109
+ TaggedBoolean =
1110
+ T.type_alias do
1111
+ T.all(T::Boolean, Imagekitio::Transformation::AIVariation)
1112
+ end
1113
+ OrBoolean = T.type_alias { T::Boolean }
1114
+
1115
+ TRUE =
1116
+ T.let(true, Imagekitio::Transformation::AIVariation::TaggedBoolean)
1117
+
1118
+ sig do
1119
+ override.returns(
1120
+ T::Array[Imagekitio::Transformation::AIVariation::TaggedBoolean]
1121
+ )
1122
+ end
1123
+ def self.values
1124
+ end
1125
+ end
1126
+
1127
+ # Specifies the aspect ratio for the output, e.g., "ar-4-3". Typically used with
1128
+ # either width or height (but not both). For example: aspectRatio = `4:3`, `4_3`,
1129
+ # or an expression like `iar_div_2`. See
1130
+ # [Image resize and crop – Aspect ratio](https://imagekit.io/docs/image-resize-and-crop#aspect-ratio---ar).
1131
+ module AspectRatio
1132
+ extend Imagekitio::Internal::Type::Union
1133
+
1134
+ Variants = T.type_alias { T.any(Float, String) }
1135
+
1136
+ sig do
1137
+ override.returns(
1138
+ T::Array[Imagekitio::Transformation::AspectRatio::Variants]
1139
+ )
1140
+ end
1141
+ def self.variants
1142
+ end
1143
+ end
1144
+
1145
+ # Specifies the audio codec, e.g., `aac`, `opus`, or `none`. See
1146
+ # [Audio codec](https://imagekit.io/docs/video-optimization#audio-codec---ac).
1147
+ module AudioCodec
1148
+ extend Imagekitio::Internal::Type::Enum
1149
+
1150
+ TaggedSymbol =
1151
+ T.type_alias { T.all(Symbol, Imagekitio::Transformation::AudioCodec) }
1152
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1153
+
1154
+ AAC = T.let(:aac, Imagekitio::Transformation::AudioCodec::TaggedSymbol)
1155
+ OPUS =
1156
+ T.let(:opus, Imagekitio::Transformation::AudioCodec::TaggedSymbol)
1157
+ NONE =
1158
+ T.let(:none, Imagekitio::Transformation::AudioCodec::TaggedSymbol)
1159
+
1160
+ sig do
1161
+ override.returns(
1162
+ T::Array[Imagekitio::Transformation::AudioCodec::TaggedSymbol]
1163
+ )
1164
+ end
1165
+ def self.values
1166
+ end
1167
+ end
1168
+
1169
+ # Automatically enhances the contrast of an image (contrast stretch). See
1170
+ # [Contrast Stretch](https://imagekit.io/docs/effects-and-enhancements#contrast-stretch---e-contrast).
1171
+ module ContrastStretch
1172
+ extend Imagekitio::Internal::Type::Enum
1173
+
1174
+ TaggedBoolean =
1175
+ T.type_alias do
1176
+ T.all(T::Boolean, Imagekitio::Transformation::ContrastStretch)
1177
+ end
1178
+ OrBoolean = T.type_alias { T::Boolean }
1179
+
1180
+ TRUE =
1181
+ T.let(
1182
+ true,
1183
+ Imagekitio::Transformation::ContrastStretch::TaggedBoolean
1184
+ )
1185
+
1186
+ sig do
1187
+ override.returns(
1188
+ T::Array[Imagekitio::Transformation::ContrastStretch::TaggedBoolean]
1189
+ )
1190
+ end
1191
+ def self.values
1192
+ end
1193
+ end
1194
+
1195
+ # Crop modes for image resizing. See
1196
+ # [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
1197
+ module Crop
1198
+ extend Imagekitio::Internal::Type::Enum
1199
+
1200
+ TaggedSymbol =
1201
+ T.type_alias { T.all(Symbol, Imagekitio::Transformation::Crop) }
1202
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1203
+
1204
+ FORCE = T.let(:force, Imagekitio::Transformation::Crop::TaggedSymbol)
1205
+ AT_MAX = T.let(:at_max, Imagekitio::Transformation::Crop::TaggedSymbol)
1206
+ AT_MAX_ENLARGE =
1207
+ T.let(:at_max_enlarge, Imagekitio::Transformation::Crop::TaggedSymbol)
1208
+ AT_LEAST =
1209
+ T.let(:at_least, Imagekitio::Transformation::Crop::TaggedSymbol)
1210
+ MAINTAIN_RATIO =
1211
+ T.let(:maintain_ratio, Imagekitio::Transformation::Crop::TaggedSymbol)
1212
+
1213
+ sig do
1214
+ override.returns(
1215
+ T::Array[Imagekitio::Transformation::Crop::TaggedSymbol]
1216
+ )
1217
+ end
1218
+ def self.values
1219
+ end
1220
+ end
1221
+
1222
+ # Additional crop modes for image resizing. See
1223
+ # [Crop modes & focus](https://imagekit.io/docs/image-resize-and-crop#crop-crop-modes--focus).
1224
+ module CropMode
1225
+ extend Imagekitio::Internal::Type::Enum
1226
+
1227
+ TaggedSymbol =
1228
+ T.type_alias { T.all(Symbol, Imagekitio::Transformation::CropMode) }
1229
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1230
+
1231
+ PAD_RESIZE =
1232
+ T.let(:pad_resize, Imagekitio::Transformation::CropMode::TaggedSymbol)
1233
+ EXTRACT =
1234
+ T.let(:extract, Imagekitio::Transformation::CropMode::TaggedSymbol)
1235
+ PAD_EXTRACT =
1236
+ T.let(
1237
+ :pad_extract,
1238
+ Imagekitio::Transformation::CropMode::TaggedSymbol
1239
+ )
1240
+
1241
+ sig do
1242
+ override.returns(
1243
+ T::Array[Imagekitio::Transformation::CropMode::TaggedSymbol]
1244
+ )
1245
+ end
1246
+ def self.values
1247
+ end
1248
+ end
1249
+
1250
+ # Specifies the duration (in seconds) for trimming videos, e.g., `5` or `10.5`.
1251
+ # Typically used with startOffset to indicate the length from the start offset.
1252
+ # Arithmetic expressions are supported. See
1253
+ # [Trim videos – Duration](https://imagekit.io/docs/trim-videos#duration---du).
1254
+ module Duration
1255
+ extend Imagekitio::Internal::Type::Union
1256
+
1257
+ Variants = T.type_alias { T.any(Float, String) }
1258
+
1259
+ sig do
1260
+ override.returns(
1261
+ T::Array[Imagekitio::Transformation::Duration::Variants]
1262
+ )
1263
+ end
1264
+ def self.variants
1265
+ end
1266
+ end
1267
+
1268
+ # Specifies the end offset (in seconds) for trimming videos, e.g., `5` or `10.5`.
1269
+ # Typically used with startOffset to define a time window. Arithmetic expressions
1270
+ # are supported. See
1271
+ # [Trim videos – End offset](https://imagekit.io/docs/trim-videos#end-offset---eo).
1272
+ module EndOffset
1273
+ extend Imagekitio::Internal::Type::Union
1274
+
1275
+ Variants = T.type_alias { T.any(Float, String) }
1276
+
1277
+ sig do
1278
+ override.returns(
1279
+ T::Array[Imagekitio::Transformation::EndOffset::Variants]
1280
+ )
1281
+ end
1282
+ def self.variants
1283
+ end
1284
+ end
1285
+
1286
+ # Flips or mirrors an image either horizontally, vertically, or both. Acceptable
1287
+ # values: `h` (horizontal), `v` (vertical), `h_v` (horizontal and vertical), or
1288
+ # `v_h`. See [Flip](https://imagekit.io/docs/effects-and-enhancements#flip---fl).
1289
+ module Flip
1290
+ extend Imagekitio::Internal::Type::Enum
1291
+
1292
+ TaggedSymbol =
1293
+ T.type_alias { T.all(Symbol, Imagekitio::Transformation::Flip) }
1294
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1295
+
1296
+ H = T.let(:h, Imagekitio::Transformation::Flip::TaggedSymbol)
1297
+ V = T.let(:v, Imagekitio::Transformation::Flip::TaggedSymbol)
1298
+ H_V = T.let(:h_v, Imagekitio::Transformation::Flip::TaggedSymbol)
1299
+ V_H = T.let(:v_h, Imagekitio::Transformation::Flip::TaggedSymbol)
1300
+
1301
+ sig do
1302
+ override.returns(
1303
+ T::Array[Imagekitio::Transformation::Flip::TaggedSymbol]
1304
+ )
1305
+ end
1306
+ def self.values
1307
+ end
1308
+ end
1309
+
1310
+ # Specifies the output format for images or videos, e.g., `jpg`, `png`, `webp`,
1311
+ # `mp4`, or `auto`. You can also pass `orig` for images to return the original
1312
+ # format. ImageKit automatically delivers images and videos in the optimal format
1313
+ # based on device support unless overridden by the dashboard settings or the
1314
+ # format parameter. See
1315
+ # [Image format](https://imagekit.io/docs/image-optimization#format---f) and
1316
+ # [Video format](https://imagekit.io/docs/video-optimization#format---f).
1317
+ module Format
1318
+ extend Imagekitio::Internal::Type::Enum
1319
+
1320
+ TaggedSymbol =
1321
+ T.type_alias { T.all(Symbol, Imagekitio::Transformation::Format) }
1322
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1323
+
1324
+ AUTO = T.let(:auto, Imagekitio::Transformation::Format::TaggedSymbol)
1325
+ WEBP = T.let(:webp, Imagekitio::Transformation::Format::TaggedSymbol)
1326
+ JPG = T.let(:jpg, Imagekitio::Transformation::Format::TaggedSymbol)
1327
+ JPEG = T.let(:jpeg, Imagekitio::Transformation::Format::TaggedSymbol)
1328
+ PNG = T.let(:png, Imagekitio::Transformation::Format::TaggedSymbol)
1329
+ GIF = T.let(:gif, Imagekitio::Transformation::Format::TaggedSymbol)
1330
+ SVG = T.let(:svg, Imagekitio::Transformation::Format::TaggedSymbol)
1331
+ MP4 = T.let(:mp4, Imagekitio::Transformation::Format::TaggedSymbol)
1332
+ WEBM = T.let(:webm, Imagekitio::Transformation::Format::TaggedSymbol)
1333
+ AVIF = T.let(:avif, Imagekitio::Transformation::Format::TaggedSymbol)
1334
+ ORIG = T.let(:orig, Imagekitio::Transformation::Format::TaggedSymbol)
1335
+
1336
+ sig do
1337
+ override.returns(
1338
+ T::Array[Imagekitio::Transformation::Format::TaggedSymbol]
1339
+ )
1340
+ end
1341
+ def self.values
1342
+ end
1343
+ end
1344
+
1345
+ # Creates a linear gradient with two colors. Pass `true` for a default gradient,
1346
+ # or provide a string for a custom gradient. See
1347
+ # [Gradient](https://imagekit.io/docs/effects-and-enhancements#gradient---e-gradient).
1348
+ module Gradient
1349
+ extend Imagekitio::Internal::Type::Union
1350
+
1351
+ Variants = T.type_alias { T.any(T::Boolean, String) }
1352
+
1353
+ sig do
1354
+ override.returns(
1355
+ T::Array[Imagekitio::Transformation::Gradient::Variants]
1356
+ )
1357
+ end
1358
+ def self.variants
1359
+ end
1360
+ end
1361
+
1362
+ # Enables a grayscale effect for images. See
1363
+ # [Grayscale](https://imagekit.io/docs/effects-and-enhancements#grayscale---e-grayscale).
1364
+ module Grayscale
1365
+ extend Imagekitio::Internal::Type::Enum
1366
+
1367
+ TaggedBoolean =
1368
+ T.type_alias do
1369
+ T.all(T::Boolean, Imagekitio::Transformation::Grayscale)
1370
+ end
1371
+ OrBoolean = T.type_alias { T::Boolean }
1372
+
1373
+ TRUE = T.let(true, Imagekitio::Transformation::Grayscale::TaggedBoolean)
1374
+
1375
+ sig do
1376
+ override.returns(
1377
+ T::Array[Imagekitio::Transformation::Grayscale::TaggedBoolean]
1378
+ )
1379
+ end
1380
+ def self.values
1381
+ end
1382
+ end
1383
+
1384
+ # Specifies the height of the output. If a value between 0 and 1 is provided, it
1385
+ # is treated as a percentage (e.g., `0.5` represents 50% of the original height).
1386
+ # You can also supply arithmetic expressions (e.g., `ih_mul_0.5`). Height
1387
+ # transformation –
1388
+ # [Images](https://imagekit.io/docs/image-resize-and-crop#height---h) ·
1389
+ # [Videos](https://imagekit.io/docs/video-resize-and-crop#height---h)
1390
+ module Height
1391
+ extend Imagekitio::Internal::Type::Union
1392
+
1393
+ Variants = T.type_alias { T.any(Float, String) }
1394
+
1395
+ sig do
1396
+ override.returns(
1397
+ T::Array[Imagekitio::Transformation::Height::Variants]
1398
+ )
1399
+ end
1400
+ def self.variants
1401
+ end
1402
+ end
1403
+
1404
+ # Extracts a specific page or frame from multi-page or layered files (PDF, PSD,
1405
+ # AI). For example, specify by number (e.g., `2`), a range (e.g., `3-4` for the
1406
+ # 2nd and 3rd layers), or by name (e.g., `name-layer-4` for a PSD layer). See
1407
+ # [Thumbnail extraction](https://imagekit.io/docs/vector-and-animated-images#get-thumbnail-from-psd-pdf-ai-eps-and-animated-files).
1408
+ module Page
1409
+ extend Imagekitio::Internal::Type::Union
1410
+
1411
+ Variants = T.type_alias { T.any(Float, String) }
1412
+
1413
+ sig do
1414
+ override.returns(T::Array[Imagekitio::Transformation::Page::Variants])
1415
+ end
1416
+ def self.variants
1417
+ end
1418
+ end
1419
+
1420
+ # Specifies the corner radius for rounded corners (e.g., 20) or `max` for circular
1421
+ # or oval shape. See
1422
+ # [Radius](https://imagekit.io/docs/effects-and-enhancements#radius---r).
1423
+ module Radius
1424
+ extend Imagekitio::Internal::Type::Union
1425
+
1426
+ Variants = T.type_alias { T.any(Float, Symbol) }
1427
+
1428
+ sig do
1429
+ override.returns(
1430
+ T::Array[Imagekitio::Transformation::Radius::Variants]
1431
+ )
1432
+ end
1433
+ def self.variants
1434
+ end
1435
+ end
1436
+
1437
+ # Specifies the rotation angle in degrees. Positive values rotate the image
1438
+ # clockwise; you can also use, for example, `N40` for counterclockwise rotation or
1439
+ # `auto` to use the orientation specified in the image's EXIF data. For videos,
1440
+ # only the following values are supported: 0, 90, 180, 270, or 360. See
1441
+ # [Rotate](https://imagekit.io/docs/effects-and-enhancements#rotate---rt).
1442
+ module Rotation
1443
+ extend Imagekitio::Internal::Type::Union
1444
+
1445
+ Variants = T.type_alias { T.any(Float, String) }
1446
+
1447
+ sig do
1448
+ override.returns(
1449
+ T::Array[Imagekitio::Transformation::Rotation::Variants]
1450
+ )
1451
+ end
1452
+ def self.variants
1453
+ end
1454
+ end
1455
+
1456
+ # Adds a shadow beneath solid objects in an image with a transparent background.
1457
+ # For AI-based drop shadows, refer to aiDropShadow. Pass `true` for a default
1458
+ # shadow, or provide a string for a custom shadow. See
1459
+ # [Shadow](https://imagekit.io/docs/effects-and-enhancements#shadow---e-shadow).
1460
+ module Shadow
1461
+ extend Imagekitio::Internal::Type::Union
1462
+
1463
+ Variants = T.type_alias { T.any(T::Boolean, String) }
1464
+
1465
+ sig do
1466
+ override.returns(
1467
+ T::Array[Imagekitio::Transformation::Shadow::Variants]
1468
+ )
1469
+ end
1470
+ def self.variants
1471
+ end
1472
+ end
1473
+
1474
+ # Sharpens the input image, highlighting edges and finer details. Pass `true` for
1475
+ # default sharpening, or provide a numeric value for custom sharpening. See
1476
+ # [Sharpen](https://imagekit.io/docs/effects-and-enhancements#sharpen---e-sharpen).
1477
+ module Sharpen
1478
+ extend Imagekitio::Internal::Type::Union
1479
+
1480
+ Variants = T.type_alias { T.any(T::Boolean, Float) }
1481
+
1482
+ sig do
1483
+ override.returns(
1484
+ T::Array[Imagekitio::Transformation::Sharpen::Variants]
1485
+ )
1486
+ end
1487
+ def self.variants
1488
+ end
1489
+ end
1490
+
1491
+ # Specifies the start offset (in seconds) for trimming videos, e.g., `5` or
1492
+ # `10.5`. Arithmetic expressions are also supported. See
1493
+ # [Trim videos – Start offset](https://imagekit.io/docs/trim-videos#start-offset---so).
1494
+ module StartOffset
1495
+ extend Imagekitio::Internal::Type::Union
1496
+
1497
+ Variants = T.type_alias { T.any(Float, String) }
1498
+
1499
+ sig do
1500
+ override.returns(
1501
+ T::Array[Imagekitio::Transformation::StartOffset::Variants]
1502
+ )
1503
+ end
1504
+ def self.variants
1505
+ end
1506
+ end
1507
+
1508
+ # Useful for images with a solid or nearly solid background and a central object.
1509
+ # This parameter trims the background, leaving only the central object in the
1510
+ # output image. See
1511
+ # [Trim edges](https://imagekit.io/docs/effects-and-enhancements#trim-edges---t).
1512
+ module Trim
1513
+ extend Imagekitio::Internal::Type::Union
1514
+
1515
+ Variants = T.type_alias { T.any(T::Boolean, Float) }
1516
+
1517
+ sig do
1518
+ override.returns(T::Array[Imagekitio::Transformation::Trim::Variants])
1519
+ end
1520
+ def self.variants
1521
+ end
1522
+ end
1523
+
1524
+ # Applies Unsharp Masking (USM), an image sharpening technique. Pass `true` for a
1525
+ # default unsharp mask, or provide a string for a custom unsharp mask. See
1526
+ # [Unsharp Mask](https://imagekit.io/docs/effects-and-enhancements#unsharp-mask---e-usm).
1527
+ module UnsharpMask
1528
+ extend Imagekitio::Internal::Type::Union
1529
+
1530
+ Variants = T.type_alias { T.any(T::Boolean, String) }
1531
+
1532
+ sig do
1533
+ override.returns(
1534
+ T::Array[Imagekitio::Transformation::UnsharpMask::Variants]
1535
+ )
1536
+ end
1537
+ def self.variants
1538
+ end
1539
+ end
1540
+
1541
+ # Specifies the video codec, e.g., `h264`, `vp9`, `av1`, or `none`. See
1542
+ # [Video codec](https://imagekit.io/docs/video-optimization#video-codec---vc).
1543
+ module VideoCodec
1544
+ extend Imagekitio::Internal::Type::Enum
1545
+
1546
+ TaggedSymbol =
1547
+ T.type_alias { T.all(Symbol, Imagekitio::Transformation::VideoCodec) }
1548
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1549
+
1550
+ H264 =
1551
+ T.let(:h264, Imagekitio::Transformation::VideoCodec::TaggedSymbol)
1552
+ VP9 = T.let(:vp9, Imagekitio::Transformation::VideoCodec::TaggedSymbol)
1553
+ AV1 = T.let(:av1, Imagekitio::Transformation::VideoCodec::TaggedSymbol)
1554
+ NONE =
1555
+ T.let(:none, Imagekitio::Transformation::VideoCodec::TaggedSymbol)
1556
+
1557
+ sig do
1558
+ override.returns(
1559
+ T::Array[Imagekitio::Transformation::VideoCodec::TaggedSymbol]
1560
+ )
1561
+ end
1562
+ def self.values
1563
+ end
1564
+ end
1565
+
1566
+ # Specifies the width of the output. If a value between 0 and 1 is provided, it is
1567
+ # treated as a percentage (e.g., `0.4` represents 40% of the original width). You
1568
+ # can also supply arithmetic expressions (e.g., `iw_div_2`). Width transformation
1569
+ # – [Images](https://imagekit.io/docs/image-resize-and-crop#width---w) ·
1570
+ # [Videos](https://imagekit.io/docs/video-resize-and-crop#width---w)
1571
+ module Width
1572
+ extend Imagekitio::Internal::Type::Union
1573
+
1574
+ Variants = T.type_alias { T.any(Float, String) }
1575
+
1576
+ sig do
1577
+ override.returns(
1578
+ T::Array[Imagekitio::Transformation::Width::Variants]
1579
+ )
1580
+ end
1581
+ def self.variants
1582
+ end
1583
+ end
1584
+
1585
+ # Focus using cropped image coordinates - X coordinate. See
1586
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
1587
+ module X
1588
+ extend Imagekitio::Internal::Type::Union
1589
+
1590
+ Variants = T.type_alias { T.any(Float, String) }
1591
+
1592
+ sig do
1593
+ override.returns(T::Array[Imagekitio::Transformation::X::Variants])
1594
+ end
1595
+ def self.variants
1596
+ end
1597
+ end
1598
+
1599
+ # Focus using cropped image coordinates - X center coordinate. See
1600
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
1601
+ module XCenter
1602
+ extend Imagekitio::Internal::Type::Union
1603
+
1604
+ Variants = T.type_alias { T.any(Float, String) }
1605
+
1606
+ sig do
1607
+ override.returns(
1608
+ T::Array[Imagekitio::Transformation::XCenter::Variants]
1609
+ )
1610
+ end
1611
+ def self.variants
1612
+ end
1613
+ end
1614
+
1615
+ # Focus using cropped image coordinates - Y coordinate. See
1616
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
1617
+ module Y
1618
+ extend Imagekitio::Internal::Type::Union
1619
+
1620
+ Variants = T.type_alias { T.any(Float, String) }
1621
+
1622
+ sig do
1623
+ override.returns(T::Array[Imagekitio::Transformation::Y::Variants])
1624
+ end
1625
+ def self.variants
1626
+ end
1627
+ end
1628
+
1629
+ # Focus using cropped image coordinates - Y center coordinate. See
1630
+ # [Focus using cropped coordinates](https://imagekit.io/docs/image-resize-and-crop#example---focus-using-cropped-image-coordinates).
1631
+ module YCenter
1632
+ extend Imagekitio::Internal::Type::Union
1633
+
1634
+ Variants = T.type_alias { T.any(Float, String) }
1635
+
1636
+ sig do
1637
+ override.returns(
1638
+ T::Array[Imagekitio::Transformation::YCenter::Variants]
1639
+ )
1640
+ end
1641
+ def self.variants
1642
+ end
1643
+ end
1644
+ end
1645
+ end
1646
+ end