// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
/* eslint-disable @typescript-eslint/no-empty-interface */
// Generated by https://quicktype.io
//
// To change quicktype's target language, run command:
//
//   "Set quicktype target language"

export interface Trello {
    id:                IDBoardEnum;
    name:              BoardName;
    desc:              string;
    descData:          null;
    closed:            boolean;
    idOrganization:    null;
    shortLink:         ShortLink;
    powerUps:          any[];
    dateLastActivity:  string;
    idTags:            any[];
    datePluginDisable: null;
    creationMethod:    null;
    idBoardSource:     string;
    idMemberCreator:   null;
    idEnterprise:      null;
    pinned:            boolean;
    starred:           boolean;
    url:               string;
    shortUrl:          string;
    enterpriseOwned:   boolean;
    premiumFeatures:   any[];
    ixUpdate:          string;
    limits:            TrelloLimits;
    prefs:             Prefs;
    subscribed:        boolean;
    templateGallery:   null;
    dateLastView:      string;
    labelNames:        LabelNames;
    actions:           Action[];
    cards:             CardElement[];
    labels:            Label[];
    lists:             List[];
    members:           MemberElement[];
    checklists:        ChecklistElement[];
    customFields:      CustomFieldElement[];
    memberships:       Membership[];
    pluginData:        PluginDatum[];
}

export interface Action {
    id:              string;
    idMemberCreator: IDMemberCreator;
    data:            Data;
    type:            string;
    date:            string;
    appCreator:      AppCreator | null;
    limits:          ActionLimits;
    memberCreator:   MemberCreatorClass;
    member?:         MemberCreatorClass;
}

export interface AppCreator {
    id:   string;
    name: string;
    icon: Icon;
}

export interface Icon {
    url: string;
}

export interface Data {
    old?:             Old;
    customField?:     DataCustomField;
    customFieldItem?: CustomFieldItem;
    board:            Board;
    card?:            DataCard;
    list?:            ListClass;
    listBefore?:      ListClass;
    listAfter?:       ListClass;
    idMember?:        IDMemberCreator;
    member?:          ListClass;
    fromCopy?:        boolean;
    cardSource?:      Board;
    deactivated?:     boolean;
    text?:            string;
    checklist?:       ListClass;
    checkItem?:       DataCheckItem;
    boardSource?:     BoardSource;
}

export interface Board {
    id:        IDBoardEnum;
    name:      BoardName;
    shortLink: ShortLink;
    idShort?:  number;
}

export enum IDBoardEnum {
    The5F4800F49696D280D52Bb2Ff = "5f4800f49696d280d52bb2ff",
    The5F58E6144A949F4C1879A32A = "5f58e6144a949f4c1879a32a",
}

export enum BoardName {
    AgileSprintBoard = "Agile Sprint Board",
    StandardTask = "Standard Task",
}

export enum ShortLink {
    WduAIKhy = "wduAiKhy",
    ZCbHMXU8 = "ZCbHMxU8",
}

export interface BoardSource {
    id: string;
}

export interface DataCard {
    id:           string;
    name:         string;
    idShort:      number;
    shortLink:    string;
    pos?:         number;
    idList?:      IDMemberCreator;
    due?:         string;
    dueReminder?: number;
    cover?:       OldCover;
    desc?:        string;
}

export interface OldCover {
    color:                null | string;
    idAttachment:         null;
    idUploadedBackground: IDUploadedBackground | null;
    size:                 MemberType;
    brightness:           Brightness;
    url?:                 string;
}

export enum Brightness {
    Dark = "dark",
    Light = "light",
}

export enum IDUploadedBackground {
    The5F46Cbb00E54E3660C1A7B22 = "5f46cbb00e54e3660c1a7b22",
    The5F46Cbe1C839Ef48989Cd124 = "5f46cbe1c839ef48989cd124",
    The5F46Cbe8B0A6Bb3B7F91A0B8 = "5f46cbe8b0a6bb3b7f91a0b8",
}

export enum MemberType {
    Full = "full",
    Normal = "normal",
}

export enum IDMemberCreator {
    The5F4800A4621Dfe2935798972 = "5f4800a4621dfe2935798972",
    The5F4800F49696D280D52Bb300 = "5f4800f49696d280d52bb300",
    The5F4800F49696D280D52Bb301 = "5f4800f49696d280d52bb301",
    The5F4800F49696D280D52Bb302 = "5f4800f49696d280d52bb302",
    The5F4800F49696D280D52Bb303 = "5f4800f49696d280d52bb303",
    The5F4800F49696D280D52Bb304 = "5f4800f49696d280d52bb304",
    The5F480131E778365Be477Add3 = "5f480131e778365be477add3",
}

export interface DataCheckItem {
    id:    string;
    name:  string;
    state: string;
}

export interface ListClass {
    id:   IDMemberCreator;
    name: FullNameEnum;
}

