Skip to content

Commit

Permalink
Feat/grouped token (#254)
Browse files Browse the repository at this point in the history
* Add is group token check

* Add USD check

* Update codecs and group token functions

* Update codecs

* Add convert to group function

* Remove hardcoded addresses inside example scripts

* v0.3.37-dev.1+322bc50eaadc

* Update codecs

* Add group admin rpc, remove comments and logs

* Add AminoTypes

* Fix Amino types

* v0.3.37-dev.2+18512988ac7f

---------

Co-authored-by: sarah-thong <[email protected]>
  • Loading branch information
andrewsoon and sarah-thong authored Feb 13, 2023
1 parent 15b1459 commit c011216
Show file tree
Hide file tree
Showing 21 changed files with 3,997 additions and 173 deletions.
26 changes: 26 additions & 0 deletions examples/_test-group-withdraw.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import * as BIP39 from "bip39";
import { MsgWithdrawFromGroup } from "../lib/codec";
import { CarbonSDK, CarbonTx } from "./_sdk";
import "./_setup";

(async () => {
const mnemonics = process.env.MNEMONICS ?? BIP39.generateMnemonic();
console.log("mnemonics", mnemonics);

const sdk = await CarbonSDK.instanceWithMnemonic(mnemonics, { network: CarbonSDK.Network.LocalHost});

const result = await sdk.wallet.sendTxs([{
typeUrl: CarbonTx.Types.MsgWithdrawFromGroup,
value: MsgWithdrawFromGroup.fromPartial({
creator: sdk.wallet.bech32Address,
sourceCoin: {
denom: 'usdc',
amount: '10000'
}
})
}])

console.log(result);
})().catch((e) => {
console.log({ e })
}).finally(() => process.exit(0));
28 changes: 28 additions & 0 deletions examples/_test-group.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import BigNumber from "bignumber.js";
import * as BIP39 from "bip39";
import { MsgSend } from "cosmjs-types/cosmos/bank/v1beta1/tx";
import { MsgDepositToGroup } from "../lib/codec";
import { CarbonSDK, CarbonTx } from "./_sdk";
import "./_setup";

(async () => {
const mnemonics = process.env.MNEMONICS ?? BIP39.generateMnemonic();
console.log("mnemonics", mnemonics);

const sdk = await CarbonSDK.instanceWithMnemonic(mnemonics, { network: CarbonSDK.Network.LocalHost});

const result = await sdk.wallet.sendTxs([{
typeUrl: CarbonTx.Types.MsgDepositToGroup,
value: MsgDepositToGroup.fromPartial({
creator: sdk.wallet.bech32Address,
depositCoin: {
denom: 'usdc',
amount: '10000'
}
})
}])

console.log(result);
})().catch((e) => {
console.log({ e })
}).finally(() => process.exit(0));
29 changes: 29 additions & 0 deletions examples/create_new_group.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import * as BIP39 from "bip39";
import { MsgCreateGroup } from "../lib/codec";
import { CarbonSDK, CarbonTx } from "./_sdk";
import "./_setup";

(async () => {
const mnemonics = process.env.MNEMONICS ?? BIP39.generateMnemonic();
console.log("mnemonics:", mnemonics);

const sdk = await CarbonSDK.instance({
network: CarbonSDK.Network.LocalHost,
config: {
tmRpcUrl: process.env.TRPC_ENDPOINT,
},
});
const connectedSDK = await sdk.connectWithMnemonic(mnemonics);
console.log("connected sdk");

const result = await connectedSDK.wallet.sendTxs([{
typeUrl: CarbonTx.Types.MsgCreateGroup,
value: MsgCreateGroup.fromPartial({
creator: connectedSDK.wallet.bech32Address,
name: 'USD',
chequeTokenSymbol: 'USD',
oracleId: 'DXBT2'
}),
}]);
console.log(result)
})().catch(console.error).finally(() => process.exit(0));
34 changes: 34 additions & 0 deletions examples/register_to_group.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import * as BIP39 from "bip39";
import { MsgRegisterToGroup } from "../lib/codec";
import { CarbonSDK, CarbonTx } from "./_sdk";
import "./_setup";

(async () => {
const mnemonics = process.env.MNEMONICS ?? BIP39.generateMnemonic();
console.log("mnemonics:", mnemonics);

// const sdk = await CarbonSDK.instanceWithMnemonic(mnemonics, {
// network: CarbonSDK.Network.LocalHost,
// });

const sdk = await CarbonSDK.instance({
network: CarbonSDK.Network.LocalHost,
config: {
tmRpcUrl: process.env.TRPC_ENDPOINT,
},
});
const connectedSDK = await sdk.connectWithMnemonic(mnemonics);
console.log("connected sdk");

const result = await connectedSDK.wallet.sendTxs([{
typeUrl: CarbonTx.Types.MsgRegisterToGroup,
value: MsgRegisterToGroup.fromPartial({
creator: connectedSDK.wallet.bech32Address,
groupId: '1',
denom: 'usdc',
}),
}]);

console.log(result);

})().catch(console.error).finally(() => process.exit(0));
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "carbon-js-sdk",
"version": "0.3.37",
"version": "0.3.37-dev.2+18512988ac7f",
"description": "TypeScript SDK for Carbon blockchain",
"main": "lib/index.js",
"types": "lib/index.d.ts",
Expand Down
1 change: 1 addition & 0 deletions src/codec/cdp/asset_params.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export const protobufPackage = "Switcheo.carbon.cdp";

export interface AssetParams {
denom: string;
/** deprecated: oracle_id is now on pricing */
oracleId: string;
rateStrategyName: string;
allowRepayStablecoinInterestDebt: boolean;
Expand Down
159 changes: 158 additions & 1 deletion src/codec/cdp/tx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,13 @@ export interface MsgLiquidateCollateralWithStablecoinAndInterestInCollateral {

export interface MsgLiquidateCollateralWithStablecoinAndInterestInCollateralResponse {}

export interface MsgConvertTokenInCdpToGroupTokens {
creator: string;
denom: string;
}

export interface MsgConvertTokenInCdpToGroupTokensResponse {}

const baseMsgAddRateStrategy: object = { creator: "" };

export const MsgAddRateStrategy = {
Expand Down Expand Up @@ -5934,6 +5941,137 @@ export const MsgLiquidateCollateralWithStablecoinAndInterestInCollateralResponse
},
};

const baseMsgConvertTokenInCdpToGroupTokens: object = {
creator: "",
denom: "",
};

export const MsgConvertTokenInCdpToGroupTokens = {
encode(
message: MsgConvertTokenInCdpToGroupTokens,
writer: _m0.Writer = _m0.Writer.create()
): _m0.Writer {
if (message.creator !== "") {
writer.uint32(10).string(message.creator);
}
if (message.denom !== "") {
writer.uint32(18).string(message.denom);
}
return writer;
},

decode(
input: _m0.Reader | Uint8Array,
length?: number
): MsgConvertTokenInCdpToGroupTokens {
const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = {
...baseMsgConvertTokenInCdpToGroupTokens,
} as MsgConvertTokenInCdpToGroupTokens;
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
message.creator = reader.string();
break;
case 2:
message.denom = reader.string();
break;
default:
reader.skipType(tag & 7);
break;
}
}
return message;
},

fromJSON(object: any): MsgConvertTokenInCdpToGroupTokens {
const message = {
...baseMsgConvertTokenInCdpToGroupTokens,
} as MsgConvertTokenInCdpToGroupTokens;
message.creator =
object.creator !== undefined && object.creator !== null
? String(object.creator)
: "";
message.denom =
object.denom !== undefined && object.denom !== null
? String(object.denom)
: "";
return message;
},

toJSON(message: MsgConvertTokenInCdpToGroupTokens): unknown {
const obj: any = {};
message.creator !== undefined && (obj.creator = message.creator);
message.denom !== undefined && (obj.denom = message.denom);
return obj;
},

fromPartial(
object: DeepPartial<MsgConvertTokenInCdpToGroupTokens>
): MsgConvertTokenInCdpToGroupTokens {
const message = {
...baseMsgConvertTokenInCdpToGroupTokens,
} as MsgConvertTokenInCdpToGroupTokens;
message.creator = object.creator ?? "";
message.denom = object.denom ?? "";
return message;
},
};

