Module 0xa6::squid_v0
use 0x1::ascii;
use 0x2::balance;
use 0x2::clock;
use 0x2::coin;
use 0x2::tx_context;
use 0xa1::channel;
use 0xa5::its;
use 0xa6::coin_bag;
use 0xa6::swap_info;
use 0xb0::version_control;
Struct Squid_v0
struct Squid_v0 has store
Fields
-
channel: channel::Channel
-
-
coin_bag: coin_bag::CoinBag
-
-
version_control: version_control::VersionControl
-
Function new
public(friend) fun new(version_control: version_control::VersionControl, ctx: &mut tx_context::TxContext): squid_v0::Squid_v0
Implementation
public(package) fun new(
version_control: VersionControl,
ctx: &mut TxContext,
): Squid_v0 {
Squid_v0 {
channel: channel::new(ctx),
coin_bag: coin_bag::new(ctx),
version_control,
}
}
Function channel
public(friend) fun channel(self: &squid_v0::Squid_v0): &channel::Channel
Implementation
public(package) fun channel(self: &Squid_v0): &Channel {
&self.channel
}
Function version_control
public(friend) fun version_control(self: &squid_v0::Squid_v0): &version_control::VersionControl
Implementation
public(package) fun version_control(self: &Squid_v0): &VersionControl {
&self.version_control
}
Function coin_bag_mut
public(friend) fun coin_bag_mut(self: &mut squid_v0::Squid_v0): &mut coin_bag::CoinBag
Implementation
public(package) fun coin_bag_mut(self: &mut Squid_v0): &mut CoinBag {
&mut self.coin_bag
}
Function start_swap
public(friend) fun start_swap<T>(self: &squid_v0::Squid_v0, its: &mut its::ITS, approved_message: channel::ApprovedMessage, clock: &clock::Clock, ctx: &mut tx_context::TxContext): swap_info::SwapInfo
Implementation
public(package) fun start_swap<T>(
self: &Squid_v0,
its: &mut ITS,
approved_message: ApprovedMessage,
clock: &Clock,
ctx: &mut TxContext,
): SwapInfo {
let (_, _, data, coin) = its.receive_interchain_transfer_with_data<T>(
approved_message,
self.channel(),
clock,
ctx,
);
let mut swap_info = swap_info::new(data, ctx);
swap_info.coin_bag().store_estimate<T>(coin.value());
swap_info.coin_bag().store_balance(coin.into_balance());
swap_info
}