iop_proto_wasm/coeus/
principal.rs

1use super::*;
2
3#[wasm_bindgen(js_name = Principal)]
4pub struct JsPrincipal {
5    inner: Principal,
6}
7
8#[wasm_bindgen(js_class = Principal)]
9impl JsPrincipal {
10    pub fn system() -> JsPrincipal {
11        Principal::system().into()
12    }
13
14    #[wasm_bindgen(js_name = publicKey)]
15    pub fn public_key(pk: &JsMPublicKey) -> Result<JsPrincipal, JsValue> {
16        let principal = Principal::public_key(pk.inner());
17        Ok(principal.into())
18    }
19
20    #[wasm_bindgen(js_name = validateImpersonation)]
21    pub fn validate_impersonation(&self, pk: &JsMPublicKey) -> Result<(), JsValue> {
22        self.inner.validate_impersonation(pk.inner()).map_err_to_js()
23    }
24}
25
26impl From<Principal> for JsPrincipal {
27    fn from(inner: Principal) -> Self {
28        Self { inner }
29    }
30}
31
32impl Wraps<Principal> for JsPrincipal {
33    fn inner(&self) -> &Principal {
34        &self.inner
35    }
36}