sigil-core · mail
Source declarations, signatures and documentation for mail.
Source: sigil/node/sigil-core/src/mail.rs. SHA-256: 22b8ff2d591b28fb405bb0bc2e1fc379b5390792fb9fcaaa5d406d7f2879ab95.
This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.
mail::MAILBOX_ID_DOMAIN
pub const MAILBOX_ID_DOMAIN: &str;Source line: 12.
mail::ALIAS_ID_DOMAIN
pub const ALIAS_ID_DOMAIN: &str;Source line: 13.
mail::KEY_ID_DOMAIN
pub const KEY_ID_DOMAIN: &str;Source line: 14.
mail::POLICY_ID_DOMAIN
pub const POLICY_ID_DOMAIN: &str;Source line: 15.
mail::DELIVERY_ID_DOMAIN
pub const DELIVERY_ID_DOMAIN: &str;Source line: 16.
mail::DELIVERY_SIGNATURE_DOMAIN
pub const DELIVERY_SIGNATURE_DOMAIN: &str;Source line: 17.
mail::DELEGATION_ID_DOMAIN
pub const DELEGATION_ID_DOMAIN: &str;Source line: 18.
mail::ABUSE_ID_DOMAIN
pub const ABUSE_ID_DOMAIN: &str;Source line: 19.
mail::TX_DOMAIN
pub const TX_DOMAIN: &str;Source line: 20.
mail::EVENT_DOMAIN
pub const EVENT_DOMAIN: &str;Source line: 21.
mail::MAIL_TREASURY_DID
pub const MAIL_TREASURY_DID: &str;Source line: 23.
mail::validate_hex32
pub fn validate_hex32(label: &str, value: &str) -> Result<(), CoreError>;Source line: 37.
mail::mailbox_id
pub fn mailbox_id(
chain_id: &str,
subject_did: &str,
mailbox_salt_commitment: &str,
) -> Result<String, CoreError>;Source line: 61.
mail::alias_id
pub fn alias_id(
chain_id: &str,
alias_kind: MailAliasKind,
canonical_alias_or_commitment: &str,
) -> Result<String, CoreError>;Source line: 75.
mail::key_id
pub fn key_id(
chain_id: &str,
mailbox_id: &str,
purpose: MailKeyPurpose,
algorithm: &str,
public_key_bytes: &[u8],
key_version: u64,
) -> Result<String, CoreError>;Source line: 91.
mail::policy_id
pub fn policy_id(
chain_id: &str,
mailbox_id: &str,
policy_version: u64,
policy_hash: &str,
) -> Result<String, CoreError>;Source line: 118.
mail::delivery_commitment_id
pub fn delivery_commitment_id(
chain_id: &str,
sender_route_id: &str,
recipient_mailbox_id: &str,
encrypted_weave_ref_commitment: &str,
ciphertext_content_hash: &str,
client_nonce: &str,
recipient_key_version: u64,
) -> Result<String, CoreError>;Source line: 133.
mail::delegation_id
pub fn delegation_id(
chain_id: &str,
mailbox_id: &str,
grantee_did: &str,
nonce: &str,
) -> Result<String, CoreError>;Source line: 164.
mail::abuse_id
pub fn abuse_id(
chain_id: &str,
mailbox_id: &str,
delivery_commitment_id: &str,
reporter_did: &str,
evidence_commitment: &str,
) -> Result<String, CoreError>;Source line: 180.
mail::validate_no_plaintext_mail_value
pub fn validate_no_plaintext_mail_value(label: &str, value: &str) -> Result<(), CoreError>;Source line: 203.
mail::MailboxStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailboxStatus {
Active,
Locked,
Recovering,
Deactivated,
}Source line: 234.
mail::MailboxCapabilityRecord
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailboxCapabilityRecord {
pub mailbox_id: String,
pub subject_did: String,
pub controller_policy: ControlPolicy,
pub recovery_policy_ref: Option<String>,
pub wallet_address: Option<String>,
pub primary_alias_id: Option<String>,
pub alias_ids: Vec<String>,
pub status: MailboxStatus,
pub current_policy_version: u64,
pub current_encryption_key_version: u64,
pub current_signing_key_version: u64,
pub mailbox_storage_commitment: Option<String>,
pub created_at_height: u64,
pub updated_at_height: u64,
pub sequence: u64
}Source line: 242.
mail::MailboxCapabilityRecord::validate_public_shape
pub fn validate_public_shape(&self) -> Result<(), CoreError>;Source line: 261.
mail::MailAliasKind
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailAliasKind {
SigilUsername,
Did,
Wallet,
FutureAddress,
Blinded,
}Source line: 279.
mail::MailAliasKind::as_str
pub fn as_str(self) -> &'static str;Source line: 288.
mail::AliasStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AliasStatus {
Active,
Revoked,
Superseded,
}Source line: 301.
mail::MailAliasRecord
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailAliasRecord {
pub alias_id: String,
pub mailbox_id: String,
pub alias_kind: MailAliasKind,
pub public_value: Option<String>,
pub blinded_commitment: Option<String>,
pub verified_source_ref: Option<String>,
pub status: AliasStatus,
pub created_at_height: u64,
pub revoked_at_height: Option<u64>,
pub sequence: u64
}Source line: 308.
mail::MailAliasRecord::validate_public_shape
pub fn validate_public_shape(&self) -> Result<(), CoreError>;Source line: 322.
mail::PolicyStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PolicyStatus {
Active,
Superseded,
Revoked,
}Source line: 343.
mail::PolicyAction
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PolicyAction {
Allow,
Deny,
ContactsOnly,
RequireStake,
RequireFee,
RequireVerifiedSender,
RequireProof,
}Source line: 351.
mail::SenderSelector
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", tag = "kind", content = "value")]
pub enum SenderSelector {
Any,
Did(String),
Mailbox(String),
Alias(String),
Wallet(String),
VerifiedOrganization(String),
Blinded(String),
}Source line: 363.
mail::SenderSelector::matches
pub fn matches(&self, route: &SenderRoute) -> bool;Source line: 374.
mail::ReceivePolicyRule
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ReceivePolicyRule {
pub selector: SenderSelector,
pub action: PolicyAction,
pub priority: u16,
pub stake_required: u128,
pub fee_required: u128,
pub max_per_epoch: Option<u32>
}Source line: 391.
mail::MailboxPolicyRecord
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailboxPolicyRecord {
pub policy_id: String,
pub mailbox_id: String,
pub version: u64,
pub status: PolicyStatus,
pub rules: Vec<ReceivePolicyRule>,
pub emergency_lock_bypass: bool,
pub created_at_height: u64,
pub revoked_at_height: Option<u64>,
pub sequence: u64
}Source line: 401.
mail::MailboxPolicyRecord::validate_public_shape
pub fn validate_public_shape(&self) -> Result<(), CoreError>;Source line: 414.
mail::evaluate_policy
pub fn evaluate_policy(
rules: &[ReceivePolicyRule],
route: &SenderRoute,
) -> Result<PolicyAction, CoreError>;Source line: 426.
mail::MailKeyPurpose
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailKeyPurpose {
Encryption,
Signing,
Recovery,
Device,
}Source line: 446.
mail::MailKeyPurpose::as_str
pub fn as_str(self) -> &'static str;Source line: 454.
mail::KeyStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum KeyStatus {
Active,
Rotated,
Revoked,
Expired,
}Source line: 466.
mail::MailPublicKeyRecord
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailPublicKeyRecord {
pub key_id: String,
pub mailbox_id: String,
pub purpose: MailKeyPurpose,
pub algorithm: String,
pub public_key_hex: String,
pub device_commitment: String,
pub version: u64,
pub status: KeyStatus,
pub published_at_height: u64,
pub expires_at_height: Option<u64>,
pub revoked_at_height: Option<u64>,
pub sequence: u64
}Source line: 474.
mail::MailPublicKeyRecord::validate_public_shape
pub fn validate_public_shape(&self, height: u64) -> Result<(), CoreError>;Source line: 490.
mail::DeliveryStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DeliveryStatus {
Committed,
Refunded,
Slashed,
Burned,
}Source line: 518.
mail::SenderRoute
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", tag = "kind", content = "value")]
pub enum SenderRoute {
Did { did: String },
Mailbox { mailbox_id: String },
Alias { alias_id: String },
Wallet { wallet_address: String },
VerifiedOrganization { org_did: String },
Blinded { commitment: String },
SelectiveDisclosure { commitment: String },
}Source line: 527.
mail::SenderRoute::route_id
pub fn route_id(&self) -> String;Source line: 538.
mail::SenderRoute::validate_public_shape
pub fn validate_public_shape(&self) -> Result<(), CoreError>;Source line: 551.
mail::DeliveryCommitmentRecord
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DeliveryCommitmentRecord {
pub delivery_commitment_id: String,
pub sender_route: SenderRoute,
pub sender_route_id: String,
pub recipient_mailbox_id: String,
pub encrypted_weave_ref_commitment: String,
pub ciphertext_content_hash: String,
pub recipient_key_id: String,
pub recipient_key_version: u64,
pub policy_version: u64,
pub client_nonce: String,
pub block_height: u64,
pub status: DeliveryStatus,
pub reply_to_commitment: Option<String>,
pub required_fee: u128,
pub locked_stake: u128
}Source line: 567.
mail::DeliveryCommitmentRecord::validate_privacy_shape
pub fn validate_privacy_shape(&self) -> Result<(), CoreError>;Source line: 586.
mail::delivery_signature_payload
pub fn delivery_signature_payload(
chain_id: &str,
commitment: &DeliveryCommitmentRecord,
) -> Result<Vec<u8>, CoreError>;Source line: 607.
mail::EconomicsStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum EconomicsStatus {
Active,
Refunded,
Slashed,
Burned,
}Source line: 639.
mail::SenderEconomicsRecord
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SenderEconomicsRecord {
pub sender_route_id: String,
pub recipient_mailbox_id: String,
pub locked_stake: u128,
pub collected_fee: u128,
pub status: EconomicsStatus,
pub updated_at_height: u64
}Source line: 647.
mail::MailPermissionScope
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum MailPermissionScope {
DeliverMail,
ReadMailboxReferences,
WriteMailboxReferences,
ManageReceivePolicy,
ManageAliases,
ManageKeys,
}Source line: 658.
mail::MailDelegationGrant
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailDelegationGrant {
pub grant_id: String,
pub mailbox_id: String,
pub grantor_did: String,
pub grantee_did: String,
pub scopes: Vec<MailPermissionScope>,
pub expires_at_height: Option<u64>,
pub revoked_at_height: Option<u64>,
pub rate_limit_per_epoch: Option<u32>,
pub nonce: String,
pub created_at_height: u64
}Source line: 668.
mail::AbuseStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AbuseStatus {
Open,
Resolved,
Rejected,
}Source line: 683.
mail::AbuseResolution
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AbuseResolution {
Refund,
Slash,
Burn,
Reject,
}Source line: 691.
mail::AbuseReport
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AbuseReport {
pub abuse_report_id: String,
pub mailbox_id: String,
pub delivery_commitment_id: String,
pub reporter_did: String,
pub evidence_commitment: String,
pub status: AbuseStatus,
pub resolution: Option<AbuseResolution>,
pub created_at_height: u64,
pub resolved_at_height: Option<u64>
}Source line: 699.
mail::AbuseReport::validate_public_shape
pub fn validate_public_shape(&self) -> Result<(), CoreError>;Source line: 712.
mail::MailCreateMailboxData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailCreateMailboxData {
pub mailbox_id: String,
pub subject_did: String,
pub controller_policy: ControlPolicy,
pub wallet_address: Option<String>,
pub mailbox_salt_commitment: String,
pub mailbox_storage_commitment: Option<String>,
pub client_nonce: String
}Source line: 723.
mail::MailAddAliasData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailAddAliasData {
pub mailbox_id: String,
pub alias: MailAliasRecord,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 734.
mail::MailRemoveAliasData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRemoveAliasData {
pub mailbox_id: String,
pub alias_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 742.
mail::MailSetPrimaryAliasData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailSetPrimaryAliasData {
pub mailbox_id: String,
pub alias_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 750.
mail::MailMailboxStatusData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailMailboxStatusData {
pub mailbox_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 758.
mail::MailLockMailboxData
pub type MailLockMailboxData = MailMailboxStatusData;Source line: 764.
mail::MailUnlockMailboxData
pub type MailUnlockMailboxData = MailMailboxStatusData;Source line: 765.
mail::MailDeactivateMailboxData
pub type MailDeactivateMailboxData = MailMailboxStatusData;Source line: 766.
mail::MailRecoverMailboxData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRecoverMailboxData {
pub mailbox_id: String,
pub recovery_policy_ref: String,
pub new_controller_policy: ControlPolicy,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 769.
mail::MailUpdateReceivePolicyData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailUpdateReceivePolicyData {
pub mailbox_id: String,
pub policy: MailboxPolicyRecord,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 778.
mail::MailRevokeReceivePolicyData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRevokeReceivePolicyData {
pub mailbox_id: String,
pub policy_version: u64,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 786.
mail::MailPublishKeyData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailPublishKeyData {
pub mailbox_id: String,
pub key: MailPublicKeyRecord,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 794.
mail::MailRotateKeyData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRotateKeyData {
pub mailbox_id: String,
pub old_key_id: String,
pub new_key: MailPublicKeyRecord,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 802.
mail::MailRevokeKeyData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRevokeKeyData {
pub mailbox_id: String,
pub key_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 811.
mail::MailExpireKeysData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailExpireKeysData {
pub mailbox_id: String,
pub before_height: u64,
pub client_nonce: String
}Source line: 819.
mail::MailPublishDeliveryCommitmentData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailPublishDeliveryCommitmentData {
pub commitment: DeliveryCommitmentRecord,
pub sender_signature_hex: Option<String>,
pub sender_signing_key_id: Option<String>,
pub sender_signing_key_version: Option<u64>,
pub client_nonce: String
}Source line: 826.
mail::MailReportAbuseData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailReportAbuseData {
pub report: AbuseReport,
pub client_nonce: String
}Source line: 835.
mail::MailResolveAbuseData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailResolveAbuseData {
pub abuse_report_id: String,
pub resolution: AbuseResolution,
pub resolver_did: String,
pub client_nonce: String
}Source line: 841.
mail::MailGrantPermissionData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailGrantPermissionData {
pub grant: MailDelegationGrant,
pub client_nonce: String
}Source line: 849.
mail::MailRevokePermissionData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MailRevokePermissionData {
pub grant_id: String,
pub mailbox_id: String,
pub expected_sequence: u64,
pub client_nonce: String
}Source line: 855.