use crate::msg::to_any;
use crate::proto::qorechain::bridge::v1 as pb;
use cosmrs::Any;
pub const BRIDGE_DEPOSIT: &str = "/qorechain.bridge.v1.MsgBridgeDeposit";
pub const BRIDGE_WITHDRAW: &str = "/qorechain.bridge.v1.MsgBridgeWithdraw";
pub const REGISTER_BRIDGE_VALIDATOR: &str = "/qorechain.bridge.v1.MsgRegisterBridgeValidator";
pub const BRIDGE_ATTESTATION: &str = "/qorechain.bridge.v1.MsgBridgeAttestation";
pub const UPDATE_ETH_LIGHT_CLIENT: &str = "/qorechain.bridge.v1.MsgUpdateEthLightClient";
pub const UPDATE_CHAIN_CONFIG: &str = "/qorechain.bridge.v1.MsgUpdateChainConfig";
pub const SET_VERIFIER_BOOTSTRAP: &str = "/qorechain.bridge.v1.MsgSetVerifierBootstrap";
pub use pb::{BitcoinCheckpoint, ValidatorQuorum, WormholeGuardianSet};
#[allow(clippy::too_many_arguments)]
pub fn bridge_deposit(
sender: impl Into<String>,
source_chain: impl Into<String>,
source_tx_hash: impl Into<String>,
asset: impl Into<String>,
amount: impl Into<String>,
bridge_validator_sigs: Vec<u8>,
pqc_commitment: Vec<u8>,
) -> pb::MsgBridgeDeposit {
pb::MsgBridgeDeposit {
sender: sender.into(),
source_chain: source_chain.into(),
source_tx_hash: source_tx_hash.into(),
asset: asset.into(),
amount: amount.into(),
bridge_validator_sigs,
pqc_commitment,
}
}
#[allow(clippy::too_many_arguments)]
pub fn bridge_deposit_any(
sender: impl Into<String>,
source_chain: impl Into<String>,
source_tx_hash: impl Into<String>,
asset: impl Into<String>,
amount: impl Into<String>,
bridge_validator_sigs: Vec<u8>,
pqc_commitment: Vec<u8>,
) -> Any {
to_any(
&bridge_deposit(
sender,
source_chain,
source_tx_hash,
asset,
amount,
bridge_validator_sigs,
pqc_commitment,
),
BRIDGE_DEPOSIT,
)
}
pub fn bridge_withdraw(
sender: impl Into<String>,
destination_chain: impl Into<String>,
destination_address: impl Into<String>,
asset: impl Into<String>,
amount: impl Into<String>,
) -> pb::MsgBridgeWithdraw {
pb::MsgBridgeWithdraw {
sender: sender.into(),
destination_chain: destination_chain.into(),
destination_address: destination_address.into(),
asset: asset.into(),
amount: amount.into(),
}
}
pub fn bridge_withdraw_any(
sender: impl Into<String>,
destination_chain: impl Into<String>,
destination_address: impl Into<String>,
asset: impl Into<String>,
amount: impl Into<String>,
) -> Any {
to_any(
&bridge_withdraw(
sender,
destination_chain,
destination_address,
asset,
amount,
),
BRIDGE_WITHDRAW,
)
}
pub fn register_bridge_validator(
validator_address: impl Into<String>,
pqc_pubkey: Vec<u8>,
supported_chains: Vec<String>,
) -> pb::MsgRegisterBridgeValidator {
pb::MsgRegisterBridgeValidator {
validator_address: validator_address.into(),
pqc_pubkey,
supported_chains,
}
}
pub fn register_bridge_validator_any(
validator_address: impl Into<String>,
pqc_pubkey: Vec<u8>,
supported_chains: Vec<String>,
) -> Any {
to_any(
®ister_bridge_validator(validator_address, pqc_pubkey, supported_chains),
REGISTER_BRIDGE_VALIDATOR,
)
}
#[allow(clippy::too_many_arguments)]
pub fn bridge_attestation(
validator: impl Into<String>,
chain: impl Into<String>,
event_type: impl Into<String>,
operation_id: impl Into<String>,
tx_hash: impl Into<String>,
amount: impl Into<String>,
asset: impl Into<String>,
proof: Vec<u8>,
pqc_signature: Vec<u8>,
) -> pb::MsgBridgeAttestation {
pb::MsgBridgeAttestation {
validator: validator.into(),
chain: chain.into(),
event_type: event_type.into(),
operation_id: operation_id.into(),
tx_hash: tx_hash.into(),
amount: amount.into(),
asset: asset.into(),
proof,
pqc_signature,
}
}
#[allow(clippy::too_many_arguments)]
pub fn bridge_attestation_any(
validator: impl Into<String>,
chain: impl Into<String>,
event_type: impl Into<String>,
operation_id: impl Into<String>,
tx_hash: impl Into<String>,
amount: impl Into<String>,
asset: impl Into<String>,
proof: Vec<u8>,
pqc_signature: Vec<u8>,
) -> Any {
to_any(
&bridge_attestation(
validator,
chain,
event_type,
operation_id,
tx_hash,
amount,
asset,
proof,
pqc_signature,
),
BRIDGE_ATTESTATION,
)
}
pub fn update_eth_light_client(
relayer: impl Into<String>,
update: Vec<u8>,
) -> pb::MsgUpdateEthLightClient {
pb::MsgUpdateEthLightClient {
relayer: relayer.into(),
update,
}
}
pub fn update_eth_light_client_any(relayer: impl Into<String>, update: Vec<u8>) -> Any {
to_any(
&update_eth_light_client(relayer, update),
UPDATE_ETH_LIGHT_CLIENT,
)
}
#[allow(clippy::too_many_arguments)]
pub fn update_chain_config(
admin: impl Into<String>,
chain_id: impl Into<String>,
bridge_contract: impl Into<String>,
confirmations_required: u32,
architecture: impl Into<String>,
status: impl Into<String>,
verifier: impl Into<String>,
lock_event_sig: impl Into<String>,
) -> pb::MsgUpdateChainConfig {
pb::MsgUpdateChainConfig {
admin: admin.into(),
chain_id: chain_id.into(),
bridge_contract: bridge_contract.into(),
confirmations_required,
architecture: architecture.into(),
status: status.into(),
verifier: verifier.into(),
lock_event_sig: lock_event_sig.into(),
}
}
#[allow(clippy::too_many_arguments)]
pub fn update_chain_config_any(
admin: impl Into<String>,
chain_id: impl Into<String>,
bridge_contract: impl Into<String>,
confirmations_required: u32,
architecture: impl Into<String>,
status: impl Into<String>,
verifier: impl Into<String>,
lock_event_sig: impl Into<String>,
) -> Any {
to_any(
&update_chain_config(
admin,
chain_id,
bridge_contract,
confirmations_required,
architecture,
status,
verifier,
lock_event_sig,
),
UPDATE_CHAIN_CONFIG,
)
}
pub fn set_verifier_bootstrap(
admin: impl Into<String>,
chain_id: impl Into<String>,
wormhole: Option<WormholeGuardianSet>,
ed25519: Option<ValidatorQuorum>,
bls: Option<ValidatorQuorum>,
bitcoin: Option<BitcoinCheckpoint>,
starknet_state_root: Vec<u8>,
) -> pb::MsgSetVerifierBootstrap {
pb::MsgSetVerifierBootstrap {
admin: admin.into(),
chain_id: chain_id.into(),
wormhole,
ed25519,
bls,
bitcoin,
starknet_state_root,
}
}
pub fn set_verifier_bootstrap_any(
admin: impl Into<String>,
chain_id: impl Into<String>,
wormhole: Option<WormholeGuardianSet>,
ed25519: Option<ValidatorQuorum>,
bls: Option<ValidatorQuorum>,
bitcoin: Option<BitcoinCheckpoint>,
starknet_state_root: Vec<u8>,
) -> Any {
to_any(
&set_verifier_bootstrap(
admin,
chain_id,
wormhole,
ed25519,
bls,
bitcoin,
starknet_state_root,
),
SET_VERIFIER_BOOTSTRAP,
)
}