 (s/def ::string string?)
 (s/def ::type keyword?)
 (s/def ::uuid uuid?)
+(s/def ::safe-integer
+  #(and
+    (integer? %)
+    (>= % min-safe-int)
+    (<= % max-safe-int)))
 
 ;; Page Options
-
 
 ;; TODO: missing specs for :saved-grids
 

(s/def :internal.shape/fill-color string?)
(s/def :internal.shape/fill-color-ref-file (s/nilable uuid?))
(s/def :internal.shape/fill-color-ref-id (s/nilable uuid?))
(s/def :internal.shape/fill-opacity number?)
(s/def :internal.shape/font-family string?)
(s/def :internal.shape/font-size number?)
(s/def :internal.shape/font-style string?)
(s/def :internal.shape/font-weight string?)
(s/def :internal.shape/hidden boolean?)
(s/def :internal.shape/letter-spacing number?)
(s/def :internal.shape/line-height number?)
(s/def :internal.shape/locked boolean?)
(s/def :internal.shape/page-id uuid?)
(s/def :internal.shape/proportion number?)
(s/def :internal.shape/proportion-lock boolean?)
(s/def :internal.shape/rx number?)
(s/def :internal.shape/ry number?)
(s/def :internal.shape/stroke-color string?)
(s/def :internal.shape/stroke-color-ref-file (s/nilable uuid?))
(s/def :internal.shape/stroke-color-ref-id (s/nilable uuid?))
(s/def :internal.shape/stroke-opacity number?)
(s/def :internal.shape/stroke-style #{:solid :dotted :dashed :mixed :none})
(s/def :internal.shape/stroke-width number?)
(s/def :internal.shape/stroke-alignment #{:center :inner :outer})
(s/def :internal.shape/text-align #{"left" "right" "center" "justify"})
(s/def :internal.shape/x number?)
(s/def :internal.shape/y number?)
(s/def :internal.shape/cx number?)
(s/def :internal.shape/cy number?)
(s/def :internal.shape/width number?)
(s/def :internal.shape/height number?)
(s/def :internal.shape/index integer?)

(s/def :internal.shape/x1 number?)
(s/def :internal.shape/y1 number?)
(s/def :internal.shape/x2 number?)
(s/def :internal.shape/y2 number?)

(s/def :internal.shape.export/suffix string?)
(s/def :internal.shape.export/scale number?)
(s/def :internal.shape/export
  (s/keys :req-un [::type
                   :internal.shape.export/suffix

   [app.common.spec :as us]
   [app.common.uuid :as uuid]))

(def file-version 1)
(def max-safe-int 9007199254740991)
(def min-safe-int -9007199254740991)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Page Transformation Changes
