use std::sync::Arc;
use indexmap::IndexMap;
use crate::expression::TemplateValue;
use crate::util::Utf16String;
pub trait IWebSession: Send + Sync {
fn exists(&self) -> bool;
fn contains_attribute(&self, name: Option<&Utf16String>) -> bool;
fn get_attribute_count(&self) -> i32;
fn get_all_attribute_names(&self) -> Vec<Option<Utf16String>>;
fn get_attribute_map(&self) -> IndexMap<Option<Utf16String>, Option<Arc<TemplateValue>>>;
fn get_attribute_value(&self, name: Option<&Utf16String>) -> Option<Arc<TemplateValue>>;
fn set_attribute_value(&self, name: Option<Utf16String>, value: Option<Arc<TemplateValue>>);
fn remove_attribute(&self, name: Option<&Utf16String>);
}