/*
 * This file is part of ActivityStreams Types.
 *
 * Copyright Â© 2018 Riley Trautman
 *
 * ActivityStreams Types is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ActivityStreams Types is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with ActivityStreams Types.  If not, see <http://www.gnu.org/licenses/>.
 */

mod accept;
mod add;
mod amove;
mod announce;
mod arrive;
mod block;
mod create;
mod delete;
mod dislike;
mod flag;
mod follow;
mod ignore;
mod invite;
mod join;
pub mod kind;
mod leave;
mod like;
mod listen;
mod offer;
pub mod properties;
mod question;
mod read;
mod reject;
mod remove;
mod tentative_accept;
mod tentative_reject;
mod travel;
mod undo;
mod update;
mod view;

pub use self::accept::*;
pub use self::add::*;
pub use self::amove::*;
pub use self::announce::*;
pub use self::arrive::*;
pub use self::block::*;
pub use self::create::*;
pub use self::delete::*;
pub use self::dislike::*;
pub use self::flag::*;
pub use self::follow::*;
pub use self::ignore::*;
pub use self::invite::*;
pub use self::join::*;
pub use self::leave::*;
pub use self::like::*;
pub use self::listen::*;
pub use self::offer::*;
pub use self::question::*;
pub use self::read::*;
pub use self::reject::*;
pub use self::remove::*;
pub use self::tentative_accept::*;
pub use self::tentative_reject::*;
pub use self::travel::*;
pub use self::undo::*;
pub use self::update::*;
pub use self::view::*;

use activitystreams_traits::Activity;

use self::properties::ActivityProperties;

/// The Activity Extension Trait
///
/// This trait provides generic access to an activity's properties
pub trait ActivityExt: Activity {
    fn props(&self) -> &ActivityProperties;
    fn props_mut(&mut self) -> &mut ActivityProperties;
}
