9 #include <tvm/schema/message.hpp>
10 #include <tvm/smart_switcher.hpp>
11 #include <tvm/contract_handle.hpp>
12 #include <tvm/replay_attack_protection/timestamp.hpp>
14 #include "FlexWallet.hpp"
19 #include "immutable_ids.hpp"
32 address tip3root_major,
33 address tip3root_minor,
34 Tip3Config major_tip3cfg,
35 Tip3Config minor_tip3cfg,
44 address tip3root_major,
45 address tip3root_minor,
55 address tip3root_major,
56 address tip3root_minor,
63 using IFlexNotifyPtr = handle<IFlexNotify>;
96 uint128 flex_keep_evers,
99 ) = immutable_ids::flex_on_deploy_id;
102 [[
internal, answer_id]]
105 Tip3Config major_tip3cfg,
106 Tip3Config minor_tip3cfg,
111 ) = immutable_ids::flex_register_xchg_pair_id;
120 [[
internal, answer_id]]
140 using IFlexPtr = handle<IFlex>;
172 static std::pair<StateInit, uint256> execute(
DFlex data, cell code) {
173 cell data_cl = prepare_persistent_data<IFlex, void>({}, data);
174 StateInit init { {}, {}, code, data_cl, {} };
175 cell init_cl = build(init).make_cell();
176 return { init, uint256(tvm_hash(init_cl)) };
Flex evers configuration (processing costs)
Flex contract configuration structure (stored in code salt)
Pair clone evers configuration structure.
Price common interfaces and data-structs.
Exchange pair (tip3/tip3) contract interfaces and data-structs. XchgPair - contract defining tip3/tip...
Flex persistent data struct.
Definition: Flex.hpp:143
uint128 minmove_
Minimum move for price.
Definition: Flex.hpp:157
address_opt prev_clone_
Previous pair clone (for cloning)
Definition: Flex.hpp:153
uint128 flex_keep_evers_
Evers to keep in the contract.
Definition: Flex.hpp:151
opt< Tip3Config > major_tip3cfg_
Configuration of the major tip3 token for current pair (for cloning)
Definition: Flex.hpp:159
uint32 exchange_version_
Exchange update group version.
Definition: Flex.hpp:144
opt< Tip3Config > minor_tip3cfg_
Configuration of the minor tip3 token for current pair (for cloning)
Definition: Flex.hpp:160
uint128 min_amount_
Minimum amount of major tokens for a deal or an order.
Definition: Flex.hpp:156
address_opt notify_addr_
Notification address (AMM) (for cloning)
Definition: Flex.hpp:155
address_opt next_
Next XchgPair address (for cloning)
Definition: Flex.hpp:154
address_opt last_pair_
Last XchgPair in linked list.
Definition: Flex.hpp:149
uint128 price_denum_
Price denominator for the pair.
Definition: Flex.hpp:158
address_opt first_pair_
First XchgPair in linked list.
Definition: Flex.hpp:148
address_opt it_
Old pair iterator (for cloning)
Definition: Flex.hpp:152
optcell xchg_pair_code_
XchgPair code (with salt added)
Definition: Flex.hpp:147
int8 workchain_id_
Workchain id.
Definition: Flex.hpp:146
uint32 pairs_count_
Count of XchgPair contracts.
Definition: Flex.hpp:150
Flex events interface.
Definition: Flex.hpp:165
Flex root details (for getter)
Definition: Flex.hpp:73
uint32 pairs_count
Count of XchgPair contracts.
Definition: Flex.hpp:78
address_opt first_pair
First XchgPair in linked list.
Definition: Flex.hpp:76
address_opt last_pair
Last XchgPair in linked list.
Definition: Flex.hpp:77
cell xchg_pair_code
Exchange pair code (XchgPair)
Definition: Flex.hpp:74
uint256 unsalted_price_code_hash
PriceXchg code hash (unsalted)
Definition: Flex.hpp:75
Ownership info for Flex root.
Definition: Flex.hpp:66
address_opt owner
If Flex is managed by other contract (deployer will not be able to execute non-deploy methods)
Definition: Flex.hpp:69
string ownership_description
Ownership description.
Definition: Flex.hpp:68
uint256 deployer_pubkey
Deployer's public key.
Definition: Flex.hpp:67
Flex configuration structure (stored in code salt)
Definition: FlexSalt.hpp:16
Notifications to AMM about orders.
Definition: Flex.hpp:26
void onXchgOrderCanceled(bool sell, address tip3root_major, address tip3root_minor, uint128 price_num, uint128 price_denum, uint128 amount, uint128 sum_amount)
Notification about canceled exchange order (tip3/tip3)
void onXchgOrderAdded(bool sell, address tip3root_major, address tip3root_minor, uint128 price_num, uint128 price_denum, uint128 amount, uint128 sum_amount)
Notification about added exchange order (tip3/tip3)
void onXchgDealCompleted(bool seller_is_taker, address pair, address tip3root_major, address tip3root_minor, Tip3Config major_tip3cfg, Tip3Config minor_tip3cfg, uint128 price_num, uint128 price_denum, uint128 amount)
Notification about completed exchange deal tip3/tip3.
Flex root contract interface. Flex is a root contract for exchange system.
Definition: Flex.hpp:91
address addXchgPair(PairCloneEvers evers, Tip3Config major_tip3cfg, Tip3Config minor_tip3cfg, uint128 min_amount, uint128 minmove, uint128 price_denum, address notify_addr)
Register tip3/tip3 xchg pair (returns pre-calculated address of future xchg pair)
resumable< void > onDeploy(uint128 flex_keep_evers, PairCloneEvers evers, address_opt old_flex)
Constructor of Flex.
FlexSalt getConfig()
Get Flex configuration from code salt.
uint128 calcLendTokensForOrder(bool sell, uint128 major_tokens, price_t price)
Calculate necessary lend tokens for order.
PairsRange requestPairs()
Request first/last pair in list.
void unlistXchgPair(address pair)
Unlist tip3/tip3 xchg pair.
address getXchgTradingPair(address tip3_major_root, address tip3_minor_root)
Get address of tip3/tip3 exchange pair.
FlexDetails getDetails()
Get contract state details.
Evers configuration for pair clone procedure.
Definition: PairCloneEvers.hpp:12
Flex pairs list.
Definition: Flex.hpp:82
address_opt first_pair
First XchgPair in linked list.
Definition: Flex.hpp:83
address_opt last_pair
Last XchgPair in linked list.
Definition: Flex.hpp:84
Rational value - numerator/denominator.
Definition: RationalValue.hpp:12