const baseMsgConvertTokenInCdpToGroupTokensResponse: object = {};

export const MsgConvertTokenInCdpToGroupTokensResponse = {
encode(
_: MsgConvertTokenInCdpToGroupTokensResponse,
writer: _m0.Writer = _m0.Writer.create()
): _m0.Writer {
return writer;
},

decode(
input: _m0.Reader | Uint8Array,
length?: number
): MsgConvertTokenInCdpToGroupTokensResponse {
const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = {
...baseMsgConvertTokenInCdpToGroupTokensResponse,
} as MsgConvertTokenInCdpToGroupTokensResponse;
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
default:
reader.skipType(tag & 7);
break;
}
}
return message;
},

fromJSON(_: any): MsgConvertTokenInCdpToGroupTokensResponse {
const message = {
...baseMsgConvertTokenInCdpToGroupTokensResponse,
} as MsgConvertTokenInCdpToGroupTokensResponse;
return message;
},

toJSON(_: MsgConvertTokenInCdpToGroupTokensResponse): unknown {
const obj: any = {};
return obj;
},

fromPartial(
_: DeepPartial<MsgConvertTokenInCdpToGroupTokensResponse>
): MsgConvertTokenInCdpToGroupTokensResponse {
const message = {
...baseMsgConvertTokenInCdpToGroupTokensResponse,
} as MsgConvertTokenInCdpToGroupTokensResponse;
return message;
},
};

