figma-api 0.31.4

This is the OpenAPI specification for the [Figma REST API](https://www.figma.com/developers/api). Note: we are releasing the OpenAPI specification as a beta given the large surface area and complexity of the REST API. If you notice any inaccuracies with the specification, please [file an issue](https://github.com/figma/rest-api-spec/issues).
Documentation
/*
 * Figma API
 *
 * This is the OpenAPI specification for the [Figma REST API](https://www.figma.com/developers/api).  Note: we are releasing the OpenAPI specification as a beta given the large surface area and complexity of the REST API. If you notice any inaccuracies with the specification, please [file an issue](https://github.com/figma/rest-api-spec/issues).
 *
 * The version of the OpenAPI document: 0.31.0
 * Contact: support@figma.com
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// DirectionalTransition : Describes an animation used when navigating in a prototype.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct DirectionalTransition {
    #[serde(rename = "type")]
    pub r#type: Type,
    #[serde(rename = "direction")]
    pub direction: Direction,
    /// The duration of the transition in milliseconds.
    #[serde(rename = "duration")]
    pub duration: f64,
    /// The easing curve of the transition.
    #[serde(rename = "easing")]
    pub easing: Box<models::Easing>,
    /// When the transition `type` is `\"SMART_ANIMATE\"` or when `matchLayers` is `true`, then the transition will be performed using smart animate, which attempts to match corresponding layers an interpolate other properties during the animation.
    #[serde(rename = "matchLayers", skip_serializing_if = "Option::is_none")]
    pub match_layers: Option<bool>,
}

impl DirectionalTransition {
    /// Describes an animation used when navigating in a prototype.
    pub fn new(r#type: Type, direction: Direction, duration: f64, easing: models::Easing) -> DirectionalTransition {
        DirectionalTransition {
            r#type,
            direction,
            duration,
            easing: Box::new(easing),
            match_layers: None,
        }
    }
}
/// 
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
    #[serde(rename = "MOVE_IN")]
    MoveIn,
    #[serde(rename = "MOVE_OUT")]
    MoveOut,
    #[serde(rename = "PUSH")]
    Push,
    #[serde(rename = "SLIDE_IN")]
    SlideIn,
    #[serde(rename = "SLIDE_OUT")]
    SlideOut,
}

impl Default for Type {
    fn default() -> Type {
        Self::MoveIn
    }
}
/// 
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Direction {
    #[serde(rename = "LEFT")]
    Left,
    #[serde(rename = "RIGHT")]
    Right,
    #[serde(rename = "TOP")]
    Top,
    #[serde(rename = "BOTTOM")]
    Bottom,
}

impl Default for Direction {
    fn default() -> Direction {
        Self::Left
    }
}