1use crate::state::Config;
2use archid_token::{Account, Website};
3use cosmwasm_std::{Addr, Uint128};
4
5use schemars::JsonSchema;
6use serde::{Deserialize, Serialize};
7#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
8pub struct InstantiateMsg {
9 pub admin: Addr,
10 pub wallet: Addr,
11 pub cw721: Addr,
12 pub base_cost: Uint128,
13 pub base_expiration: u64,
14}
15#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
16pub struct MetaDataUpdateMsg {
17 pub description: Option<String>,
18 pub image: Option<String>,
19 pub accounts: Option<Vec<Account>>,
20 pub websites: Option<Vec<Website>>,
21}
22#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
23#[serde(rename_all = "snake_case")]
24pub enum ExecuteMsg {
25 Register {
26 name: String,
27 },
28 Withdraw {
29 amount: Uint128,
30 },
31 RenewRegistration {
32 name: String,
33 },
34 ExtendSubdomainExpiry {
35 domain: String,
36 subdomain: String,
37 expiration: u64,
38 },
39 UpdateResolver {
40 name: String,
41 new_resolver: Addr,
42 },
43 RegisterSubdomain {
44 domain: String,
45 subdomain: String,
46 new_resolver: Addr,
47 new_owner: Addr,
48 expiration: u64,
49 },
50 RemoveSubdomain {
51 domain: String,
52 subdomain: String,
53 },
54 UpdateConfig {
55 config: Config,
56 },
57 UpdateUserDomainData {
58 name: String,
59 metadata_update: MetaDataUpdateMsg,
60 },
61}
62
63#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
64#[serde(rename_all = "snake_case")]
65pub struct MigrateMsg {}
66
67#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
68#[serde(rename_all = "snake_case")]
69pub enum QueryMsg {
70 ResolveRecord { name: String },
71 RecordExpiration { name: String },
72 ResolveAddress { address: Addr },
73 Config {},
74}
75
76#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
77pub struct ResolveRecordResponse {
78 pub address: Option<String>,
79 pub expiration: u64,
80}
81#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
82pub struct ResolveAddressResponse {
83 pub names: Option<Vec<String>>,
84}
85#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
86pub struct RecordExpirationResponse {
87 pub created: u64,
88 pub expiration: u64,
89}