iop_proto_wasm/coeus/
principal.rs1use 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}