576 lines
16 KiB
Rust
576 lines
16 KiB
Rust
pub struct CommitmentMethod {
|
|
pub method: String,
|
|
}
|
|
|
|
pub struct ConditionCap {
|
|
pub role_deposit: String,
|
|
pub role_transaction: TransactionMode,
|
|
}
|
|
|
|
pub struct ConditionCommitment {
|
|
pub role_artefact: String,
|
|
pub role_transaction: TransactionMode,
|
|
}
|
|
|
|
pub struct ConditionDeposit {
|
|
pub role_deposit: String,
|
|
pub role_transaction: TransactionMode,
|
|
}
|
|
|
|
pub struct ConditionOrchestration {
|
|
pub role_ok: String,
|
|
pub role_ko: String,
|
|
}
|
|
|
|
pub struct ConditionPayment {
|
|
pub role_payment: String,
|
|
pub role_transaction: TransactionMode,
|
|
}
|
|
|
|
pub struct ConditionPrdAddressSet {
|
|
pub from_role: String,
|
|
pub prd_sp_address_list: Vec<String>,
|
|
pub prd_sp_address_required_list: Vec<String>,
|
|
pub prd_sp_address_quota: i32,
|
|
pub prd_prd_value_ok_list: Vec<String>,
|
|
pub prd_value_ko_list: Vec<String>,
|
|
pub prd_value_none_list: Vec<String>,
|
|
pub prd_sp_address_value_min: i64,
|
|
pub prd_sp_address_value_min_per: i64,
|
|
pub prd_sp_address_value_min_ok: bool,
|
|
pub prd_sp_adddress_value_ok_min_per: i64,
|
|
pub prd_sp_address_value_ok_max: i64,
|
|
pub prd_sp_adderss_value_ko_max_per: i64,
|
|
pub prd_sp_address_value_none_max: i64,
|
|
pub prd_sp_adderss_value_none_max_per: i64,
|
|
pub prd_sp_address_score_min: i32,
|
|
pub prd_sp_address_score_min_min_required: i32,
|
|
pub prd_sp_address_score_min_min_ok: bool,
|
|
pub prd_sp_address_score_min_min_per: i64,
|
|
pub prd_value_auto_ok: bool,
|
|
pub prd_value_auto_ko: bool,
|
|
pub prd_value_auto_none: bool,
|
|
}
|
|
|
|
pub struct ConditionPublish {
|
|
pub pcd_data_size_max_unit: String,
|
|
pub pcd_data_size_max_total: i64,
|
|
pub pcd_number_min: i32,
|
|
pub pcd_number_max: i32,
|
|
pub pcd_amount_max_total: Amount,
|
|
pub prd_waiting_timeout: u64,
|
|
pub pcd_waiting_timeout: u64,
|
|
}
|
|
|
|
pub struct DepositMethod {
|
|
pub method: String,
|
|
}
|
|
|
|
pub struct ItemArtefact {
|
|
pub item: Item,
|
|
pub public_attribute_group: Vec<String>, // Assuming list of attributes
|
|
pub role_confidential_attribute_group: Vec<String>,
|
|
pub private_attribute_group: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemCommitmentPublicAttributeGroup {
|
|
pub for_sp_address_list: Vec<String>,
|
|
pub goal_list: Vec<String>,
|
|
pub provider_type: String,
|
|
pub commitment_pcd_hash_list: Vec<String>,
|
|
pub ref_item_hash_list: Vec<String>,
|
|
pub ref_pcd_hash_list: Vec<String>,
|
|
pub payload_public_list: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemMemberPublicAttributeGroup {
|
|
pub sp_address_public: String,
|
|
pub sp_address_public_sig: String,
|
|
pub sp_address_revoke_public: String,
|
|
pub sp_address_revoke_public_sig: String,
|
|
pub third_sp_address_list_public: Vec<String>,
|
|
pub data_size_max: i64,
|
|
pub payment_method_list_public: Vec<String>,
|
|
pub succession_process_hash: String,
|
|
}
|
|
|
|
pub struct ItemCommitmentPublicAttributeGroup {
|
|
pub for_sp_address_list: Vec<String>,
|
|
pub goal_list: Vec<String>,
|
|
pub provider_type: String,
|
|
pub commitment_pcd_hash_list: Vec<String>,
|
|
pub ref_item_hash_list: Vec<String>,
|
|
pub ref_pcd_hash_list: Vec<String>,
|
|
pub payload_public_list: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemDepositPublicAttributeGroup {
|
|
pub for_sp_address_list: Vec<String>,
|
|
pub for_address_list: Vec<String>,
|
|
pub goal_list: Vec<String>,
|
|
pub provider_type: String,
|
|
pub ref_item_hash_list: Vec<String>,
|
|
pub ref_pcd_hash_list: Vec<String>,
|
|
pub payload_list_public: Vec<String>,
|
|
pub audit_code_list_public: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemCommitmentRoleConfidentialAttributeGroup {
|
|
pub payload_list_confidential: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemCommitmentPrivateAttributeGroup {
|
|
pub payload_list_private: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemCommitment {
|
|
pub item: Item,
|
|
pub public_attribute_group: ItemCommitmentPublicAttributeGroup,
|
|
pub role_confidential_attribute_group: ItemCommitmentRoleConfidentialAttributeGroup,
|
|
pub private_attribute_group: ItemCommitmentPrivateAttributeGroup,
|
|
}
|
|
|
|
pub struct ItemDepositRoleConfidentialAttributeGroup {
|
|
pub payload_list_confidential: Vec<String>,
|
|
pub audit_code_list_confidential: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemDepositPrivateAttributeGroup {
|
|
pub payload_list_private: Vec<String>,
|
|
pub audit_code_private: String,
|
|
}
|
|
|
|
pub struct ItemDeposit {
|
|
pub item: Item,
|
|
pub public_attribute_group: ItemDepositPublicAttributeGroup,
|
|
pub role_confidential_attribute_group: ItemDepositRoleConfidentialAttributeGroup,
|
|
pub private_attribute_group: ItemDepositPrivateAttributeGroup,
|
|
}
|
|
|
|
pub enum ItemEnum {
|
|
Process(ItemProcess),
|
|
Peer(ItemPeer),
|
|
Member(ItemMember),
|
|
Payment(ItemPayment),
|
|
Deposit(ItemDeposit),
|
|
Artefact(ItemArtefact),
|
|
Commitment(ItemCommitment),
|
|
}
|
|
|
|
pub struct ItemPaymentPublicAttributeGroup {
|
|
pub for_sp_address_list: Vec<String>,
|
|
pub goal_list: Vec<String>,
|
|
pub provider_type: String,
|
|
pub commitment_pcd_hash_list: Vec<String>,
|
|
pub order_pcd_hash_list: Vec<String>,
|
|
pub invoice_pcd_hash_list: Vec<String>,
|
|
pub pay_pcd_hash_list: Vec<String>,
|
|
pub ref_item_hash_list: Vec<String>,
|
|
pub ref_pcd_hash_list: Vec<String>,
|
|
pub payload_list_public: Vec<String>,
|
|
pub audit_code_list_public: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemPaymentRoleConfidentialAttributeGroup {
|
|
pub payload_list_confidential: Vec<String>,
|
|
pub audit_code_list_confidential: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemPaymentPrivateAttributeGroup {
|
|
pub payload_list_private: Vec<String>,
|
|
pub audit_code_private: String,
|
|
}
|
|
|
|
pub struct ItemPayment {
|
|
pub item: Item,
|
|
pub public_attribute_group: ItemPaymentPublicAttributeGroup,
|
|
pub role_confidential_attribute_group: ItemPaymentRoleConfidentialAttributeGroup,
|
|
pub private_attribute_group: ItemPaymentPrivateAttributeGroup,
|
|
}
|
|
|
|
pub struct ItemPeerPublicAttributeGroup {
|
|
pub sp_address: String,
|
|
pub domain: String,
|
|
pub ip_address: String,
|
|
pub pow_difficulty: u32,
|
|
pub pow_pattern: String,
|
|
pub pow_prefix: String,
|
|
pub data_size_max: i64,
|
|
pub timestamp_delay_max: u64,
|
|
pub daily_hash_list: Vec<String>,
|
|
pub daily_sp_tx_mine_list: Vec<String>,
|
|
pub daily_sp_tx_mine_reward_list: Vec<String>,
|
|
}
|
|
|
|
pub struct ItemPeerPrivateAttributeGroup {
|
|
pub config: String, // Assuming it's a simple string for now
|
|
}
|
|
|
|
pub struct ItemPeer {
|
|
pub item: Item,
|
|
pub layer_list: Vec<String>,
|
|
pub public_attribute_group: ItemPeerPublicAttributeGroup,
|
|
pub private_attribute_group: ItemPeerPrivateAttributeGroup,
|
|
}
|
|
|
|
pub struct ItemProcess {
|
|
pub item: Item,
|
|
pub item_process_public_attribute_group: ItemProcessPublicAttributeGroup,
|
|
}
|
|
|
|
pub struct ItemProcessPublicAttributeGroup {
|
|
// Fields for public attributes
|
|
// Example field
|
|
pub roles_group: RolesGroup,
|
|
}
|
|
|
|
pub struct Item {
|
|
pub uuid: String,
|
|
pub version: i64,
|
|
pub hash: Option<String>,
|
|
pub item_type: String, // `type` is a reserved keyword in Rust, renamed to `item_type`
|
|
pub name: String,
|
|
pub pagination_number_per_pcd: u32,
|
|
pub metadata_contract_public: MetadataContractPublic,
|
|
pub metadata_role_confidential: MetadataRoleConfidential,
|
|
pub metadata_private: MetadataPrivate,
|
|
}
|
|
|
|
pub struct KeyEncryption {
|
|
pub attribute_name: Option<String>,
|
|
pub key: Option<String>,
|
|
pub algorithm: Option<String>,
|
|
}
|
|
|
|
pub struct Aes256GcmIv96Bit {
|
|
pub key: GenericArray<u8, U32>,
|
|
}
|
|
|
|
pub struct MessageClient {
|
|
pub message: Message, // Assuming Message is a predefined struct
|
|
pub request_enc: String,
|
|
pub request_hash: String,
|
|
}
|
|
|
|
pub struct MessageConnect {
|
|
pub message: Message, // Assuming Message is a predefined struct
|
|
}
|
|
|
|
pub struct Message {
|
|
pub shared_peer_list: Vec<SharedPeer>,
|
|
pub shared_process_list: Vec<SharedProcess>,
|
|
pub faucet_sp_address: String,
|
|
pub pow: Pow, // Assuming Pow is a predefined struct
|
|
}
|
|
|
|
pub struct Pow {
|
|
pub data_hash: String,
|
|
timestamp: Option<u64>,
|
|
pub nonce: Option<u64>,
|
|
pub pathern: String,
|
|
pub difficulty: usize,
|
|
}
|
|
|
|
pub struct MetadataContractPublic {
|
|
pub meta_data: MetaData,
|
|
}
|
|
|
|
pub struct MetadataPrivate {
|
|
pub meta_data: MetaData,
|
|
}
|
|
|
|
pub struct MetadataRoleConfidential {
|
|
pub meta_data: MetaData,
|
|
}
|
|
|
|
pub struct MetaData {
|
|
pub tag_list: Vec<String>,
|
|
pub zone_list: Vec<String>,
|
|
pub label_list: Vec<String>,
|
|
pub ref_list: Vec<String>,
|
|
pub data_list: Vec<String>,
|
|
pub amount: Amount,
|
|
pub number: Number,
|
|
pub render_template_list: Vec<String>,
|
|
pub legal_text_list: Vec<String>,
|
|
pub key_list: Vec<KeyEncryption>,
|
|
}
|
|
|
|
pub struct Amount {
|
|
pub timestamp: u64,
|
|
pub change_source_list: Vec<String>,
|
|
pub amount_cent: i64,
|
|
pub amount_unit: String,
|
|
pub amount_unit_ref: String, // This can be a reference to an external unit system.
|
|
}
|
|
|
|
pub struct Number {
|
|
pub fixed_state: bool,
|
|
pub number: i32,
|
|
pub number_unit: String,
|
|
}
|
|
|
|
pub struct Pagination {
|
|
pub start: usize,
|
|
pub number: usize,
|
|
pub page_index: usize,
|
|
}
|
|
|
|
pub struct PaymentMethod {
|
|
pub method: String,
|
|
}
|
|
|
|
pub struct PcdItemEncAttributePrivate {
|
|
pub attribute_name: String,
|
|
pub data_enc: String, // Assuming the encrypted data is represented as a String
|
|
}
|
|
|
|
pub struct PcdItemEncAttributePublic {
|
|
pub attribute_name: String,
|
|
pub data_enc: String, // Assuming the encrypted data is represented as a String
|
|
}
|
|
|
|
pub struct PcdItemEncAttributeRoleConfidential {
|
|
pub attribute_name: String,
|
|
pub data_enc: String, // Assuming the encrypted data is represented as a String
|
|
pub key: KeyEncryption, // Assuming the encrypted data is represented as a String
|
|
}
|
|
|
|
pub struct PcdItemGenericEnc {
|
|
pub item_enc: PcdItemEnc,
|
|
pub pcd_item_enc_attribute_public_list: Option<Vec<PcdItemEncAttributePublic>>,
|
|
pub pcd_item_enc_attribute_role_confidential_list:
|
|
Option<Vec<PcdItemEncAttributeRoleConfidential>>,
|
|
pub pcd_item_enc_attribute_private_list: Option<Vec<PcdItemEncAttributePrivate>>,
|
|
}
|
|
|
|
pub struct PcdItemEnc {
|
|
pub version: i64,
|
|
pub item_type: String,
|
|
pub name: String,
|
|
pub pagination_number_per_pcd: u32,
|
|
pub pcd_item_enc_attribute_public_list: Vec<PcdItemEncAttributePublic>,
|
|
pub pcd_item_enc_attribute_role_confidential_list: Vec<PcdItemEncAttributeRoleConfidential>,
|
|
pub pcd_item_enc_attribute_private_list: Vec<PcdItemEncAttributePrivate>,
|
|
}
|
|
|
|
pub struct RequestPcd {
|
|
pub request: Request,
|
|
pub item_list: Vec<PcdItemGenericEnc>,
|
|
pub pagination: Pagination,
|
|
}
|
|
|
|
pub struct RequestPrdConfirm {
|
|
pub prd: RequestPrd,
|
|
pub code_confirm_enc_by_shared_secret: String,
|
|
}
|
|
|
|
pub struct RequestPrdKeyBackup {
|
|
pub prd: RequestPrd,
|
|
pub device_footprint_enc_by_sp_shared_secret: String,
|
|
pub part_1_enc_hash_enc_by_sp_shared_secret: String,
|
|
pub shard_enc_by_sp_shared_secret: String,
|
|
}
|
|
|
|
pub struct RequestPrdKeyHello {
|
|
pub prd: RequestPrd,
|
|
pub part_1_enc_hash_enc_by_sp_shared_secret: String,
|
|
}
|
|
|
|
pub struct RequestPrdList {
|
|
pub prd: RequestPrd,
|
|
}
|
|
|
|
pub struct RequestPrdMessage {
|
|
pub prd: RequestPrd,
|
|
}
|
|
|
|
pub struct RequestPrdResponse {
|
|
pub prd: RequestPrd,
|
|
pub sig_value: String,
|
|
pub pcd_origin_hash: Option<String>,
|
|
pub payment_method_enc_by_shared_secret: Option<String>,
|
|
pub deposit_method_enc_by_shared_secret: Option<String>,
|
|
pub commitment_method_enc_by_shared_secret: Option<String>,
|
|
pub certif_key_enc_by_shared_secret: Option<String>,
|
|
pub shared_secret_key: Option<KeyEncryption>,
|
|
}
|
|
|
|
pub struct RequestPrdUpdate {
|
|
pub prd: RequestPrd,
|
|
pub pcd_new_version_hash: String,
|
|
pub payment_pcd_hash_list: Vec<String>,
|
|
pub cap_pcd_hash_list: Vec<String>,
|
|
pub deposit_pcd_hash_list: Vec<String>,
|
|
pub commitment_pcd_hash_list: Vec<String>,
|
|
pub ask_payment_method: String,
|
|
pub ask_deposit_method: String,
|
|
pub ask_commitment_method: String,
|
|
}
|
|
|
|
pub struct KeyRoleConfidential {
|
|
pub attribute_name: String,
|
|
pub key: KeyEncryption,
|
|
pub algorithm_name: String,
|
|
}
|
|
|
|
pub struct RequestPrd {
|
|
pub request: Request, // Assuming Request is a predefined struct
|
|
pub pcd_keys_role_confidential_list_enc_by_shared_secret: String,
|
|
pub message_public: Option<String>,
|
|
pub message_confidential: Option<String>,
|
|
pub message_private: Option<String>,
|
|
pub sp_address_to: String,
|
|
pub sp_address_from: String,
|
|
pub sp_address_reply: String,
|
|
pub timestamp_declared: u64, // Assuming a Unix timestamp
|
|
pub role_name_from: String,
|
|
pub role_name_to: String,
|
|
}
|
|
|
|
pub struct RoleArtefact {
|
|
pub item_name: String,
|
|
pub role: Role,
|
|
}
|
|
|
|
pub struct Request {
|
|
pub item_name: Option<String>,
|
|
pub request_type: String, // `type` is a reserved keyword in Rust, renamed to `request_type`
|
|
pub version: i64,
|
|
pub process_hash: String,
|
|
pub pcd_reference_hash: Option<String>,
|
|
pub item_reference_hash: Option<String>,
|
|
}
|
|
|
|
pub struct RoleDeposit {
|
|
pub item_name: String,
|
|
pub role: Role,
|
|
}
|
|
|
|
pub struct RoleCommitment {
|
|
pub item_name: String,
|
|
pub role: Role,
|
|
}
|
|
|
|
pub struct RoleMember {
|
|
pub item_name: String,
|
|
pub role: Role,
|
|
}
|
|
|
|
pub struct RolePayment {
|
|
pub item_name: String,
|
|
pub role: Role,
|
|
}
|
|
|
|
pub struct RoleProcess {
|
|
pub item_name: String,
|
|
pub role: Role,
|
|
}
|
|
|
|
pub struct Role {
|
|
pub item: Item,
|
|
pub required_2fa: bool,
|
|
pub validation_timeout: u64,
|
|
pub condition_prd_address_set_list: Vec<ConditionPrdAddressSet>, // Assuming ConditionPrdAddressSet is a predefined struct
|
|
pub condition_publish: ConditionPublish, // Assuming ConditionPublish is a predefined struct
|
|
pub condition_cap_list: Vec<ConditionCap>, // Assuming ConditionCap is a predefined struct
|
|
pub condition_payment_list: Vec<ConditionPayment>, // Assuming ConditionPayment is a predefined struct
|
|
pub condition_commitment_list: Vec<ConditionCommitment>, // Assuming ConditionCommitment is a predefined struct
|
|
pub condition_attribute_encryption_list: Vec<String>,
|
|
pub condition_orchestration: ConditionOrchestration, // Assuming ConditionOrchestration is a predefined struct
|
|
pub role_succession: Option<String>,
|
|
pub role_resolve: Option<String>,
|
|
pub role_renew: Option<String>,
|
|
}
|
|
|
|
pub struct TransactionModeDistribution {
|
|
pub from_prd_update_from: String,
|
|
pub from_role_list: Vec<String>,
|
|
pub to_role_list: Vec<String>,
|
|
pub from_prd_address_list: Vec<String>,
|
|
pub to_prd_address_list: Vec<String>,
|
|
pub method: String,
|
|
}
|
|
|
|
pub struct TransactionModeDirect {
|
|
pub from_prd_update_from: String,
|
|
pub to_role_owner: String,
|
|
}
|
|
|
|
pub struct TransactionMode {
|
|
pub amount: Amount,
|
|
pub role_transaction_distribution: TransactionModeDistribution,
|
|
pub role_transaction_direct: TransactionModeDirect,
|
|
}
|
|
|
|
pub struct RolesGroup {
|
|
pub role_peer: RolePeer,
|
|
pub role_member: RoleMember,
|
|
pub role_process: RoleProcess,
|
|
pub role_artefact_list: Vec<RoleArtefact>,
|
|
}
|
|
|
|
pub struct SharedProcess {
|
|
pub hash: String,
|
|
pub key: KeyEncryption,
|
|
pub role_process_sp_address_list: Vec<String>,
|
|
}
|
|
|
|
pub struct SharedPeer {
|
|
pub domain: String,
|
|
pub address_ip: String,
|
|
pub relay: Relay,
|
|
pub l1_node: L1Node,
|
|
pub l1_miner: L1Miner,
|
|
pub l2_node: L2Node,
|
|
pub l2_certif: L2Certif,
|
|
}
|
|
|
|
pub struct Relay {
|
|
pub address_port: u16,
|
|
pub data_max_size: usize,
|
|
pub pow_difficulty: u32,
|
|
pub pow_pattern: String,
|
|
pub pow_prefix: String,
|
|
}
|
|
|
|
pub struct L1Node {
|
|
pub address_port: u16,
|
|
pub explorer_base_url: String,
|
|
pub sp_address_anchorage: String,
|
|
pub sp_address_reward: String,
|
|
}
|
|
|
|
pub struct L1Miner {
|
|
pub sp_address_rewarder: String,
|
|
}
|
|
|
|
pub struct L2Node {
|
|
pub address_port: u16,
|
|
pub explorer_base_url: String,
|
|
pub sp_address_anchorage: String,
|
|
pub sp_address_reward: String,
|
|
pub nbits: u32,
|
|
pub magic_number: u32,
|
|
pub challenge: String,
|
|
}
|
|
|
|
pub struct L2Certif {
|
|
pub sp_address_certif: String,
|
|
}
|
|
|
|
pub struct SharedPeer {
|
|
pub domain: String,
|
|
pub address_ip: String,
|
|
pub relay: Relay,
|
|
pub l1_node: L1Node,
|
|
pub l1_miner: L1Miner,
|
|
pub l2_node: L2Node,
|
|
pub l2_certif: L2Certif,
|
|
}
|
|
|
|
pub struct RolePeer {
|
|
pub item_name: String,
|
|
pub role: Role,
|
|
}
|