/** Msg defines the Msg service. */
export interface Msg {
AddRateStrategy(
Expand Down Expand Up @@ -6028,10 +6166,13 @@ export interface Msg {
LiquidateCollateralWithStablecoinAndInterestInCdpTokens(
request: MsgLiquidateCollateralWithStablecoinAndInterestInCdpTokens
): Promise<MsgLiquidateCollateralWithStablecoinAndInterestInCdpTokensResponse>;
/** this line is used by starport scaffolding # proto/tx/rpc */
LiquidateCollateralWithStablecoinAndInterestInCollateral(
request: MsgLiquidateCollateralWithStablecoinAndInterestInCollateral
): Promise<MsgLiquidateCollateralWithStablecoinAndInterestInCollateralResponse>;
/** this line is used by starport scaffolding # proto/tx/rpc */
ConvertTokenInCdpToGroupTokens(
request: MsgConvertTokenInCdpToGroupTokens
): Promise<MsgConvertTokenInCdpToGroupTokensResponse>;
}

export class MsgClientImpl implements Msg {
Expand Down Expand Up @@ -6085,6 +6226,8 @@ export class MsgClientImpl implements Msg {
this.LiquidateCollateralWithStablecoinAndInterestInCdpTokens.bind(this);
this.LiquidateCollateralWithStablecoinAndInterestInCollateral =
this.LiquidateCollateralWithStablecoinAndInterestInCollateral.bind(this);
this.ConvertTokenInCdpToGroupTokens =
this.ConvertTokenInCdpToGroupTokens.bind(this);
}
AddRateStrategy(
request: MsgAddRateStrategy
Expand Down Expand Up @@ -6603,6 +6746,20 @@ export class MsgClientImpl implements Msg {
)
);
}

ConvertTokenInCdpToGroupTokens(
request: MsgConvertTokenInCdpToGroupTokens
): Promise<MsgConvertTokenInCdpToGroupTokensResponse> {
const data = MsgConvertTokenInCdpToGroupTokens.encode(request).finish();
const promise = this.rpc.request(
"Switcheo.carbon.cdp.Msg",
"ConvertTokenInCdpToGroupTokens",
data
);
return promise.then((data) =>
MsgConvertTokenInCdpToGroupTokensResponse.decode(new _m0.Reader(data))
);
}
}

interface Rpc {
Expand Down
Loading

0 comments on commit c011216

Please sign in to comment.