syntax = "proto3"; package kava.cdp.v1beta1; import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; option go_package = "github.com/kava-labs/kava/x/cdp/types"; // Msg defines the cdp Msg service. service Msg { // CreateCDP defines a method to create a new CDP. rpc CreateCDP(MsgCreateCDP) returns (MsgCreateCDPResponse); // Deposit defines a method to deposit to a CDP. rpc Deposit(MsgDeposit) returns (MsgDepositResponse); // Withdraw defines a method to withdraw collateral from a CDP. rpc Withdraw(MsgWithdraw) returns (MsgWithdrawResponse); // DrawDebt defines a method to draw debt from a CDP. rpc DrawDebt(MsgDrawDebt) returns (MsgDrawDebtResponse); // RepayDebt defines a method to repay debt from a CDP. rpc RepayDebt(MsgRepayDebt) returns (MsgRepayDebtResponse); // Liquidate defines a method to attempt to liquidate a CDP whos // collateralization ratio is under its liquidation ratio. rpc Liquidate(MsgLiquidate) returns (MsgLiquidateResponse); } // MsgCreateCDP defines a message to create a new CDP. message MsgCreateCDP { string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; cosmos.base.v1beta1.Coin collateral = 2 [(gogoproto.nullable) = false]; cosmos.base.v1beta1.Coin principal = 3 [(gogoproto.nullable) = false]; string collateral_type = 4; } // MsgCreateCDPResponse defines the Msg/CreateCDP response type. message MsgCreateCDPResponse { uint64 cdp_id = 1 [(gogoproto.customname) = "CdpID"]; } // MsgDeposit defines a message to deposit to a CDP. message MsgDeposit { string depositor = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string owner = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; cosmos.base.v1beta1.Coin collateral = 3 [(gogoproto.nullable) = false]; string collateral_type = 4; } // MsgDepositResponse defines the Msg/Deposit response type. message MsgDepositResponse {} // MsgWithdraw defines a message to withdraw collateral from a CDP. message MsgWithdraw { string depositor = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string owner = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; cosmos.base.v1beta1.Coin collateral = 3 [(gogoproto.nullable) = false]; string collateral_type = 4; } // MsgWithdrawResponse defines the Msg/Withdraw response type. message MsgWithdrawResponse {} // MsgDrawDebt defines a message to draw debt from a CDP. message MsgDrawDebt { string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string collateral_type = 2; cosmos.base.v1beta1.Coin principal = 3 [(gogoproto.nullable) = false]; } // MsgDrawDebtResponse defines the Msg/DrawDebt response type. message MsgDrawDebtResponse {} // MsgRepayDebt defines a message to repay debt from a CDP. message MsgRepayDebt { string sender = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string collateral_type = 2; cosmos.base.v1beta1.Coin payment = 3 [(gogoproto.nullable) = false]; } // MsgRepayDebtResponse defines the Msg/RepayDebt response type. message MsgRepayDebtResponse {} // MsgLiquidate defines a message to attempt to liquidate a CDP whos // collateralization ratio is under its liquidation ratio. message MsgLiquidate { string keeper = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string borrower = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string collateral_type = 3; } // MsgLiquidateResponse defines the Msg/Liquidate response type. message MsgLiquidateResponse {}