eth_twc_sdk/types/
args.rs

1//! 各 API への引数型(自己送金用と EIP-712 署名入力用)。
2
3use alloy::primitives::{Address, B256, U256};
4
5use super::transfer_detail::{CommittedTransferDetail, TransferDetail};
6
7// ---- selfTransfer(`msg.sender` が送金者の `transfer`)----
8
9/// `transfer(address,address,uint256,bytes32)` に対応する引数。
10#[derive(Clone, Debug)]
11pub struct SelfSingleTransferArgs {
12    /// 送金する ERC-20 トークン。
13    pub token: Address,
14    /// 送金先。
15    pub to: Address,
16    /// 数量。
17    pub value: U256,
18    /// コミットメント。
19    pub commitment: B256,
20}
21
22/// `transfer(TransferDetail[],bytes32)` に対応する引数。
23#[derive(Clone, Debug)]
24pub struct SelfUniCommitTransfersArgs {
25    /// 送金明細の列。
26    pub details: Vec<TransferDetail>,
27    /// 全体で共有するコミットメント。
28    pub commitment: B256,
29}
30
31/// `transfer(CommittedTransferDetail[])` に対応する引数。
32#[derive(Clone, Debug)]
33pub struct SelfBatchTransferWithCommitArgs {
34    /// コミットメント付き明細の列。
35    pub details: Vec<CommittedTransferDetail>,
36}
37
38// ---- signatureTransfer(EIP-712 署名メッセージの入力)----
39
40/// 型 `TransferWithCommit` 用の引数(署名者・送金内容)。
41#[derive(Clone, Debug)]
42pub struct SignatureSingleTransferArgs {
43    /// 署名者/送金元。
44    pub from: Address,
45    /// 送金先。
46    pub to: Address,
47    /// トークン。
48    pub token: Address,
49    /// 実行を許可する executor(オンチェーン検証で一致が必要)。
50    pub executor: Address,
51    /// 数量。
52    pub value: U256,
53    /// コミットメント。
54    pub commitment: B256,
55    /// EIP-712 の `validAfter`。`None` のときは `0`。
56    pub valid_after: Option<U256>,
57    /// EIP-712 の `validBefore`。`None` のときは [`U256::MAX`]。
58    pub valid_before: Option<U256>,
59}
60
61/// 型 `UniCommitTransfers` 用の引数。
62#[derive(Clone, Debug)]
63pub struct SignatureUniCommitTransfersArgs {
64    /// 署名者。
65    pub from: Address,
66    /// executor。
67    pub executor: Address,
68    /// 明細(コミットメントはトップレベルで共有)。
69    pub details: Vec<TransferDetail>,
70    pub commitment: B256,
71    /// EIP-712 の `validAfter`。`None` のときは `0`。
72    pub valid_after: Option<U256>,
73    /// EIP-712 の `validBefore`。`None` のときは [`U256::MAX`]。
74    pub valid_before: Option<U256>,
75}
76
77/// 型 `BatchTransferWithCommit` 用の引数。
78#[derive(Clone, Debug)]
79pub struct SignatureBatchTransferWithCommitArgs {
80    /// 署名者。
81    pub from: Address,
82    /// executor。
83    pub executor: Address,
84    /// コミットメント付き明細。
85    pub details: Vec<CommittedTransferDetail>,
86    /// バッチ全体のコミットメント(EIP-712 の `batchCommitment`;オンチェーンでは `replayGuard(from, batchCommitment)`)。
87    pub batch_commitment: B256,
88    /// EIP-712 の `validAfter`。`None` のときは `0`。
89    pub valid_after: Option<U256>,
90    /// EIP-712 の `validBefore`。`None` のときは [`U256::MAX`]。
91    pub valid_before: Option<U256>,
92}
93
94/// 型 `CancelAuthorization` 用の引数。
95#[derive(Clone, Debug)]
96pub struct CancelAuthorizationArgs {
97    /// 取消対象の承認者。
98    pub authorizer: Address,
99    /// コミットメント。
100    pub commitment: B256,
101}
102
103/// [`SignatureSingleTransferArgs`] の別名。
104pub type SingleTransferArgs = SignatureSingleTransferArgs;
105/// [`SignatureUniCommitTransfersArgs`] の別名。
106pub type UniCommitTransfersArgs = SignatureUniCommitTransfersArgs;
107/// [`SignatureBatchTransferWithCommitArgs`] の別名。
108pub type BatchTransferWithCommitArgs = SignatureBatchTransferWithCommitArgs;