export enum FullNameEnum {
    Backlog = "Backlog",
    Checklist = "Checklist",
    JohnSmith = "John Smith",
    InProgress = "In Progress",
    SprintBacklog = "Sprint Backlog",
    The8217SprintComplete = "8.2.17 Sprint - Complete",
    The8917SprintComplete = "8.9.17 Sprint - Complete",
}

export interface DataCustomField {
    id:    IDCustomFieldEnum;
    name:  string;
    type?: string;
}

export enum IDCustomFieldEnum {
    The5F4802F5905B9A640C49Be08 = "5f4802f5905b9a640c49be08",
    The5F480309D1D96A703F2F3143 = "5f480309d1d96a703f2f3143",
}

export interface CustomFieldItem {
    id:            string;
    value:         CustomFieldItemValue;
    idCustomField: IDCustomFieldEnum;
    idModel:       string;
    modelType:     ModelType;
}

export enum ModelType {
    Card = "card",
}

export interface CustomFieldItemValue {
    number?:  string;
    checked?: string;
}

export interface Old {
    value?:       OldValue | null;
    pos?:         number;
    idList?:      IDMemberCreator;
    name?:        string;
    due?:         null;
    dueReminder?: null;
    cover?:       OldCover;
    desc?:        string;
}

export interface OldValue {
    number: string;
}

export interface ActionLimits {
    reactions?: Reactions;
}

export interface Reactions {
    perAction:       PerBoard;
    uniquePerAction: PerBoard;
}

export interface PerBoard {
    status:    Status;
    disableAt: number;
    warnAt:    number;
}

export enum Status {
    Ok = "ok",
}

export interface MemberCreatorClass {
    id:                 IDMemberCreator;
    username:           Username;
    activityBlocked:    boolean;
    avatarHash:         AvatarHash;
    avatarUrl:          string;
    fullName:           FullNameEnum;
    idMemberReferrer:   null;
    initials:           Initials;
    nonPublic:          NonPublic;
    nonPublicAvailable: boolean;
}

export enum AvatarHash {
    Ea6D6D7Da6B79Dc0Cf31301Bc672487F = "ea6d6d7da6b79dc0cf31301bc672487f",
}

export enum Initials {
    Cl = "CL",
}

export interface NonPublic {
    fullName:   FullNameEnum;
    initials:   Initials;
    avatarHash: null;
}

export enum Username {
    johnsmith = "johnsmith",
}

export interface CardElement {
    id:                    string;
    address:               null;
    checkItemStates:       null;
    closed:                boolean;
    coordinates:           null;
    creationMethod:        null;
    dateLastActivity:      string;
    desc:                  string;
    descData:              DescDataClass | null;
    dueReminder:           number | null;
    idBoard:               IDBoardEnum;
    idLabels:              string[];
    idList:                IDMemberCreator;
    idMembersVoted:        any[];
    idShort:               number;
    idAttachmentCover:     null;
    locationName:          null;
    manualCoverAttachment: boolean;
    name:                  string;
    pos:                   number;
    shortLink:             string;
    isTemplate:            boolean;
    cardRole:              null;
    badges:                Badges;
    dueComplete:           boolean;
    due:                   null | string;
    email:                 string;
    idChecklists:          string[];
    idMembers:             IDMemberCreator[];
    labels:                Label[];
    limits:                CardLimits;
    shortUrl:              string;
    start:                 null;
    subscribed:            boolean;
    url:                   string;
    cover:                 PurpleCover;
    attachments:           Attachment[];
    pluginData:            any[];
    customFieldItems:      CustomFieldItem[];
}

export interface Attachment {
    bytes:     number | null;
    date:      string;
    edgeColor: null | string;
    idMember:  string;
    isUpload:  boolean;
    mimeType:  null | string;
    name:      string;
    previews:  Scaled[];
    url:       string;
    pos:       number;
    id:        string;
    fileName?: string;
}

export interface Scaled {
    _id:    string;
    id:     string;
    scaled: boolean;
    url:    string;
    bytes:  number;
    height: number;
    width:  number;
}

export interface Badges {
    attachmentsByType:     AttachmentsByType;
    location:              boolean;
    votes:                 number;
    viewingMemberVoted:    boolean;
    subscribed:            boolean;
    fogbugz:               string;
    checkItems:            number;
    checkItemsChecked:     number;
    checkItemsEarliestDue: null;
    comments:              number;
    attachments:           number;
    description:           boolean;
    due:                   null | string;
    dueComplete:           boolean;
    start:                 null;
}

export interface AttachmentsByType {
    trello: TrelloClass;
}

export interface TrelloClass {
    board: number;
    card:  number;
}

export interface PurpleCover {
    idAttachment:         null;
    color:                null;
    idUploadedBackground: IDUploadedBackground | null;
    size:                 MemberType;
    brightness:           Brightness;
    idPlugin:             null;
    scaled?:              Scaled[];
    edgeColor?:           string;
    sharedSourceUrl?:     string;
}

