Flex
Flex exchange system
WrapperEver.hpp
Go to the documentation of this file.
1 
20 #pragma once
21 
22 #include "TONTokenWallet.hpp"
23 #include "WrapperCommon.hpp"
24 #include "immutable_ids.hpp"
25 #include "EverReTransferArgs.hpp"
26 
27 namespace tvm {
28 
29 // ===== Flex Wrapper Contract ===== //
33 __interface IWrapperEver {
34 
36  [[internal, answer_id, deploy]]
37  bool init(
38  uint128 reserve_wallet_evers,
39  cell internal_wallet_code
40  ) = 10;
41 
43  [[internal, answer_id]]
45  uint256 pubkey,
46  address_opt owner,
47  uint128 evers
48  ) = 11;
49 
52  [[internal]]
54  uint128 tokens,
55  FlexDeployWalletArgs args
56  ) = 202;
57 
59 
62  [[internal]]
63  void burn(
64  uint128 tokens,
65  address answer_addr,
66  uint256 sender_pubkey,
67  address_opt sender_owner,
68  uint256 out_pubkey,
70  address_opt out_owner,
72  opt<cell> notify
73  ) = 12;
74 
76  [[internal]]
78  address_opt answer_addr,
79  address to,
80  uint128 tokens
81  ) = 13;
82 
84  [[internal, answer_id]]
85  uint128 requestTotalGranted() = 14;
86 
88  [[internal, answer_id]]
89  std::pair<address_opt, uint256> cloned() = immutable_ids::wrapper_cloned_id;
90 
92  [[internal]]
93  void setCloned(
94  address_opt cloned,
95  uint256 cloned_pubkey,
96  address wrappers_cfg,
97  uint256 wrappers_cfg_code_hash,
98  uint16 wrappers_cfg_code_depth
99  ) = immutable_ids::wrapper_set_cloned_id;
100 
102  [[getter]]
103  wrapper_details_info getDetails() = immutable_ids::wrapper_get_details_id;
104 
106  [[getter]]
107  Tip3Config getTip3Config() = immutable_ids::wrapper_get_tip3_config_id;
108 
110  [[getter]]
112 
114  [[getter]]
116  uint256 pubkey,
117  address_opt owner
118  ) = immutable_ids::wrapper_get_wallet_address_id;
119 
121  [[getter]]
122  address getReserveWallet() = 18;
123 };
124 using IWrapperEverPtr = handle<IWrapperEver>;
125 
127 template<>
128 struct preparer<IWrapperEver, DWrapper> {
129  __always_inline
130  static std::pair<StateInit, uint256> execute(DWrapper data, cell code) {
131  cell data_cl = prepare_persistent_data<IWrapperEver, void, DWrapper>({}, data);
132  StateInit init { {}, {}, code, data_cl, {} };
133  cell init_cl = build(init).make_cell();
134  return { init, uint256(tvm_hash(init_cl)) };
135  }
136 };
137 
138 } // namespace tvm
TONTokenWallet contract interfaces and data-structs.
WrapperEver contract interface.
Definition: WrapperEver.hpp:33
uint128 requestTotalGranted()
Request total granted tokens.
wrapper_details_info getDetails()
Get info about contract state details.
address getWalletAddress(uint256 pubkey, address_opt owner)
Calculate flex tip3 wallet address.
void transferFromReserveWallet(address_opt answer_addr, address to, uint128 tokens)
Transfer gathered fees from reserve wallet to other wallet. Request allowed only from Flex root.
bool init(uint128 reserve_wallet_evers, cell internal_wallet_code)
Additional initialization on deploy.
void setCloned(address_opt cloned, uint256 cloned_pubkey, address wrappers_cfg, uint256 wrappers_cfg_code_hash, uint16 wrappers_cfg_code_depth)
Set cloned wrapper address.
void burn(uint128 tokens, address answer_addr, uint256 sender_pubkey, address_opt sender_owner, uint256 out_pubkey, address_opt out_owner, opt< cell > notify)
Burn internal tokens.
void onEverTransfer(uint128 tokens, FlexDeployWalletArgs args)
Implements ITONTokenWalletNotify::onEverTransfer(). Notification about incoming tokens from user wall...
Tip3Config getTip3Config()
Get Tip3 configuration.
address getReserveWallet()
Get reserve token wallet address for this Wrapper.
address deployEmptyWallet(uint256 pubkey, address_opt owner, uint128 evers)
Deploy empty wallet.
std::pair< address_opt, uint256 > cloned()
Request cloned wrapper address.
bool hasInternalWalletCode()
If internal wallet code was set up.