larry0x/ics999

new API with third party integrators

Closed this issue · 1 comments

a factory contract must implement the following execute msg:

#[cw_serde]
enum FactoryExecuteMsg {
    Register(RegisterMsg),
}

#[cw_serde]
struct RegisterMsg {
    pub src:        IbcEndpoint,
    pub controller: String,
    pub data:       Binary,
}

#[cw_serde]
pub struct RegisterResponse {
    pub host: String,
}

a sender contract that wishes to receive callbacks on packet lifecycle completion must implement the following execute msg:

#[cw_serde]
enum SenderExecuteMsg {
    Callback(CallbackMsg),
}

#[cw_serde]
struct CallbackMsg {
    pub dest:     IbcEndpoint,
    pub sequence: u64,
    pub outcome:  PacketOutcome,
}

#[cw_serde]
enum PacketOutcome {
    Success(Vec<ActionResult>),
    Failed(String),
    Timeout,
}

ack is basically outcome without timeout:

#[cw_serde]
enum PacketAck {
    Success(Vec<ActionResult>),
    Failed(String),
}

completed