export interface DescDataClass {
    emoji: Emoji;
}

export interface Emoji {
}

export interface Label {
    id:      string;
    idBoard: IDBoardEnum;
    name:    string;
    color:   string;
}

export interface CardLimits {
    attachments: Stickers;
    checklists:  Stickers;
    stickers:    Stickers;
}

export interface Stickers {
    perCard: PerBoard;
}

export interface ChecklistElement {
    id:             string;
    name:           FullNameEnum;
    idCard:         string;
    pos:            number;
    creationMethod: null;
    idBoard:        IDBoardEnum;
    limits:         ChecklistLimits;
    checkItems:     CheckItemElement[];
}

export interface CheckItemElement {
    idChecklist: string;
    state:       string;
    id:          string;
    name:        string;
    nameData:    DescDataClass | null;
    pos:         number;
    due:         null;
    idMember:    null | string;
}

export interface ChecklistLimits {
    checkItems: CheckItems;
}

export interface CheckItems {
    perChecklist: PerBoard;
}

export interface CustomFieldElement {
    id:               IDCustomFieldEnum;
    idModel:          IDBoardEnum;
    modelType:        string;
    fieldGroup:       string;
    display:          Display;
    name:             string;
    pos:              number;
    type:             string;
    isSuggestedField: boolean;
}

export interface Display {
    cardFront: boolean;
}

export interface LabelNames {
    green:  string;
    yellow: string;
    orange: string;
    red:    string;
    purple: string;
    blue:   string;
    sky:    string;
    lime:   string;
    pink:   string;
    black:  string;
}

export interface TrelloLimits {
    attachments:        Attachments;
    boards:             Boards;
    cards:              PurpleCards;
    checklists:         Attachments;
    checkItems:         CheckItems;
    customFields:       CustomFields;
    customFieldOptions: CustomFieldOptions;
    labels:             CustomFields;
    lists:              Lists;
    stickers:           Stickers;
    reactions:          Reactions;
}

export interface Attachments {
    perBoard: PerBoard;
    perCard:  PerBoard;
}

export interface Boards {
    totalMembersPerBoard: PerBoard;
}

export interface PurpleCards {
    openPerBoard:  PerBoard;
    openPerList:   PerBoard;
    totalPerBoard: PerBoard;
    totalPerList:  PerBoard;
}

export interface CustomFieldOptions {
    perField: PerBoard;
}

export interface CustomFields {
    perBoard: PerBoard;
}

export interface Lists {
    openPerBoard:  PerBoard;
    totalPerBoard: PerBoard;
}

export interface List {
    id:             IDMemberCreator;
    name:           FullNameEnum;
    closed:         boolean;
    pos:            number;
    softLimit:      null;
    creationMethod: null;
    idBoard:        IDBoardEnum;
    limits:         ListLimits;
    subscribed:     boolean;
}

export interface ListLimits {
    cards: FluffyCards;
}

export interface FluffyCards {
    openPerList:  PerBoard;
    totalPerList: PerBoard;
}

export interface MemberElement {
    id:                       IDMemberCreator;
    bio:                      string;
    bioData:                  null;
    confirmed:                boolean;
    memberType:               MemberType;
    username:                 Username;
    activityBlocked:          boolean;
    avatarHash:               AvatarHash;
    avatarUrl:                string;
    fullName:                 FullNameEnum;
    idEnterprise:             null;
    idEnterprisesDeactivated: any[];
    idMemberReferrer:         null;
    idPremOrgsAdmin:          any[];
    initials:                 Initials;
    nonPublic:                NonPublic;
    nonPublicAvailable:       boolean;
    products:                 any[];
    url:                      string;
    status:                   string;
}

export interface Membership {
    id:          string;
    idMember:    IDMemberCreator;
    memberType:  string;
    unconfirmed: boolean;
    deactivated: boolean;
}

export interface PluginDatum {
    id:       string;
    idPlugin: string;
    scope:    string;
    idModel:  IDBoardEnum;
    value:    string;
    access:   string;
}

export interface Prefs {
    permissionLevel:       string;
    hideVotes:             boolean;
    voting:                string;
    comments:              string;
    invitations:           string;
    selfJoin:              boolean;
    cardCovers:            boolean;
    isTemplate:            boolean;
    cardAging:             string;
    calendarFeedEnabled:   boolean;
    background:            string;
    backgroundImage:       string;
    backgroundImageScaled: BackgroundImageScaled[];
    backgroundTile:        boolean;
    backgroundBrightness:  Brightness;
    backgroundBottomColor: string;
    backgroundTopColor:    string;
    canBePublic:           boolean;
    canBeEnterprise:       boolean;
    canBeOrg:              boolean;
    canBePrivate:          boolean;
    canInvite:             boolean;
}

export interface BackgroundImageScaled {
    width:  number;
    height: number;
    url:    string;
}
