use std::collections::HashMap;
use rustpub_macro::complex_property;
use crate::complex::core;
use crate::complex::core::*;
pub trait ActivitypubProperty {
fn is_none(&self) -> bool;
fn is_some(&self) -> bool;
}
complex_property! {functional Id { string: String }}
complex_property! {functional Kind { string: String }}
complex_property! {Actor { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Attachment { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {AttributedTo { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Audience { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {BCC { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {BTo { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {CC { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Context { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Current { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {functional First { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Generator { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Icon { image: Box<core::Image>, link: dyn LinkBaseTrait }}
complex_property! {Image { image: Box<core::Image>, link: dyn LinkBaseTrait }}
complex_property! {InReplyTo { object: dyn ObjectBaseTrait, base_object: Box<core::Object>, link: dyn LinkBaseTrait }}
complex_property! {Instrument { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Last { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Location { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Items { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {OneOf { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {AnyOf { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Closed { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait, datetime: chrono::NaiveDateTime, bool: bool }}
complex_property! {Origin { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Next { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Object { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Prev { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {Preview { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Result { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {functional Replies { collection: Box<core::Collection> }}
complex_property! {Tag { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Target { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {To { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Url { string: String, link: dyn LinkBaseTrait }}
complex_property! {functional Accuracy { float: f32 }}
complex_property! {functional Altitude { float: f32 }}
complex_property! {functional Content { string: String, strings: Vec<String>, map: HashMap<String, String> }}
complex_property! {functional Name { string: String, strings: Vec<String>, map: HashMap<String, String> }}
complex_property! {functional Duration { string: String }} complex_property! {functional Height { integer: u32 }}
complex_property! {functional Href { string: String }}
complex_property! {functional HrefLang { string: String }}
complex_property! {functional PartOf { collection_page: Box<core::CollectionPage>, link: dyn LinkBaseTrait }}
complex_property! {functional Latitude { float: f32 }}
complex_property! {functional Longitude { float: f32 }}
complex_property! {functional MediaType { string: String }}
complex_property! {functional EndTime { datetime: chrono::NaiveDateTime }}
complex_property! {functional Published { datetime: chrono::NaiveDateTime }}
complex_property! {functional StartTime { datetime: chrono::NaiveDateTime }}
complex_property! {functional Radius { float: f32 }}
complex_property! {Rel { string: String }}
complex_property! {functional StartIndex { integer: u32 }}
complex_property! {functional Summary { string: String, strings: Vec<String>, map: HashMap<String, String> }}
complex_property! {functional TotalItems { integer: u32 }}
complex_property! {functional Units { string: String }}
complex_property! {functional Updated { datetime: chrono::NaiveDateTime }}
complex_property! {functional Width { integer: u32 }}
complex_property! {functional Subject { object: dyn ObjectBaseTrait, link: dyn LinkBaseTrait }}
complex_property! {Relationship { object: dyn ObjectBaseTrait }}
complex_property! {functional Describes { object: dyn ObjectBaseTrait }}
complex_property! {FormerType { object: dyn ObjectBaseTrait }}
complex_property! {functional Deleted { datetime: chrono::NaiveDateTime }}