aleo_development_server/
requests.rs

1// Copyright (C) 2019-2023 Aleo Systems Inc.
2// This file is part of the Aleo SDK library.
3
4// The Aleo SDK library is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8
9// The Aleo SDK library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License
15// along with the Aleo SDK library. If not, see <https://www.gnu.org/licenses/>.
16
17use super::*;
18
19/// Request to deploy a new program
20#[derive(Deserialize, Serialize)]
21#[serde(bound(serialize = "N: Serialize", deserialize = "N: for<'a> Deserialize<'a>"))]
22pub(crate) struct DeployRequest<N: Network> {
23    pub program: Program<N>,
24    pub private_key: Option<PrivateKey<N>>,
25    pub password: Option<String>,
26    pub fee: u64,
27    pub fee_record: Option<Record<N, Plaintext<N>>>,
28    pub peer_url: Option<String>,
29}
30
31/// Request to execute a program
32#[derive(Deserialize, Serialize)]
33#[serde(bound(serialize = "N: Serialize", deserialize = "N: for<'a> Deserialize<'a>"))]
34pub(crate) struct ExecuteRequest<N: Network> {
35    pub program_id: ProgramID<N>,
36    pub program_function: Identifier<N>,
37    pub inputs: Vec<String>,
38    pub private_key: Option<PrivateKey<N>>,
39    pub password: Option<String>,
40    pub fee: u64,
41    pub fee_record: Option<Record<N, Plaintext<N>>>,
42    pub peer_url: Option<String>,
43}
44
45/// Request to make transfer of Aleo credits
46#[derive(Deserialize, Serialize)]
47#[serde(bound(serialize = "N: Serialize", deserialize = "N: for<'a> Deserialize<'a>"))]
48pub(crate) struct TransferRequest<N: Network> {
49    pub amount: u64,
50    pub fee: u64,
51    pub recipient: Address<N>,
52    pub transfer_type: String,
53    pub private_key: Option<PrivateKey<N>>,
54    pub password: Option<String>,
55    pub fee_record: Option<Record<N, Plaintext<N>>>,
56    pub amount_record: Option<Record<N, Plaintext<N>>>,
57    pub peer_url: Option<String>,
58}