;
+```
+References: [FailedReceipt](./lib-base.failedreceipt.md), [SuccessfulReceipt](./lib-base.successfulreceipt.md)
+
diff --git a/docs/sdk/lib-base.minimum_collateral_ratio.md b/docs/sdk/lib-base.minimum_collateral_ratio.md
new file mode 100644
index 000000000..f885ac00c
--- /dev/null
+++ b/docs/sdk/lib-base.minimum_collateral_ratio.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [MINIMUM\_COLLATERAL\_RATIO](./lib-base.minimum_collateral_ratio.md)
+
+## MINIMUM\_COLLATERAL\_RATIO variable
+
+Collateral ratio below which a Trove can be liquidated in normal mode.
+
+Signature:
+
+```typescript
+MINIMUM_COLLATERAL_RATIO: Decimal
+```
diff --git a/docs/sdk/lib-base.pendingreceipt.md b/docs/sdk/lib-base.pendingreceipt.md
new file mode 100644
index 000000000..c2afbff51
--- /dev/null
+++ b/docs/sdk/lib-base.pendingreceipt.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [PendingReceipt](./lib-base.pendingreceipt.md)
+
+## PendingReceipt type
+
+Signature:
+
+```typescript
+export declare type PendingReceipt = {
+ status: "pending";
+};
+```
diff --git a/docs/sdk/lib-base.populatedliquitytransaction.md b/docs/sdk/lib-base.populatedliquitytransaction.md
new file mode 100644
index 000000000..045c54d87
--- /dev/null
+++ b/docs/sdk/lib-base.populatedliquitytransaction.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [PopulatedLiquityTransaction](./lib-base.populatedliquitytransaction.md)
+
+## PopulatedLiquityTransaction interface
+
+Signature:
+
+```typescript
+export interface PopulatedLiquityTransaction
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [rawPopulatedTransaction](./lib-base.populatedliquitytransaction.rawpopulatedtransaction.md) | P | |
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [send()](./lib-base.populatedliquitytransaction.send.md) | |
+
diff --git a/docs/sdk/lib-base.populatedliquitytransaction.rawpopulatedtransaction.md b/docs/sdk/lib-base.populatedliquitytransaction.rawpopulatedtransaction.md
new file mode 100644
index 000000000..1efc8ee1a
--- /dev/null
+++ b/docs/sdk/lib-base.populatedliquitytransaction.rawpopulatedtransaction.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [PopulatedLiquityTransaction](./lib-base.populatedliquitytransaction.md) > [rawPopulatedTransaction](./lib-base.populatedliquitytransaction.rawpopulatedtransaction.md)
+
+## PopulatedLiquityTransaction.rawPopulatedTransaction property
+
+Signature:
+
+```typescript
+rawPopulatedTransaction: P;
+```
diff --git a/docs/sdk/lib-base.populatedliquitytransaction.send.md b/docs/sdk/lib-base.populatedliquitytransaction.send.md
new file mode 100644
index 000000000..1080670ec
--- /dev/null
+++ b/docs/sdk/lib-base.populatedliquitytransaction.send.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [PopulatedLiquityTransaction](./lib-base.populatedliquitytransaction.md) > [send](./lib-base.populatedliquitytransaction.send.md)
+
+## PopulatedLiquityTransaction.send() method
+
+Signature:
+
+```typescript
+send(): Promise;
+```
+Returns:
+
+Promise<T>
+
diff --git a/docs/sdk/lib-base.readableliquity.getcollateralsurplusbalance.md b/docs/sdk/lib-base.readableliquity.getcollateralsurplusbalance.md
new file mode 100644
index 000000000..3399c8d9e
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getcollateralsurplusbalance.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getCollateralSurplusBalance](./lib-base.readableliquity.getcollateralsurplusbalance.md)
+
+## ReadableLiquity.getCollateralSurplusBalance() method
+
+Signature:
+
+```typescript
+getCollateralSurplusBalance(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getfees.md b/docs/sdk/lib-base.readableliquity.getfees.md
new file mode 100644
index 000000000..49bb615b9
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getfees.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getFees](./lib-base.readableliquity.getfees.md)
+
+## ReadableLiquity.getFees() method
+
+Signature:
+
+```typescript
+getFees(): Promise;
+```
+Returns:
+
+Promise<[Fees](./lib-base.fees.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getfirsttroves.md b/docs/sdk/lib-base.readableliquity.getfirsttroves.md
new file mode 100644
index 000000000..2186a2ad6
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getfirsttroves.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getFirstTroves](./lib-base.readableliquity.getfirsttroves.md)
+
+## ReadableLiquity.getFirstTroves() method
+
+Signature:
+
+```typescript
+getFirstTroves(startIdx: number, numberOfTroves: number): Promise<[string, TroveWithPendingRewards][]>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| startIdx | number | |
+| numberOfTroves | number | |
+
+Returns:
+
+Promise<\[string, [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)\]\[\]>
+
diff --git a/docs/sdk/lib-base.readableliquity.getfrontendstatus.md b/docs/sdk/lib-base.readableliquity.getfrontendstatus.md
new file mode 100644
index 000000000..95b596968
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getfrontendstatus.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getFrontendStatus](./lib-base.readableliquity.getfrontendstatus.md)
+
+## ReadableLiquity.getFrontendStatus() method
+
+Signature:
+
+```typescript
+getFrontendStatus(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[FrontendStatus](./lib-base.frontendstatus.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getlasttroves.md b/docs/sdk/lib-base.readableliquity.getlasttroves.md
new file mode 100644
index 000000000..fe7a93af4
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getlasttroves.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getLastTroves](./lib-base.readableliquity.getlasttroves.md)
+
+## ReadableLiquity.getLastTroves() method
+
+Signature:
+
+```typescript
+getLastTroves(startIdx: number, numberOfTroves: number): Promise<[string, TroveWithPendingRewards][]>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| startIdx | number | |
+| numberOfTroves | number | |
+
+Returns:
+
+Promise<\[string, [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)\]\[\]>
+
diff --git a/docs/sdk/lib-base.readableliquity.getlqtybalance.md b/docs/sdk/lib-base.readableliquity.getlqtybalance.md
new file mode 100644
index 000000000..a535e1411
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getlqtybalance.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getLQTYBalance](./lib-base.readableliquity.getlqtybalance.md)
+
+## ReadableLiquity.getLQTYBalance() method
+
+Signature:
+
+```typescript
+getLQTYBalance(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getlqtystake.md b/docs/sdk/lib-base.readableliquity.getlqtystake.md
new file mode 100644
index 000000000..ce73c3e71
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getlqtystake.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getLQTYStake](./lib-base.readableliquity.getlqtystake.md)
+
+## ReadableLiquity.getLQTYStake() method
+
+Signature:
+
+```typescript
+getLQTYStake(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[LQTYStake](./lib-base.lqtystake.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getlusdbalance.md b/docs/sdk/lib-base.readableliquity.getlusdbalance.md
new file mode 100644
index 000000000..9fc0b4006
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getlusdbalance.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getLUSDBalance](./lib-base.readableliquity.getlusdbalance.md)
+
+## ReadableLiquity.getLUSDBalance() method
+
+Signature:
+
+```typescript
+getLUSDBalance(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getlusdinstabilitypool.md b/docs/sdk/lib-base.readableliquity.getlusdinstabilitypool.md
new file mode 100644
index 000000000..0cf264754
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getlusdinstabilitypool.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getLUSDInStabilityPool](./lib-base.readableliquity.getlusdinstabilitypool.md)
+
+## ReadableLiquity.getLUSDInStabilityPool() method
+
+Signature:
+
+```typescript
+getLUSDInStabilityPool(): Promise;
+```
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getnumberoftroves.md b/docs/sdk/lib-base.readableliquity.getnumberoftroves.md
new file mode 100644
index 000000000..09cfc5fc0
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getnumberoftroves.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getNumberOfTroves](./lib-base.readableliquity.getnumberoftroves.md)
+
+## ReadableLiquity.getNumberOfTroves() method
+
+Signature:
+
+```typescript
+getNumberOfTroves(): Promise;
+```
+Returns:
+
+Promise<number>
+
diff --git a/docs/sdk/lib-base.readableliquity.getprice.md b/docs/sdk/lib-base.readableliquity.getprice.md
new file mode 100644
index 000000000..549d05c37
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getprice.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getPrice](./lib-base.readableliquity.getprice.md)
+
+## ReadableLiquity.getPrice() method
+
+Signature:
+
+```typescript
+getPrice(): Promise;
+```
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.getstabilitydeposit.md b/docs/sdk/lib-base.readableliquity.getstabilitydeposit.md
new file mode 100644
index 000000000..2313e02a1
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.getstabilitydeposit.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getStabilityDeposit](./lib-base.readableliquity.getstabilitydeposit.md)
+
+## ReadableLiquity.getStabilityDeposit() method
+
+Signature:
+
+```typescript
+getStabilityDeposit(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[StabilityDeposit](./lib-base.stabilitydeposit.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.gettotal.md b/docs/sdk/lib-base.readableliquity.gettotal.md
new file mode 100644
index 000000000..3628b8eab
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.gettotal.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getTotal](./lib-base.readableliquity.gettotal.md)
+
+## ReadableLiquity.getTotal() method
+
+Signature:
+
+```typescript
+getTotal(): Promise;
+```
+Returns:
+
+Promise<[Trove](./lib-base.trove.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.gettotalredistributed.md b/docs/sdk/lib-base.readableliquity.gettotalredistributed.md
new file mode 100644
index 000000000..219f78936
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.gettotalredistributed.md
@@ -0,0 +1,25 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getTotalRedistributed](./lib-base.readableliquity.gettotalredistributed.md)
+
+## ReadableLiquity.getTotalRedistributed() method
+
+Get the total collateral and debt per stake that has been liquidated through redistribution.
+
+Signature:
+
+```typescript
+getTotalRedistributed(): Promise;
+```
+Returns:
+
+Promise<[Trove](./lib-base.trove.md)>
+
+## Remarks
+
+Needed when dealing with instances of [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md).
+
+## Example
+
+See [getLastTroves()](./lib-base.readableliquity.getlasttroves.md) for an example of how it's used.
+
diff --git a/docs/sdk/lib-base.readableliquity.gettotalstakedlqty.md b/docs/sdk/lib-base.readableliquity.gettotalstakedlqty.md
new file mode 100644
index 000000000..b5d7d2b67
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.gettotalstakedlqty.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getTotalStakedLQTY](./lib-base.readableliquity.gettotalstakedlqty.md)
+
+## ReadableLiquity.getTotalStakedLQTY() method
+
+Signature:
+
+```typescript
+getTotalStakedLQTY(): Promise;
+```
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.gettrove.md b/docs/sdk/lib-base.readableliquity.gettrove.md
new file mode 100644
index 000000000..38c2ba3c0
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.gettrove.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getTrove](./lib-base.readableliquity.gettrove.md)
+
+## ReadableLiquity.getTrove() method
+
+Signature:
+
+```typescript
+getTrove(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[Trove](./lib-base.trove.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.gettrovewithoutrewards.md b/docs/sdk/lib-base.readableliquity.gettrovewithoutrewards.md
new file mode 100644
index 000000000..15be77b14
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.gettrovewithoutrewards.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md) > [getTroveWithoutRewards](./lib-base.readableliquity.gettrovewithoutrewards.md)
+
+## ReadableLiquity.getTroveWithoutRewards() method
+
+Signature:
+
+```typescript
+getTroveWithoutRewards(address?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)>
+
diff --git a/docs/sdk/lib-base.readableliquity.md b/docs/sdk/lib-base.readableliquity.md
new file mode 100644
index 000000000..7c504b9c5
--- /dev/null
+++ b/docs/sdk/lib-base.readableliquity.md
@@ -0,0 +1,35 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [ReadableLiquity](./lib-base.readableliquity.md)
+
+## ReadableLiquity interface
+
+
+Signature:
+
+```typescript
+export interface ReadableLiquity
+```
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [getCollateralSurplusBalance(address)](./lib-base.readableliquity.getcollateralsurplusbalance.md) | |
+| [getFees()](./lib-base.readableliquity.getfees.md) | |
+| [getFirstTroves(startIdx, numberOfTroves)](./lib-base.readableliquity.getfirsttroves.md) | |
+| [getFrontendStatus(address)](./lib-base.readableliquity.getfrontendstatus.md) | |
+| [getLastTroves(startIdx, numberOfTroves)](./lib-base.readableliquity.getlasttroves.md) | |
+| [getLQTYBalance(address)](./lib-base.readableliquity.getlqtybalance.md) | |
+| [getLQTYStake(address)](./lib-base.readableliquity.getlqtystake.md) | |
+| [getLUSDBalance(address)](./lib-base.readableliquity.getlusdbalance.md) | |
+| [getLUSDInStabilityPool()](./lib-base.readableliquity.getlusdinstabilitypool.md) | |
+| [getNumberOfTroves()](./lib-base.readableliquity.getnumberoftroves.md) | |
+| [getPrice()](./lib-base.readableliquity.getprice.md) | |
+| [getStabilityDeposit(address)](./lib-base.readableliquity.getstabilitydeposit.md) | |
+| [getTotal()](./lib-base.readableliquity.gettotal.md) | |
+| [getTotalRedistributed()](./lib-base.readableliquity.gettotalredistributed.md) | Get the total collateral and debt per stake that has been liquidated through redistribution. |
+| [getTotalStakedLQTY()](./lib-base.readableliquity.gettotalstakedlqty.md) | |
+| [getTrove(address)](./lib-base.readableliquity.gettrove.md) | |
+| [getTroveWithoutRewards(address)](./lib-base.readableliquity.gettrovewithoutrewards.md) | |
+
diff --git a/docs/sdk/lib-base.redemptiondetails.actuallusdamount.md b/docs/sdk/lib-base.redemptiondetails.actuallusdamount.md
new file mode 100644
index 000000000..351754b74
--- /dev/null
+++ b/docs/sdk/lib-base.redemptiondetails.actuallusdamount.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [RedemptionDetails](./lib-base.redemptiondetails.md) > [actualLUSDAmount](./lib-base.redemptiondetails.actuallusdamount.md)
+
+## RedemptionDetails.actualLUSDAmount property
+
+Signature:
+
+```typescript
+actualLUSDAmount: Decimal;
+```
diff --git a/docs/sdk/lib-base.redemptiondetails.attemptedlusdamount.md b/docs/sdk/lib-base.redemptiondetails.attemptedlusdamount.md
new file mode 100644
index 000000000..dfcfe21e9
--- /dev/null
+++ b/docs/sdk/lib-base.redemptiondetails.attemptedlusdamount.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [RedemptionDetails](./lib-base.redemptiondetails.md) > [attemptedLUSDAmount](./lib-base.redemptiondetails.attemptedlusdamount.md)
+
+## RedemptionDetails.attemptedLUSDAmount property
+
+Signature:
+
+```typescript
+attemptedLUSDAmount: Decimal;
+```
diff --git a/docs/sdk/lib-base.redemptiondetails.collateralreceived.md b/docs/sdk/lib-base.redemptiondetails.collateralreceived.md
new file mode 100644
index 000000000..9db65aa9b
--- /dev/null
+++ b/docs/sdk/lib-base.redemptiondetails.collateralreceived.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [RedemptionDetails](./lib-base.redemptiondetails.md) > [collateralReceived](./lib-base.redemptiondetails.collateralreceived.md)
+
+## RedemptionDetails.collateralReceived property
+
+Signature:
+
+```typescript
+collateralReceived: Decimal;
+```
diff --git a/docs/sdk/lib-base.redemptiondetails.fee.md b/docs/sdk/lib-base.redemptiondetails.fee.md
new file mode 100644
index 000000000..8c235e8c5
--- /dev/null
+++ b/docs/sdk/lib-base.redemptiondetails.fee.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [RedemptionDetails](./lib-base.redemptiondetails.md) > [fee](./lib-base.redemptiondetails.fee.md)
+
+## RedemptionDetails.fee property
+
+Signature:
+
+```typescript
+fee: Decimal;
+```
diff --git a/docs/sdk/lib-base.redemptiondetails.md b/docs/sdk/lib-base.redemptiondetails.md
new file mode 100644
index 000000000..32ca2b5ad
--- /dev/null
+++ b/docs/sdk/lib-base.redemptiondetails.md
@@ -0,0 +1,21 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [RedemptionDetails](./lib-base.redemptiondetails.md)
+
+## RedemptionDetails interface
+
+Signature:
+
+```typescript
+export interface RedemptionDetails
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [actualLUSDAmount](./lib-base.redemptiondetails.actuallusdamount.md) | [Decimal](./decimal.decimal.md) | |
+| [attemptedLUSDAmount](./lib-base.redemptiondetails.attemptedlusdamount.md) | [Decimal](./decimal.decimal.md) | |
+| [collateralReceived](./lib-base.redemptiondetails.collateralreceived.md) | [Decimal](./decimal.decimal.md) | |
+| [fee](./lib-base.redemptiondetails.fee.md) | [Decimal](./decimal.decimal.md) | |
+
diff --git a/docs/sdk/lib-base.sentliquitytransaction.getreceipt.md b/docs/sdk/lib-base.sentliquitytransaction.getreceipt.md
new file mode 100644
index 000000000..3de1d6b97
--- /dev/null
+++ b/docs/sdk/lib-base.sentliquitytransaction.getreceipt.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [SentLiquityTransaction](./lib-base.sentliquitytransaction.md) > [getReceipt](./lib-base.sentliquitytransaction.getreceipt.md)
+
+## SentLiquityTransaction.getReceipt() method
+
+Signature:
+
+```typescript
+getReceipt(): Promise;
+```
+Returns:
+
+Promise<T>
+
diff --git a/docs/sdk/lib-base.sentliquitytransaction.md b/docs/sdk/lib-base.sentliquitytransaction.md
new file mode 100644
index 000000000..2dc0b9395
--- /dev/null
+++ b/docs/sdk/lib-base.sentliquitytransaction.md
@@ -0,0 +1,25 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [SentLiquityTransaction](./lib-base.sentliquitytransaction.md)
+
+## SentLiquityTransaction interface
+
+Signature:
+
+```typescript
+export interface SentLiquityTransaction
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [rawSentTransaction](./lib-base.sentliquitytransaction.rawsenttransaction.md) | S | |
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [getReceipt()](./lib-base.sentliquitytransaction.getreceipt.md) | |
+| [waitForReceipt()](./lib-base.sentliquitytransaction.waitforreceipt.md) | |
+
diff --git a/docs/sdk/lib-base.sentliquitytransaction.rawsenttransaction.md b/docs/sdk/lib-base.sentliquitytransaction.rawsenttransaction.md
new file mode 100644
index 000000000..8a42e29b2
--- /dev/null
+++ b/docs/sdk/lib-base.sentliquitytransaction.rawsenttransaction.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [SentLiquityTransaction](./lib-base.sentliquitytransaction.md) > [rawSentTransaction](./lib-base.sentliquitytransaction.rawsenttransaction.md)
+
+## SentLiquityTransaction.rawSentTransaction property
+
+Signature:
+
+```typescript
+rawSentTransaction: S;
+```
diff --git a/docs/sdk/lib-base.sentliquitytransaction.waitforreceipt.md b/docs/sdk/lib-base.sentliquitytransaction.waitforreceipt.md
new file mode 100644
index 000000000..2245ca123
--- /dev/null
+++ b/docs/sdk/lib-base.sentliquitytransaction.waitforreceipt.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [SentLiquityTransaction](./lib-base.sentliquitytransaction.md) > [waitForReceipt](./lib-base.sentliquitytransaction.waitforreceipt.md)
+
+## SentLiquityTransaction.waitForReceipt() method
+
+Signature:
+
+```typescript
+waitForReceipt(): Promise>;
+```
+Returns:
+
+Promise<Extract<T, [MinedReceipt](./lib-base.minedreceipt.md)>>
+
diff --git a/docs/sdk/lib-base.stabilitydeposit.apply.md b/docs/sdk/lib-base.stabilitydeposit.apply.md
new file mode 100644
index 000000000..3f8293387
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.apply.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [apply](./lib-base.stabilitydeposit.apply.md)
+
+## StabilityDeposit.apply() method
+
+Signature:
+
+```typescript
+apply(change: StabilityDepositChange | undefined): Decimal;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| change | [StabilityDepositChange](./lib-base.stabilitydepositchange.md)<[Decimalish](./decimal.decimalish.md)> \| undefined | |
+
+Returns:
+
+[Decimal](./decimal.decimal.md)
+
diff --git a/docs/sdk/lib-base.stabilitydeposit.collateralgain.md b/docs/sdk/lib-base.stabilitydeposit.collateralgain.md
new file mode 100644
index 000000000..de3cb30c2
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.collateralgain.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [collateralGain](./lib-base.stabilitydeposit.collateralgain.md)
+
+## StabilityDeposit.collateralGain property
+
+Signature:
+
+```typescript
+readonly collateralGain: Decimal;
+```
diff --git a/docs/sdk/lib-base.stabilitydeposit.currentlusd.md b/docs/sdk/lib-base.stabilitydeposit.currentlusd.md
new file mode 100644
index 000000000..e158da3b3
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.currentlusd.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [currentLUSD](./lib-base.stabilitydeposit.currentlusd.md)
+
+## StabilityDeposit.currentLUSD property
+
+Signature:
+
+```typescript
+readonly currentLUSD: Decimal;
+```
diff --git a/docs/sdk/lib-base.stabilitydeposit.equals.md b/docs/sdk/lib-base.stabilitydeposit.equals.md
new file mode 100644
index 000000000..587c7807e
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.equals.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [equals](./lib-base.stabilitydeposit.equals.md)
+
+## StabilityDeposit.equals() method
+
+Signature:
+
+```typescript
+equals(that: StabilityDeposit): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [StabilityDeposit](./lib-base.stabilitydeposit.md) | |
+
+Returns:
+
+boolean
+
diff --git a/docs/sdk/lib-base.stabilitydeposit.initiallusd.md b/docs/sdk/lib-base.stabilitydeposit.initiallusd.md
new file mode 100644
index 000000000..9589635af
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.initiallusd.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [initialLUSD](./lib-base.stabilitydeposit.initiallusd.md)
+
+## StabilityDeposit.initialLUSD property
+
+Signature:
+
+```typescript
+readonly initialLUSD: Decimal;
+```
diff --git a/docs/sdk/lib-base.stabilitydeposit.isempty.md b/docs/sdk/lib-base.stabilitydeposit.isempty.md
new file mode 100644
index 000000000..9ebec4132
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.isempty.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [isEmpty](./lib-base.stabilitydeposit.isempty.md)
+
+## StabilityDeposit.isEmpty property
+
+Signature:
+
+```typescript
+get isEmpty(): boolean;
+```
diff --git a/docs/sdk/lib-base.stabilitydeposit.lqtyreward.md b/docs/sdk/lib-base.stabilitydeposit.lqtyreward.md
new file mode 100644
index 000000000..3bd52a74d
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.lqtyreward.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [lqtyReward](./lib-base.stabilitydeposit.lqtyreward.md)
+
+## StabilityDeposit.lqtyReward property
+
+Signature:
+
+```typescript
+readonly lqtyReward: Decimal;
+```
diff --git a/docs/sdk/lib-base.stabilitydeposit.md b/docs/sdk/lib-base.stabilitydeposit.md
new file mode 100644
index 000000000..e9101bff7
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.md
@@ -0,0 +1,35 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md)
+
+## StabilityDeposit class
+
+Signature:
+
+```typescript
+export declare class StabilityDeposit
+```
+
+## Remarks
+
+The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `StabilityDeposit` class.
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [collateralGain](./lib-base.stabilitydeposit.collateralgain.md) | | [Decimal](./decimal.decimal.md) | |
+| [currentLUSD](./lib-base.stabilitydeposit.currentlusd.md) | | [Decimal](./decimal.decimal.md) | |
+| [initialLUSD](./lib-base.stabilitydeposit.initiallusd.md) | | [Decimal](./decimal.decimal.md) | |
+| [isEmpty](./lib-base.stabilitydeposit.isempty.md) | | boolean | |
+| [lqtyReward](./lib-base.stabilitydeposit.lqtyreward.md) | | [Decimal](./decimal.decimal.md) | |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [apply(change)](./lib-base.stabilitydeposit.apply.md) | | |
+| [equals(that)](./lib-base.stabilitydeposit.equals.md) | | |
+| [toString()](./lib-base.stabilitydeposit.tostring.md) | | |
+| [whatChanged(thatLUSD)](./lib-base.stabilitydeposit.whatchanged.md) | | |
+
diff --git a/docs/sdk/lib-base.stabilitydeposit.tostring.md b/docs/sdk/lib-base.stabilitydeposit.tostring.md
new file mode 100644
index 000000000..dcbb9197a
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.tostring.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [toString](./lib-base.stabilitydeposit.tostring.md)
+
+## StabilityDeposit.toString() method
+
+Signature:
+
+```typescript
+toString(): string;
+```
+Returns:
+
+string
+
diff --git a/docs/sdk/lib-base.stabilitydeposit.whatchanged.md b/docs/sdk/lib-base.stabilitydeposit.whatchanged.md
new file mode 100644
index 000000000..c9b42fdf3
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydeposit.whatchanged.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDeposit](./lib-base.stabilitydeposit.md) > [whatChanged](./lib-base.stabilitydeposit.whatchanged.md)
+
+## StabilityDeposit.whatChanged() method
+
+Signature:
+
+```typescript
+whatChanged(thatLUSD: Decimalish): StabilityDepositChange | undefined;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| thatLUSD | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[StabilityDepositChange](./lib-base.stabilitydepositchange.md)<[Decimal](./decimal.decimal.md)> \| undefined
+
diff --git a/docs/sdk/lib-base.stabilitydepositchange.md b/docs/sdk/lib-base.stabilitydepositchange.md
new file mode 100644
index 000000000..724126e7b
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydepositchange.md
@@ -0,0 +1,18 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDepositChange](./lib-base.stabilitydepositchange.md)
+
+## StabilityDepositChange type
+
+Signature:
+
+```typescript
+export declare type StabilityDepositChange = {
+ depositLUSD: T;
+ withdrawLUSD?: undefined;
+} | {
+ depositLUSD?: undefined;
+ withdrawLUSD: T;
+ withdrawAllLUSD: boolean;
+};
+```
diff --git a/docs/sdk/lib-base.stabilitydepositchangedetails.change.md b/docs/sdk/lib-base.stabilitydepositchangedetails.change.md
new file mode 100644
index 000000000..f82716618
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydepositchangedetails.change.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDepositChangeDetails](./lib-base.stabilitydepositchangedetails.md) > [change](./lib-base.stabilitydepositchangedetails.change.md)
+
+## StabilityDepositChangeDetails.change property
+
+Signature:
+
+```typescript
+change: StabilityDepositChange;
+```
diff --git a/docs/sdk/lib-base.stabilitydepositchangedetails.md b/docs/sdk/lib-base.stabilitydepositchangedetails.md
new file mode 100644
index 000000000..8520106de
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitydepositchangedetails.md
@@ -0,0 +1,19 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityDepositChangeDetails](./lib-base.stabilitydepositchangedetails.md)
+
+## StabilityDepositChangeDetails interface
+
+Signature:
+
+```typescript
+export interface StabilityDepositChangeDetails extends StabilityPoolGainsWithdrawalDetails
+```
+Extends: [StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md)
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [change](./lib-base.stabilitydepositchangedetails.change.md) | [StabilityDepositChange](./lib-base.stabilitydepositchange.md)<[Decimal](./decimal.decimal.md)> | |
+
diff --git a/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.collateralgain.md b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.collateralgain.md
new file mode 100644
index 000000000..efde49739
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.collateralgain.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md) > [collateralGain](./lib-base.stabilitypoolgainswithdrawaldetails.collateralgain.md)
+
+## StabilityPoolGainsWithdrawalDetails.collateralGain property
+
+Signature:
+
+```typescript
+collateralGain: Decimal;
+```
diff --git a/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.lqtyreward.md b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.lqtyreward.md
new file mode 100644
index 000000000..1d559d746
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.lqtyreward.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md) > [lqtyReward](./lib-base.stabilitypoolgainswithdrawaldetails.lqtyreward.md)
+
+## StabilityPoolGainsWithdrawalDetails.lqtyReward property
+
+Signature:
+
+```typescript
+lqtyReward: Decimal;
+```
diff --git a/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.lusdloss.md b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.lusdloss.md
new file mode 100644
index 000000000..bdfa65355
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.lusdloss.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md) > [lusdLoss](./lib-base.stabilitypoolgainswithdrawaldetails.lusdloss.md)
+
+## StabilityPoolGainsWithdrawalDetails.lusdLoss property
+
+Signature:
+
+```typescript
+lusdLoss: Decimal;
+```
diff --git a/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.md b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.md
new file mode 100644
index 000000000..a7ef5ee0e
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.md
@@ -0,0 +1,21 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md)
+
+## StabilityPoolGainsWithdrawalDetails interface
+
+Signature:
+
+```typescript
+export interface StabilityPoolGainsWithdrawalDetails
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [collateralGain](./lib-base.stabilitypoolgainswithdrawaldetails.collateralgain.md) | [Decimal](./decimal.decimal.md) | |
+| [lqtyReward](./lib-base.stabilitypoolgainswithdrawaldetails.lqtyreward.md) | [Decimal](./decimal.decimal.md) | |
+| [lusdLoss](./lib-base.stabilitypoolgainswithdrawaldetails.lusdloss.md) | [Decimal](./decimal.decimal.md) | |
+| [newLUSDDeposit](./lib-base.stabilitypoolgainswithdrawaldetails.newlusddeposit.md) | [Decimal](./decimal.decimal.md) | |
+
diff --git a/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.newlusddeposit.md b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.newlusddeposit.md
new file mode 100644
index 000000000..36f0fe589
--- /dev/null
+++ b/docs/sdk/lib-base.stabilitypoolgainswithdrawaldetails.newlusddeposit.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md) > [newLUSDDeposit](./lib-base.stabilitypoolgainswithdrawaldetails.newlusddeposit.md)
+
+## StabilityPoolGainsWithdrawalDetails.newLUSDDeposit property
+
+Signature:
+
+```typescript
+newLUSDDeposit: Decimal;
+```
diff --git a/docs/sdk/lib-base.successfulreceipt.md b/docs/sdk/lib-base.successfulreceipt.md
new file mode 100644
index 000000000..111a6fe4b
--- /dev/null
+++ b/docs/sdk/lib-base.successfulreceipt.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [SuccessfulReceipt](./lib-base.successfulreceipt.md)
+
+## SuccessfulReceipt type
+
+Signature:
+
+```typescript
+export declare type SuccessfulReceipt = {
+ status: "succeeded";
+ rawReceipt: R;
+ details: D;
+};
+```
diff --git a/docs/sdk/lib-base.transactableliquity.adjusttrove.md b/docs/sdk/lib-base.transactableliquity.adjusttrove.md
new file mode 100644
index 000000000..5a443eab4
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.adjusttrove.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [adjustTrove](./lib-base.transactableliquity.adjusttrove.md)
+
+## TransactableLiquity.adjustTrove() method
+
+Signature:
+
+```typescript
+adjustTrove(params: TroveAdjustmentParams): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| params | [TroveAdjustmentParams](./lib-base.troveadjustmentparams.md)<[Decimalish](./decimal.decimalish.md)> | |
+
+Returns:
+
+Promise<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.borrowlusd.md b/docs/sdk/lib-base.transactableliquity.borrowlusd.md
new file mode 100644
index 000000000..749c8eb15
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.borrowlusd.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [borrowLUSD](./lib-base.transactableliquity.borrowlusd.md)
+
+## TransactableLiquity.borrowLUSD() method
+
+Signature:
+
+```typescript
+borrowLUSD(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.claimcollateralsurplus.md b/docs/sdk/lib-base.transactableliquity.claimcollateralsurplus.md
new file mode 100644
index 000000000..5876ea362
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.claimcollateralsurplus.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [claimCollateralSurplus](./lib-base.transactableliquity.claimcollateralsurplus.md)
+
+## TransactableLiquity.claimCollateralSurplus() method
+
+Signature:
+
+```typescript
+claimCollateralSurplus(): Promise;
+```
+Returns:
+
+Promise<void>
+
diff --git a/docs/sdk/lib-base.transactableliquity.closetrove.md b/docs/sdk/lib-base.transactableliquity.closetrove.md
new file mode 100644
index 000000000..6735bec5d
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.closetrove.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [closeTrove](./lib-base.transactableliquity.closetrove.md)
+
+## TransactableLiquity.closeTrove() method
+
+Signature:
+
+```typescript
+closeTrove(): Promise;
+```
+Returns:
+
+Promise<[TroveClosureDetails](./lib-base.troveclosuredetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.depositcollateral.md b/docs/sdk/lib-base.transactableliquity.depositcollateral.md
new file mode 100644
index 000000000..461b87051
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.depositcollateral.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [depositCollateral](./lib-base.transactableliquity.depositcollateral.md)
+
+## TransactableLiquity.depositCollateral() method
+
+Signature:
+
+```typescript
+depositCollateral(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.depositlusdinstabilitypool.md b/docs/sdk/lib-base.transactableliquity.depositlusdinstabilitypool.md
new file mode 100644
index 000000000..ecf30b6ee
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.depositlusdinstabilitypool.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [depositLUSDInStabilityPool](./lib-base.transactableliquity.depositlusdinstabilitypool.md)
+
+## TransactableLiquity.depositLUSDInStabilityPool() method
+
+Signature:
+
+```typescript
+depositLUSDInStabilityPool(amount: Decimalish, frontendTag?: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| frontendTag | string | |
+
+Returns:
+
+Promise<[StabilityDepositChangeDetails](./lib-base.stabilitydepositchangedetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.liquidate.md b/docs/sdk/lib-base.transactableliquity.liquidate.md
new file mode 100644
index 000000000..497be5b98
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.liquidate.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [liquidate](./lib-base.transactableliquity.liquidate.md)
+
+## TransactableLiquity.liquidate() method
+
+Signature:
+
+```typescript
+liquidate(address: string): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+
+Returns:
+
+Promise<[LiquidationDetails](./lib-base.liquidationdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.liquidateupto.md b/docs/sdk/lib-base.transactableliquity.liquidateupto.md
new file mode 100644
index 000000000..00fb7efd5
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.liquidateupto.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [liquidateUpTo](./lib-base.transactableliquity.liquidateupto.md)
+
+## TransactableLiquity.liquidateUpTo() method
+
+Signature:
+
+```typescript
+liquidateUpTo(maximumNumberOfTrovesToLiquidate: number): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| maximumNumberOfTrovesToLiquidate | number | |
+
+Returns:
+
+Promise<[LiquidationDetails](./lib-base.liquidationdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.md b/docs/sdk/lib-base.transactableliquity.md
new file mode 100644
index 000000000..78dcf0a9a
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.md
@@ -0,0 +1,38 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md)
+
+## TransactableLiquity interface
+
+Signature:
+
+```typescript
+export interface TransactableLiquity
+```
+
+## Methods
+
+| Method | Description |
+| --- | --- |
+| [adjustTrove(params)](./lib-base.transactableliquity.adjusttrove.md) | |
+| [borrowLUSD(amount)](./lib-base.transactableliquity.borrowlusd.md) | |
+| [claimCollateralSurplus()](./lib-base.transactableliquity.claimcollateralsurplus.md) | |
+| [closeTrove()](./lib-base.transactableliquity.closetrove.md) | |
+| [depositCollateral(amount)](./lib-base.transactableliquity.depositcollateral.md) | |
+| [depositLUSDInStabilityPool(amount, frontendTag)](./lib-base.transactableliquity.depositlusdinstabilitypool.md) | |
+| [liquidate(address)](./lib-base.transactableliquity.liquidate.md) | |
+| [liquidateUpTo(maximumNumberOfTrovesToLiquidate)](./lib-base.transactableliquity.liquidateupto.md) | |
+| [openTrove(params)](./lib-base.transactableliquity.opentrove.md) | Open a new Trove. |
+| [redeemLUSD(amount)](./lib-base.transactableliquity.redeemlusd.md) | |
+| [registerFrontend(kickbackRate)](./lib-base.transactableliquity.registerfrontend.md) | |
+| [repayLUSD(amount)](./lib-base.transactableliquity.repaylusd.md) | |
+| [sendLQTY(toAddress, amount)](./lib-base.transactableliquity.sendlqty.md) | |
+| [sendLUSD(toAddress, amount)](./lib-base.transactableliquity.sendlusd.md) | |
+| [stakeLQTY(amount)](./lib-base.transactableliquity.stakelqty.md) | |
+| [transferCollateralGainToTrove()](./lib-base.transactableliquity.transfercollateralgaintotrove.md) | |
+| [unstakeLQTY(amount)](./lib-base.transactableliquity.unstakelqty.md) | |
+| [withdrawCollateral(amount)](./lib-base.transactableliquity.withdrawcollateral.md) | |
+| [withdrawGainsFromStabilityPool()](./lib-base.transactableliquity.withdrawgainsfromstabilitypool.md) | |
+| [withdrawGainsFromStaking()](./lib-base.transactableliquity.withdrawgainsfromstaking.md) | |
+| [withdrawLUSDFromStabilityPool(amount)](./lib-base.transactableliquity.withdrawlusdfromstabilitypool.md) | |
+
diff --git a/docs/sdk/lib-base.transactableliquity.opentrove.md b/docs/sdk/lib-base.transactableliquity.opentrove.md
new file mode 100644
index 000000000..a2bdcefb0
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.opentrove.md
@@ -0,0 +1,26 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [openTrove](./lib-base.transactableliquity.opentrove.md)
+
+## TransactableLiquity.openTrove() method
+
+Open a new Trove.
+
+Signature:
+
+```typescript
+openTrove(params: TroveCreationParams): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| params | [TroveCreationParams](./lib-base.trovecreationparams.md)<[Decimalish](./decimal.decimalish.md)> | |
+
+Returns:
+
+Promise<[TroveCreationDetails](./lib-base.trovecreationdetails.md)>
+
+The details of the Trove creation.
+
diff --git a/docs/sdk/lib-base.transactableliquity.redeemlusd.md b/docs/sdk/lib-base.transactableliquity.redeemlusd.md
new file mode 100644
index 000000000..f32fa49d3
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.redeemlusd.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [redeemLUSD](./lib-base.transactableliquity.redeemlusd.md)
+
+## TransactableLiquity.redeemLUSD() method
+
+Signature:
+
+```typescript
+redeemLUSD(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<[RedemptionDetails](./lib-base.redemptiondetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.registerfrontend.md b/docs/sdk/lib-base.transactableliquity.registerfrontend.md
new file mode 100644
index 000000000..f116e1240
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.registerfrontend.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [registerFrontend](./lib-base.transactableliquity.registerfrontend.md)
+
+## TransactableLiquity.registerFrontend() method
+
+Signature:
+
+```typescript
+registerFrontend(kickbackRate: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| kickbackRate | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<void>
+
diff --git a/docs/sdk/lib-base.transactableliquity.repaylusd.md b/docs/sdk/lib-base.transactableliquity.repaylusd.md
new file mode 100644
index 000000000..729ca1f7a
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.repaylusd.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [repayLUSD](./lib-base.transactableliquity.repaylusd.md)
+
+## TransactableLiquity.repayLUSD() method
+
+Signature:
+
+```typescript
+repayLUSD(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.sendlqty.md b/docs/sdk/lib-base.transactableliquity.sendlqty.md
new file mode 100644
index 000000000..30111391b
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.sendlqty.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [sendLQTY](./lib-base.transactableliquity.sendlqty.md)
+
+## TransactableLiquity.sendLQTY() method
+
+Signature:
+
+```typescript
+sendLQTY(toAddress: string, amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| toAddress | string | |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<void>
+
diff --git a/docs/sdk/lib-base.transactableliquity.sendlusd.md b/docs/sdk/lib-base.transactableliquity.sendlusd.md
new file mode 100644
index 000000000..9f5348f86
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.sendlusd.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [sendLUSD](./lib-base.transactableliquity.sendlusd.md)
+
+## TransactableLiquity.sendLUSD() method
+
+Signature:
+
+```typescript
+sendLUSD(toAddress: string, amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| toAddress | string | |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<void>
+
diff --git a/docs/sdk/lib-base.transactableliquity.stakelqty.md b/docs/sdk/lib-base.transactableliquity.stakelqty.md
new file mode 100644
index 000000000..7cd7f97ff
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.stakelqty.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [stakeLQTY](./lib-base.transactableliquity.stakelqty.md)
+
+## TransactableLiquity.stakeLQTY() method
+
+Signature:
+
+```typescript
+stakeLQTY(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<void>
+
diff --git a/docs/sdk/lib-base.transactableliquity.transfercollateralgaintotrove.md b/docs/sdk/lib-base.transactableliquity.transfercollateralgaintotrove.md
new file mode 100644
index 000000000..5bc056cf0
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.transfercollateralgaintotrove.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [transferCollateralGainToTrove](./lib-base.transactableliquity.transfercollateralgaintotrove.md)
+
+## TransactableLiquity.transferCollateralGainToTrove() method
+
+Signature:
+
+```typescript
+transferCollateralGainToTrove(): Promise;
+```
+Returns:
+
+Promise<[CollateralGainTransferDetails](./lib-base.collateralgaintransferdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.unstakelqty.md b/docs/sdk/lib-base.transactableliquity.unstakelqty.md
new file mode 100644
index 000000000..112bbc4b9
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.unstakelqty.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [unstakeLQTY](./lib-base.transactableliquity.unstakelqty.md)
+
+## TransactableLiquity.unstakeLQTY() method
+
+Signature:
+
+```typescript
+unstakeLQTY(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<void>
+
diff --git a/docs/sdk/lib-base.transactableliquity.withdrawcollateral.md b/docs/sdk/lib-base.transactableliquity.withdrawcollateral.md
new file mode 100644
index 000000000..f45dac1a1
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.withdrawcollateral.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [withdrawCollateral](./lib-base.transactableliquity.withdrawcollateral.md)
+
+## TransactableLiquity.withdrawCollateral() method
+
+Signature:
+
+```typescript
+withdrawCollateral(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.withdrawgainsfromstabilitypool.md b/docs/sdk/lib-base.transactableliquity.withdrawgainsfromstabilitypool.md
new file mode 100644
index 000000000..4c9c0a01c
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.withdrawgainsfromstabilitypool.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [withdrawGainsFromStabilityPool](./lib-base.transactableliquity.withdrawgainsfromstabilitypool.md)
+
+## TransactableLiquity.withdrawGainsFromStabilityPool() method
+
+Signature:
+
+```typescript
+withdrawGainsFromStabilityPool(): Promise;
+```
+Returns:
+
+Promise<[StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md)>
+
diff --git a/docs/sdk/lib-base.transactableliquity.withdrawgainsfromstaking.md b/docs/sdk/lib-base.transactableliquity.withdrawgainsfromstaking.md
new file mode 100644
index 000000000..499f7fbd1
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.withdrawgainsfromstaking.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [withdrawGainsFromStaking](./lib-base.transactableliquity.withdrawgainsfromstaking.md)
+
+## TransactableLiquity.withdrawGainsFromStaking() method
+
+Signature:
+
+```typescript
+withdrawGainsFromStaking(): Promise;
+```
+Returns:
+
+Promise<void>
+
diff --git a/docs/sdk/lib-base.transactableliquity.withdrawlusdfromstabilitypool.md b/docs/sdk/lib-base.transactableliquity.withdrawlusdfromstabilitypool.md
new file mode 100644
index 000000000..297ec7aee
--- /dev/null
+++ b/docs/sdk/lib-base.transactableliquity.withdrawlusdfromstabilitypool.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TransactableLiquity](./lib-base.transactableliquity.md) > [withdrawLUSDFromStabilityPool](./lib-base.transactableliquity.withdrawlusdfromstabilitypool.md)
+
+## TransactableLiquity.withdrawLUSDFromStabilityPool() method
+
+Signature:
+
+```typescript
+withdrawLUSDFromStabilityPool(amount: Decimalish): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+Promise<[StabilityDepositChangeDetails](./lib-base.stabilitydepositchangedetails.md)>
+
diff --git a/docs/sdk/lib-base.trove.add.md b/docs/sdk/lib-base.trove.add.md
new file mode 100644
index 000000000..054ce29d4
--- /dev/null
+++ b/docs/sdk/lib-base.trove.add.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [add](./lib-base.trove.add.md)
+
+## Trove.add() method
+
+Signature:
+
+```typescript
+add(that: Trove): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [Trove](./lib-base.trove.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.addcollateral.md b/docs/sdk/lib-base.trove.addcollateral.md
new file mode 100644
index 000000000..084ced4db
--- /dev/null
+++ b/docs/sdk/lib-base.trove.addcollateral.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [addCollateral](./lib-base.trove.addcollateral.md)
+
+## Trove.addCollateral() method
+
+Signature:
+
+```typescript
+addCollateral(collateral: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| collateral | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.adddebt.md b/docs/sdk/lib-base.trove.adddebt.md
new file mode 100644
index 000000000..18e2d9065
--- /dev/null
+++ b/docs/sdk/lib-base.trove.adddebt.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [addDebt](./lib-base.trove.adddebt.md)
+
+## Trove.addDebt() method
+
+Signature:
+
+```typescript
+addDebt(debt: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| debt | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.adjust.md b/docs/sdk/lib-base.trove.adjust.md
new file mode 100644
index 000000000..385981860
--- /dev/null
+++ b/docs/sdk/lib-base.trove.adjust.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [adjust](./lib-base.trove.adjust.md)
+
+## Trove.adjust() method
+
+Signature:
+
+```typescript
+adjust(params: TroveAdjustmentParams, borrowingFeeFactor?: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| params | [TroveAdjustmentParams](./lib-base.troveadjustmentparams.md)<[Decimalish](./decimal.decimalish.md)> | |
+| borrowingFeeFactor | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.adjustto.md b/docs/sdk/lib-base.trove.adjustto.md
new file mode 100644
index 000000000..6a732f0fc
--- /dev/null
+++ b/docs/sdk/lib-base.trove.adjustto.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [adjustTo](./lib-base.trove.adjustto.md)
+
+## Trove.adjustTo() method
+
+Signature:
+
+```typescript
+adjustTo(that: Trove, borrowingFeeFactor?: Decimalish): TroveAdjustmentParams;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [Trove](./lib-base.trove.md) | |
+| borrowingFeeFactor | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[TroveAdjustmentParams](./lib-base.troveadjustmentparams.md)<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.trove.apply.md b/docs/sdk/lib-base.trove.apply.md
new file mode 100644
index 000000000..1fc9388e0
--- /dev/null
+++ b/docs/sdk/lib-base.trove.apply.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [apply](./lib-base.trove.apply.md)
+
+## Trove.apply() method
+
+Signature:
+
+```typescript
+apply(change: TroveChange | undefined, borrowingFeeFactor?: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| change | [TroveChange](./lib-base.trovechange.md)<[Decimalish](./decimal.decimalish.md)> \| undefined | |
+| borrowingFeeFactor | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.collateral.md b/docs/sdk/lib-base.trove.collateral.md
new file mode 100644
index 000000000..38b9d084e
--- /dev/null
+++ b/docs/sdk/lib-base.trove.collateral.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [collateral](./lib-base.trove.collateral.md)
+
+## Trove.collateral property
+
+Signature:
+
+```typescript
+readonly collateral: Decimal;
+```
diff --git a/docs/sdk/lib-base.trove.collateralratio.md b/docs/sdk/lib-base.trove.collateralratio.md
new file mode 100644
index 000000000..0e6afa4c1
--- /dev/null
+++ b/docs/sdk/lib-base.trove.collateralratio.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [collateralRatio](./lib-base.trove.collateralratio.md)
+
+## Trove.collateralRatio() method
+
+Signature:
+
+```typescript
+collateralRatio(price: Decimalish): Decimal;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| price | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Decimal](./decimal.decimal.md)
+
diff --git a/docs/sdk/lib-base.trove.collateralratioisbelowcritical.md b/docs/sdk/lib-base.trove.collateralratioisbelowcritical.md
new file mode 100644
index 000000000..6a5e7cfa1
--- /dev/null
+++ b/docs/sdk/lib-base.trove.collateralratioisbelowcritical.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [collateralRatioIsBelowCritical](./lib-base.trove.collateralratioisbelowcritical.md)
+
+## Trove.collateralRatioIsBelowCritical() method
+
+Signature:
+
+```typescript
+collateralRatioIsBelowCritical(price: Decimalish): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| price | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+boolean
+
diff --git a/docs/sdk/lib-base.trove.collateralratioisbelowminimum.md b/docs/sdk/lib-base.trove.collateralratioisbelowminimum.md
new file mode 100644
index 000000000..f305dc9cf
--- /dev/null
+++ b/docs/sdk/lib-base.trove.collateralratioisbelowminimum.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [collateralRatioIsBelowMinimum](./lib-base.trove.collateralratioisbelowminimum.md)
+
+## Trove.collateralRatioIsBelowMinimum() method
+
+Signature:
+
+```typescript
+collateralRatioIsBelowMinimum(price: Decimalish): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| price | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+boolean
+
diff --git a/docs/sdk/lib-base.trove.create.md b/docs/sdk/lib-base.trove.create.md
new file mode 100644
index 000000000..6e62d8a6b
--- /dev/null
+++ b/docs/sdk/lib-base.trove.create.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [create](./lib-base.trove.create.md)
+
+## Trove.create() method
+
+Signature:
+
+```typescript
+static create(params: TroveCreationParams, borrowingFeeFactor?: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| params | [TroveCreationParams](./lib-base.trovecreationparams.md)<[Decimalish](./decimal.decimalish.md)> | |
+| borrowingFeeFactor | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.debt.md b/docs/sdk/lib-base.trove.debt.md
new file mode 100644
index 000000000..715887f4f
--- /dev/null
+++ b/docs/sdk/lib-base.trove.debt.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [debt](./lib-base.trove.debt.md)
+
+## Trove.debt property
+
+Signature:
+
+```typescript
+readonly debt: Decimal;
+```
diff --git a/docs/sdk/lib-base.trove.equals.md b/docs/sdk/lib-base.trove.equals.md
new file mode 100644
index 000000000..0ce2a79d1
--- /dev/null
+++ b/docs/sdk/lib-base.trove.equals.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [equals](./lib-base.trove.equals.md)
+
+## Trove.equals() method
+
+Signature:
+
+```typescript
+equals(that: Trove): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [Trove](./lib-base.trove.md) | |
+
+Returns:
+
+boolean
+
diff --git a/docs/sdk/lib-base.trove.isempty.md b/docs/sdk/lib-base.trove.isempty.md
new file mode 100644
index 000000000..230a0c5db
--- /dev/null
+++ b/docs/sdk/lib-base.trove.isempty.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [isEmpty](./lib-base.trove.isempty.md)
+
+## Trove.isEmpty property
+
+Signature:
+
+```typescript
+get isEmpty(): boolean;
+```
diff --git a/docs/sdk/lib-base.trove.isopenableinrecoverymode.md b/docs/sdk/lib-base.trove.isopenableinrecoverymode.md
new file mode 100644
index 000000000..e7b0a8205
--- /dev/null
+++ b/docs/sdk/lib-base.trove.isopenableinrecoverymode.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [isOpenableInRecoveryMode](./lib-base.trove.isopenableinrecoverymode.md)
+
+## Trove.isOpenableInRecoveryMode() method
+
+Signature:
+
+```typescript
+isOpenableInRecoveryMode(price: Decimalish): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| price | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+boolean
+
diff --git a/docs/sdk/lib-base.trove.md b/docs/sdk/lib-base.trove.md
new file mode 100644
index 000000000..90ab1e9b5
--- /dev/null
+++ b/docs/sdk/lib-base.trove.md
@@ -0,0 +1,51 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md)
+
+## Trove class
+
+Signature:
+
+```typescript
+export declare class Trove
+```
+
+## Remarks
+
+The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `Trove` class.
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [collateral](./lib-base.trove.collateral.md) | | [Decimal](./decimal.decimal.md) | |
+| [debt](./lib-base.trove.debt.md) | | [Decimal](./decimal.decimal.md) | |
+| [isEmpty](./lib-base.trove.isempty.md) | | boolean | |
+| [netDebt](./lib-base.trove.netdebt.md) | | [Decimal](./decimal.decimal.md) | Amount of LUSD that must be repaid to close this Trove. |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [add(that)](./lib-base.trove.add.md) | | |
+| [addCollateral(collateral)](./lib-base.trove.addcollateral.md) | | |
+| [addDebt(debt)](./lib-base.trove.adddebt.md) | | |
+| [adjust(params, borrowingFeeFactor)](./lib-base.trove.adjust.md) | | |
+| [adjustTo(that, borrowingFeeFactor)](./lib-base.trove.adjustto.md) | | |
+| [apply(change, borrowingFeeFactor)](./lib-base.trove.apply.md) | | |
+| [collateralRatio(price)](./lib-base.trove.collateralratio.md) | | |
+| [collateralRatioIsBelowCritical(price)](./lib-base.trove.collateralratioisbelowcritical.md) | | |
+| [collateralRatioIsBelowMinimum(price)](./lib-base.trove.collateralratioisbelowminimum.md) | | |
+| [create(params, borrowingFeeFactor)](./lib-base.trove.create.md) | static
| |
+| [equals(that)](./lib-base.trove.equals.md) | | |
+| [isOpenableInRecoveryMode(price)](./lib-base.trove.isopenableinrecoverymode.md) | | |
+| [multiply(multiplier)](./lib-base.trove.multiply.md) | | |
+| [recreate(that, borrowingFeeFactor)](./lib-base.trove.recreate.md) | static
| |
+| [setCollateral(collateral)](./lib-base.trove.setcollateral.md) | | |
+| [setDebt(debt)](./lib-base.trove.setdebt.md) | | |
+| [subtract(that)](./lib-base.trove.subtract.md) | | |
+| [subtractCollateral(collateral)](./lib-base.trove.subtractcollateral.md) | | |
+| [subtractDebt(debt)](./lib-base.trove.subtractdebt.md) | | |
+| [toString()](./lib-base.trove.tostring.md) | | |
+| [whatChanged(that, borrowingFeeFactor)](./lib-base.trove.whatchanged.md) | | |
+
diff --git a/docs/sdk/lib-base.trove.multiply.md b/docs/sdk/lib-base.trove.multiply.md
new file mode 100644
index 000000000..5b48500ca
--- /dev/null
+++ b/docs/sdk/lib-base.trove.multiply.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [multiply](./lib-base.trove.multiply.md)
+
+## Trove.multiply() method
+
+Signature:
+
+```typescript
+multiply(multiplier: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| multiplier | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.netdebt.md b/docs/sdk/lib-base.trove.netdebt.md
new file mode 100644
index 000000000..3da70fdbf
--- /dev/null
+++ b/docs/sdk/lib-base.trove.netdebt.md
@@ -0,0 +1,18 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [netDebt](./lib-base.trove.netdebt.md)
+
+## Trove.netDebt property
+
+Amount of LUSD that must be repaid to close this Trove.
+
+Signature:
+
+```typescript
+get netDebt(): Decimal;
+```
+
+## Remarks
+
+This doesn't include the liquidation reserve, which is refunded in case of normal closure.
+
diff --git a/docs/sdk/lib-base.trove.recreate.md b/docs/sdk/lib-base.trove.recreate.md
new file mode 100644
index 000000000..11f64795e
--- /dev/null
+++ b/docs/sdk/lib-base.trove.recreate.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [recreate](./lib-base.trove.recreate.md)
+
+## Trove.recreate() method
+
+Signature:
+
+```typescript
+static recreate(that: Trove, borrowingFeeFactor?: Decimalish): TroveCreationParams;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [Trove](./lib-base.trove.md) | |
+| borrowingFeeFactor | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[TroveCreationParams](./lib-base.trovecreationparams.md)<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-base.trove.setcollateral.md b/docs/sdk/lib-base.trove.setcollateral.md
new file mode 100644
index 000000000..b4eac93ee
--- /dev/null
+++ b/docs/sdk/lib-base.trove.setcollateral.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [setCollateral](./lib-base.trove.setcollateral.md)
+
+## Trove.setCollateral() method
+
+Signature:
+
+```typescript
+setCollateral(collateral: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| collateral | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.setdebt.md b/docs/sdk/lib-base.trove.setdebt.md
new file mode 100644
index 000000000..8c9ec89a1
--- /dev/null
+++ b/docs/sdk/lib-base.trove.setdebt.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [setDebt](./lib-base.trove.setdebt.md)
+
+## Trove.setDebt() method
+
+Signature:
+
+```typescript
+setDebt(debt: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| debt | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.subtract.md b/docs/sdk/lib-base.trove.subtract.md
new file mode 100644
index 000000000..f7e29bb0f
--- /dev/null
+++ b/docs/sdk/lib-base.trove.subtract.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [subtract](./lib-base.trove.subtract.md)
+
+## Trove.subtract() method
+
+Signature:
+
+```typescript
+subtract(that: Trove): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [Trove](./lib-base.trove.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.subtractcollateral.md b/docs/sdk/lib-base.trove.subtractcollateral.md
new file mode 100644
index 000000000..a2de7faf4
--- /dev/null
+++ b/docs/sdk/lib-base.trove.subtractcollateral.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [subtractCollateral](./lib-base.trove.subtractcollateral.md)
+
+## Trove.subtractCollateral() method
+
+Signature:
+
+```typescript
+subtractCollateral(collateral: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| collateral | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.subtractdebt.md b/docs/sdk/lib-base.trove.subtractdebt.md
new file mode 100644
index 000000000..baa17614e
--- /dev/null
+++ b/docs/sdk/lib-base.trove.subtractdebt.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [subtractDebt](./lib-base.trove.subtractdebt.md)
+
+## Trove.subtractDebt() method
+
+Signature:
+
+```typescript
+subtractDebt(debt: Decimalish): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| debt | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trove.tostring.md b/docs/sdk/lib-base.trove.tostring.md
new file mode 100644
index 000000000..b8c98d8b0
--- /dev/null
+++ b/docs/sdk/lib-base.trove.tostring.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [toString](./lib-base.trove.tostring.md)
+
+## Trove.toString() method
+
+Signature:
+
+```typescript
+toString(): string;
+```
+Returns:
+
+string
+
diff --git a/docs/sdk/lib-base.trove.whatchanged.md b/docs/sdk/lib-base.trove.whatchanged.md
new file mode 100644
index 000000000..3296d5dc8
--- /dev/null
+++ b/docs/sdk/lib-base.trove.whatchanged.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [Trove](./lib-base.trove.md) > [whatChanged](./lib-base.trove.whatchanged.md)
+
+## Trove.whatChanged() method
+
+Signature:
+
+```typescript
+whatChanged(that: Trove, borrowingFeeFactor?: Decimalish): TroveChange | undefined;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [Trove](./lib-base.trove.md) | |
+| borrowingFeeFactor | [Decimalish](./decimal.decimalish.md) | |
+
+Returns:
+
+[TroveChange](./lib-base.trovechange.md)<[Decimal](./decimal.decimal.md)> \| undefined
+
diff --git a/docs/sdk/lib-base.troveadjustmentdetails.fee.md b/docs/sdk/lib-base.troveadjustmentdetails.fee.md
new file mode 100644
index 000000000..e81735624
--- /dev/null
+++ b/docs/sdk/lib-base.troveadjustmentdetails.fee.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md) > [fee](./lib-base.troveadjustmentdetails.fee.md)
+
+## TroveAdjustmentDetails.fee property
+
+Signature:
+
+```typescript
+fee: Decimal;
+```
diff --git a/docs/sdk/lib-base.troveadjustmentdetails.md b/docs/sdk/lib-base.troveadjustmentdetails.md
new file mode 100644
index 000000000..5b48495bb
--- /dev/null
+++ b/docs/sdk/lib-base.troveadjustmentdetails.md
@@ -0,0 +1,20 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)
+
+## TroveAdjustmentDetails interface
+
+Signature:
+
+```typescript
+export interface TroveAdjustmentDetails
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [fee](./lib-base.troveadjustmentdetails.fee.md) | [Decimal](./decimal.decimal.md) | |
+| [newTrove](./lib-base.troveadjustmentdetails.newtrove.md) | [Trove](./lib-base.trove.md) | |
+| [params](./lib-base.troveadjustmentdetails.params.md) | [TroveAdjustmentParams](./lib-base.troveadjustmentparams.md)<[Decimal](./decimal.decimal.md)> | |
+
diff --git a/docs/sdk/lib-base.troveadjustmentdetails.newtrove.md b/docs/sdk/lib-base.troveadjustmentdetails.newtrove.md
new file mode 100644
index 000000000..986bacf56
--- /dev/null
+++ b/docs/sdk/lib-base.troveadjustmentdetails.newtrove.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md) > [newTrove](./lib-base.troveadjustmentdetails.newtrove.md)
+
+## TroveAdjustmentDetails.newTrove property
+
+Signature:
+
+```typescript
+newTrove: Trove;
+```
diff --git a/docs/sdk/lib-base.troveadjustmentdetails.params.md b/docs/sdk/lib-base.troveadjustmentdetails.params.md
new file mode 100644
index 000000000..9db8c7ae3
--- /dev/null
+++ b/docs/sdk/lib-base.troveadjustmentdetails.params.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md) > [params](./lib-base.troveadjustmentdetails.params.md)
+
+## TroveAdjustmentDetails.params property
+
+Signature:
+
+```typescript
+params: TroveAdjustmentParams;
+```
diff --git a/docs/sdk/lib-base.troveadjustmentparams.md b/docs/sdk/lib-base.troveadjustmentparams.md
new file mode 100644
index 000000000..1dbadab4f
--- /dev/null
+++ b/docs/sdk/lib-base.troveadjustmentparams.md
@@ -0,0 +1,38 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveAdjustmentParams](./lib-base.troveadjustmentparams.md)
+
+## TroveAdjustmentParams type
+
+Parameters of Trove adjustment.
+
+Signature:
+
+```typescript
+export declare type TroveAdjustmentParams = (_CollateralChange & _NoDebtChange) | (_DebtChange & _NoCollateralChange) | (_CollateralChange & _DebtChange);
+```
+
+## Remarks
+
+The type parameter `T` specifies the allowed value type(s) of the particular `TroveAdjustmentParams` object's properties.
+
+Even though all properties are optional, a valid `TroveAdjustmentParams` object must define at least one.
+
+Defining both `depositCollateral` and `withdrawCollateral`, or both `borrowLUSD` and `repayLUSD` at the same time is disallowed, and will result in a type-checking error.
+
+Properties
+
+
+
+ Property | Type | Description |
+
+ depositCollateral? | T | (Optional) The amount of collateral that's deposited. |
+
+ withdrawCollateral? | T | (Optional) The amount of collateral that's withdrawn. |
+
+ borrowLUSD? | T | (Optional) The amount of LUSD that's borrowed. |
+
+ repayLUSD? | T | (Optional) The amount of LUSD that's repaid. |
+
+
+
diff --git a/docs/sdk/lib-base.trovechange.md b/docs/sdk/lib-base.trovechange.md
new file mode 100644
index 000000000..1d372c3eb
--- /dev/null
+++ b/docs/sdk/lib-base.trovechange.md
@@ -0,0 +1,35 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveChange](./lib-base.trovechange.md)
+
+## TroveChange type
+
+Represents the change from one Trove to another.
+
+Signature:
+
+```typescript
+export declare type TroveChange = {
+ type: "invalidCreation";
+ invalidTrove: Trove;
+ error: TroveCreationError;
+} | {
+ type: "creation";
+ params: TroveCreationParams;
+} | {
+ type: "closure";
+ params: TroveClosureParams;
+} | {
+ type: "adjustment";
+ params: TroveAdjustmentParams;
+ setToZero?: "collateral" | "debt";
+};
+```
+References: [Trove](./lib-base.trove.md), [TroveCreationError](./lib-base.trovecreationerror.md), [TroveCreationParams](./lib-base.trovecreationparams.md), [TroveClosureParams](./lib-base.troveclosureparams.md), [TroveAdjustmentParams](./lib-base.troveadjustmentparams.md)
+
+## Remarks
+
+Returned by [Trove.whatChanged()](./lib-base.trove.whatchanged.md).
+
+Passed as a parameter to [Trove.apply()](./lib-base.trove.apply.md).
+
diff --git a/docs/sdk/lib-base.troveclosuredetails.md b/docs/sdk/lib-base.troveclosuredetails.md
new file mode 100644
index 000000000..de6548469
--- /dev/null
+++ b/docs/sdk/lib-base.troveclosuredetails.md
@@ -0,0 +1,18 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveClosureDetails](./lib-base.troveclosuredetails.md)
+
+## TroveClosureDetails interface
+
+Signature:
+
+```typescript
+export interface TroveClosureDetails
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [params](./lib-base.troveclosuredetails.params.md) | [TroveClosureParams](./lib-base.troveclosureparams.md)<[Decimal](./decimal.decimal.md)> | |
+
diff --git a/docs/sdk/lib-base.troveclosuredetails.params.md b/docs/sdk/lib-base.troveclosuredetails.params.md
new file mode 100644
index 000000000..bf3d2acc9
--- /dev/null
+++ b/docs/sdk/lib-base.troveclosuredetails.params.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveClosureDetails](./lib-base.troveclosuredetails.md) > [params](./lib-base.troveclosuredetails.params.md)
+
+## TroveClosureDetails.params property
+
+Signature:
+
+```typescript
+params: TroveClosureParams;
+```
diff --git a/docs/sdk/lib-base.troveclosureparams.md b/docs/sdk/lib-base.troveclosureparams.md
new file mode 100644
index 000000000..2ab6c38e2
--- /dev/null
+++ b/docs/sdk/lib-base.troveclosureparams.md
@@ -0,0 +1,30 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveClosureParams](./lib-base.troveclosureparams.md)
+
+## TroveClosureParams type
+
+Parameters of Trove closure.
+
+Signature:
+
+```typescript
+export declare type TroveClosureParams = _CollateralWithdrawal & _NoCollateralDeposit & Partial<_LUSDRepayment> & _NoLUSDBorrowing;
+```
+
+## Remarks
+
+The type parameter `T` specifies the allowed value type(s) of the particular `TroveClosureParams` object's properties.
+
+Properties
+
+
+
+ Property | Type | Description |
+
+ withdrawCollateral | T | The amount of collateral that's withdrawn. |
+
+ repayLUSD? | T | (Optional) The amount of LUSD that's repaid. |
+
+
+
diff --git a/docs/sdk/lib-base.trovecreationdetails.fee.md b/docs/sdk/lib-base.trovecreationdetails.fee.md
new file mode 100644
index 000000000..200c63a8f
--- /dev/null
+++ b/docs/sdk/lib-base.trovecreationdetails.fee.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveCreationDetails](./lib-base.trovecreationdetails.md) > [fee](./lib-base.trovecreationdetails.fee.md)
+
+## TroveCreationDetails.fee property
+
+Signature:
+
+```typescript
+fee: Decimal;
+```
diff --git a/docs/sdk/lib-base.trovecreationdetails.md b/docs/sdk/lib-base.trovecreationdetails.md
new file mode 100644
index 000000000..e2d2aff94
--- /dev/null
+++ b/docs/sdk/lib-base.trovecreationdetails.md
@@ -0,0 +1,20 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveCreationDetails](./lib-base.trovecreationdetails.md)
+
+## TroveCreationDetails interface
+
+Signature:
+
+```typescript
+export interface TroveCreationDetails
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [fee](./lib-base.trovecreationdetails.fee.md) | [Decimal](./decimal.decimal.md) | |
+| [newTrove](./lib-base.trovecreationdetails.newtrove.md) | [Trove](./lib-base.trove.md) | |
+| [params](./lib-base.trovecreationdetails.params.md) | [TroveCreationParams](./lib-base.trovecreationparams.md)<[Decimal](./decimal.decimal.md)> | |
+
diff --git a/docs/sdk/lib-base.trovecreationdetails.newtrove.md b/docs/sdk/lib-base.trovecreationdetails.newtrove.md
new file mode 100644
index 000000000..f2a7966e7
--- /dev/null
+++ b/docs/sdk/lib-base.trovecreationdetails.newtrove.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveCreationDetails](./lib-base.trovecreationdetails.md) > [newTrove](./lib-base.trovecreationdetails.newtrove.md)
+
+## TroveCreationDetails.newTrove property
+
+Signature:
+
+```typescript
+newTrove: Trove;
+```
diff --git a/docs/sdk/lib-base.trovecreationdetails.params.md b/docs/sdk/lib-base.trovecreationdetails.params.md
new file mode 100644
index 000000000..c917a825e
--- /dev/null
+++ b/docs/sdk/lib-base.trovecreationdetails.params.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveCreationDetails](./lib-base.trovecreationdetails.md) > [params](./lib-base.trovecreationdetails.params.md)
+
+## TroveCreationDetails.params property
+
+Signature:
+
+```typescript
+params: TroveCreationParams;
+```
diff --git a/docs/sdk/lib-base.trovecreationerror.md b/docs/sdk/lib-base.trovecreationerror.md
new file mode 100644
index 000000000..f116e57ce
--- /dev/null
+++ b/docs/sdk/lib-base.trovecreationerror.md
@@ -0,0 +1,30 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveCreationError](./lib-base.trovecreationerror.md)
+
+## TroveCreationError type
+
+Describes why a Trove could not be created.
+
+Signature:
+
+```typescript
+export declare type TroveCreationError = "missingLiquidationReserve";
+```
+
+## Remarks
+
+See [TroveChange](./lib-base.trovechange.md).
+
+Possible values
+
+
+
+ Value | Reason |
+
+ "missingLiquidationReserve" | A Trove's debt cannot be less than the liquidation reserve. |
+
+
+
+More errors may be added in the future.
+
diff --git a/docs/sdk/lib-base.trovecreationparams.md b/docs/sdk/lib-base.trovecreationparams.md
new file mode 100644
index 000000000..e5f8590ea
--- /dev/null
+++ b/docs/sdk/lib-base.trovecreationparams.md
@@ -0,0 +1,30 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveCreationParams](./lib-base.trovecreationparams.md)
+
+## TroveCreationParams type
+
+Parameters of Trove creation.
+
+Signature:
+
+```typescript
+export declare type TroveCreationParams = _CollateralDeposit & _NoCollateralWithdrawal & Partial<_LUSDBorrowing> & _NoLUSDRepayment;
+```
+
+## Remarks
+
+The type parameter `T` specifies the allowed value type(s) of the particular `TroveCreationParams` object's properties.
+
+Properties
+
+
+
+ Property | Type | Description |
+
+ depositCollateral | T | The amount of collateral that's deposited. |
+
+ borrowLUSD? | T | (Optional) The amount of LUSD that's borrowed. |
+
+
+
diff --git a/docs/sdk/lib-base.trovewithpendingrewards._constructor_.md b/docs/sdk/lib-base.trovewithpendingrewards._constructor_.md
new file mode 100644
index 000000000..bd21f2c58
--- /dev/null
+++ b/docs/sdk/lib-base.trovewithpendingrewards._constructor_.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md) > [(constructor)](./lib-base.trovewithpendingrewards._constructor_.md)
+
+## TroveWithPendingRewards.(constructor)
+
+Constructs a new instance of the `TroveWithPendingRewards` class
+
+Signature:
+
+```typescript
+constructor(collateral?: Decimal, debt?: Decimal, stake?: Decimal, snapshotOfTotalRedistributed?: Trove);
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| collateral | [Decimal](./decimal.decimal.md) | |
+| debt | [Decimal](./decimal.decimal.md) | |
+| stake | [Decimal](./decimal.decimal.md) | |
+| snapshotOfTotalRedistributed | [Trove](./lib-base.trove.md) | |
+
diff --git a/docs/sdk/lib-base.trovewithpendingrewards.applyrewards.md b/docs/sdk/lib-base.trovewithpendingrewards.applyrewards.md
new file mode 100644
index 000000000..c906ec05e
--- /dev/null
+++ b/docs/sdk/lib-base.trovewithpendingrewards.applyrewards.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md) > [applyRewards](./lib-base.trovewithpendingrewards.applyrewards.md)
+
+## TroveWithPendingRewards.applyRewards() method
+
+Signature:
+
+```typescript
+applyRewards(totalRedistributed: Trove): Trove;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| totalRedistributed | [Trove](./lib-base.trove.md) | |
+
+Returns:
+
+[Trove](./lib-base.trove.md)
+
diff --git a/docs/sdk/lib-base.trovewithpendingrewards.equals.md b/docs/sdk/lib-base.trovewithpendingrewards.equals.md
new file mode 100644
index 000000000..ec62cda50
--- /dev/null
+++ b/docs/sdk/lib-base.trovewithpendingrewards.equals.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md) > [equals](./lib-base.trovewithpendingrewards.equals.md)
+
+## TroveWithPendingRewards.equals() method
+
+Signature:
+
+```typescript
+equals(that: TroveWithPendingRewards): boolean;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| that | [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md) | |
+
+Returns:
+
+boolean
+
diff --git a/docs/sdk/lib-base.trovewithpendingrewards.md b/docs/sdk/lib-base.trovewithpendingrewards.md
new file mode 100644
index 000000000..93bede760
--- /dev/null
+++ b/docs/sdk/lib-base.trovewithpendingrewards.md
@@ -0,0 +1,34 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)
+
+## TroveWithPendingRewards class
+
+
+Signature:
+
+```typescript
+export declare class TroveWithPendingRewards extends Trove
+```
+Extends: [Trove](./lib-base.trove.md)
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(collateral, debt, stake, snapshotOfTotalRedistributed)](./lib-base.trovewithpendingrewards._constructor_.md) | | Constructs a new instance of the TroveWithPendingRewards
class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [snapshotOfTotalRedistributed](./lib-base.trovewithpendingrewards.snapshotoftotalredistributed.md) | | [Trove](./lib-base.trove.md) | |
+| [stake](./lib-base.trovewithpendingrewards.stake.md) | | [Decimal](./decimal.decimal.md) | |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [applyRewards(totalRedistributed)](./lib-base.trovewithpendingrewards.applyrewards.md) | | |
+| [equals(that)](./lib-base.trovewithpendingrewards.equals.md) | | |
+
diff --git a/docs/sdk/lib-base.trovewithpendingrewards.snapshotoftotalredistributed.md b/docs/sdk/lib-base.trovewithpendingrewards.snapshotoftotalredistributed.md
new file mode 100644
index 000000000..023206a87
--- /dev/null
+++ b/docs/sdk/lib-base.trovewithpendingrewards.snapshotoftotalredistributed.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md) > [snapshotOfTotalRedistributed](./lib-base.trovewithpendingrewards.snapshotoftotalredistributed.md)
+
+## TroveWithPendingRewards.snapshotOfTotalRedistributed property
+
+Signature:
+
+```typescript
+readonly snapshotOfTotalRedistributed: Trove;
+```
diff --git a/docs/sdk/lib-base.trovewithpendingrewards.stake.md b/docs/sdk/lib-base.trovewithpendingrewards.stake.md
new file mode 100644
index 000000000..e74d64b38
--- /dev/null
+++ b/docs/sdk/lib-base.trovewithpendingrewards.stake.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-base](./lib-base.md) > [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md) > [stake](./lib-base.trovewithpendingrewards.stake.md)
+
+## TroveWithPendingRewards.stake property
+
+Signature:
+
+```typescript
+readonly stake: Decimal;
+```
diff --git a/docs/sdk/lib-ethers.addressesof.md b/docs/sdk/lib-ethers.addressesof.md
new file mode 100644
index 000000000..3cfee638a
--- /dev/null
+++ b/docs/sdk/lib-ethers.addressesof.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [addressesOf](./lib-ethers.addressesof.md)
+
+## addressesOf variable
+
+Signature:
+
+```typescript
+addressesOf: (contracts: LiquityContracts) => LiquityContractAddresses
+```
diff --git a/docs/sdk/lib-ethers.blockpolledliquitystore._constructor_.md b/docs/sdk/lib-ethers.blockpolledliquitystore._constructor_.md
new file mode 100644
index 000000000..223e5a395
--- /dev/null
+++ b/docs/sdk/lib-ethers.blockpolledliquitystore._constructor_.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [BlockPolledLiquityStore](./lib-ethers.blockpolledliquitystore.md) > [(constructor)](./lib-ethers.blockpolledliquitystore._constructor_.md)
+
+## BlockPolledLiquityStore.(constructor)
+
+Constructs a new instance of the `BlockPolledLiquityStore` class
+
+Signature:
+
+```typescript
+constructor(provider: Provider, account: string, liquity: ReadableEthersLiquity, frontendTag?: string);
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| provider | Provider | |
+| account | string | |
+| liquity | [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) | |
+| frontendTag | string | |
+
diff --git a/docs/sdk/lib-ethers.blockpolledliquitystore._dostart.md b/docs/sdk/lib-ethers.blockpolledliquitystore._dostart.md
new file mode 100644
index 000000000..cb14560a2
--- /dev/null
+++ b/docs/sdk/lib-ethers.blockpolledliquitystore._dostart.md
@@ -0,0 +1,17 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [BlockPolledLiquityStore](./lib-ethers.blockpolledliquitystore.md) > [\_doStart](./lib-ethers.blockpolledliquitystore._dostart.md)
+
+## BlockPolledLiquityStore.\_doStart() method
+
+
+Signature:
+
+```typescript
+/** @override */
+protected _doStart(): () => void;
+```
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.blockpolledliquitystore._reduceextra.md b/docs/sdk/lib-ethers.blockpolledliquitystore._reduceextra.md
new file mode 100644
index 000000000..2cbaaafa7
--- /dev/null
+++ b/docs/sdk/lib-ethers.blockpolledliquitystore._reduceextra.md
@@ -0,0 +1,25 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [BlockPolledLiquityStore](./lib-ethers.blockpolledliquitystore.md) > [\_reduceExtra](./lib-ethers.blockpolledliquitystore._reduceextra.md)
+
+## BlockPolledLiquityStore.\_reduceExtra() method
+
+
+Signature:
+
+```typescript
+/** @override */
+protected _reduceExtra(oldState: BlockPolledLiquityStoreExtraState, stateUpdate: Partial): BlockPolledLiquityStoreExtraState;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| oldState | [BlockPolledLiquityStoreExtraState](./lib-ethers.blockpolledliquitystoreextrastate.md) | |
+| stateUpdate | Partial<[BlockPolledLiquityStoreExtraState](./lib-ethers.blockpolledliquitystoreextrastate.md)> | |
+
+Returns:
+
+[BlockPolledLiquityStoreExtraState](./lib-ethers.blockpolledliquitystoreextrastate.md)
+
diff --git a/docs/sdk/lib-ethers.blockpolledliquitystore.md b/docs/sdk/lib-ethers.blockpolledliquitystore.md
new file mode 100644
index 000000000..f7351f8a1
--- /dev/null
+++ b/docs/sdk/lib-ethers.blockpolledliquitystore.md
@@ -0,0 +1,26 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [BlockPolledLiquityStore](./lib-ethers.blockpolledliquitystore.md)
+
+## BlockPolledLiquityStore class
+
+Signature:
+
+```typescript
+export declare class BlockPolledLiquityStore extends LiquityStore
+```
+Extends: [LiquityStore](./lib-base.liquitystore.md)<[BlockPolledLiquityStoreExtraState](./lib-ethers.blockpolledliquitystoreextrastate.md)>
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(provider, account, liquity, frontendTag)](./lib-ethers.blockpolledliquitystore._constructor_.md) | | Constructs a new instance of the BlockPolledLiquityStore
class |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [\_doStart()](./lib-ethers.blockpolledliquitystore._dostart.md) | | |
+| [\_reduceExtra(oldState, stateUpdate)](./lib-ethers.blockpolledliquitystore._reduceextra.md) | | |
+
diff --git a/docs/sdk/lib-ethers.blockpolledliquitystoreextrastate.md b/docs/sdk/lib-ethers.blockpolledliquitystoreextrastate.md
new file mode 100644
index 000000000..5a6d5ad0d
--- /dev/null
+++ b/docs/sdk/lib-ethers.blockpolledliquitystoreextrastate.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [BlockPolledLiquityStoreExtraState](./lib-ethers.blockpolledliquitystoreextrastate.md)
+
+## BlockPolledLiquityStoreExtraState type
+
+Signature:
+
+```typescript
+export declare type BlockPolledLiquityStoreExtraState = {
+ blockTag?: number;
+};
+```
diff --git a/docs/sdk/lib-ethers.blockpolledliquitystorestate.md b/docs/sdk/lib-ethers.blockpolledliquitystorestate.md
new file mode 100644
index 000000000..3148f042d
--- /dev/null
+++ b/docs/sdk/lib-ethers.blockpolledliquitystorestate.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [BlockPolledLiquityStoreState](./lib-ethers.blockpolledliquitystorestate.md)
+
+## BlockPolledLiquityStoreState type
+
+Signature:
+
+```typescript
+export declare type BlockPolledLiquityStoreState = LiquityStoreState;
+```
+References: [LiquityStoreState](./lib-base.liquitystorestate.md), [BlockPolledLiquityStoreExtraState](./lib-ethers.blockpolledliquitystoreextrastate.md)
+
diff --git a/docs/sdk/lib-ethers.connecttocontracts.md b/docs/sdk/lib-ethers.connecttocontracts.md
new file mode 100644
index 000000000..7858b7e93
--- /dev/null
+++ b/docs/sdk/lib-ethers.connecttocontracts.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [connectToContracts](./lib-ethers.connecttocontracts.md)
+
+## connectToContracts variable
+
+Signature:
+
+```typescript
+connectToContracts: (addresses: LiquityContractAddresses, priceFeedIsTestnet: boolean, signerOrProvider: Signer | Provider) => LiquityContracts
+```
diff --git a/docs/sdk/lib-ethers.deploymentonnetwork.md b/docs/sdk/lib-ethers.deploymentonnetwork.md
new file mode 100644
index 000000000..d01cc7138
--- /dev/null
+++ b/docs/sdk/lib-ethers.deploymentonnetwork.md
@@ -0,0 +1,14 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [deploymentOnNetwork](./lib-ethers.deploymentonnetwork.md)
+
+## deploymentOnNetwork variable
+
+Signature:
+
+```typescript
+deploymentOnNetwork: {
+ [network: string]: LiquityDeployment;
+ [chainId: number]: LiquityDeployment;
+}
+```
diff --git a/docs/sdk/lib-ethers.dev_chain_id.md b/docs/sdk/lib-ethers.dev_chain_id.md
new file mode 100644
index 000000000..37faafbc3
--- /dev/null
+++ b/docs/sdk/lib-ethers.dev_chain_id.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [DEV\_CHAIN\_ID](./lib-ethers.dev_chain_id.md)
+
+## DEV\_CHAIN\_ID variable
+
+Signature:
+
+```typescript
+DEV_CHAIN_ID = 17
+```
diff --git a/docs/sdk/lib-ethers.etherscalloverrides.md b/docs/sdk/lib-ethers.etherscalloverrides.md
new file mode 100644
index 000000000..b04a285ce
--- /dev/null
+++ b/docs/sdk/lib-ethers.etherscalloverrides.md
@@ -0,0 +1,16 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersCallOverrides](./lib-ethers.etherscalloverrides.md)
+
+## EthersCallOverrides type
+
+Signature:
+
+```typescript
+export declare type EthersCallOverrides = Partial>;
+```
+References: [Promisable](./lib-ethers.promisable.md)
+
diff --git a/docs/sdk/lib-ethers.ethersliquity._constructor_.md b/docs/sdk/lib-ethers.ethersliquity._constructor_.md
new file mode 100644
index 000000000..6ff38cac7
--- /dev/null
+++ b/docs/sdk/lib-ethers.ethersliquity._constructor_.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersLiquity](./lib-ethers.ethersliquity.md) > [(constructor)](./lib-ethers.ethersliquity._constructor_.md)
+
+## EthersLiquity.(constructor)
+
+Constructs a new instance of the `EthersLiquity` class
+
+Signature:
+
+```typescript
+constructor(readable: ReadableEthersLiquity, observable: ObservableEthersLiquity, populatable: PopulatableEthersLiquity);
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| readable | [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) | |
+| observable | [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) | |
+| populatable | [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) | |
+
diff --git a/docs/sdk/lib-ethers.ethersliquity.connect.md b/docs/sdk/lib-ethers.ethersliquity.connect.md
new file mode 100644
index 000000000..dbee070ce
--- /dev/null
+++ b/docs/sdk/lib-ethers.ethersliquity.connect.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersLiquity](./lib-ethers.ethersliquity.md) > [connect](./lib-ethers.ethersliquity.connect.md)
+
+## EthersLiquity.connect() method
+
+Signature:
+
+```typescript
+static connect(deployment: LiquityDeployment, signer: Signer): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| deployment | [LiquityDeployment](./lib-ethers.liquitydeployment.md) | |
+| signer | Signer | |
+
+Returns:
+
+Promise<[EthersLiquity](./lib-ethers.ethersliquity.md)>
+
diff --git a/docs/sdk/lib-ethers.ethersliquity.from.md b/docs/sdk/lib-ethers.ethersliquity.from.md
new file mode 100644
index 000000000..68dd43965
--- /dev/null
+++ b/docs/sdk/lib-ethers.ethersliquity.from.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersLiquity](./lib-ethers.ethersliquity.md) > [from](./lib-ethers.ethersliquity.from.md)
+
+## EthersLiquity.from() method
+
+Signature:
+
+```typescript
+static from(contracts: LiquityContracts, signer: Signer, userAddress?: string): EthersLiquity;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| contracts | [LiquityContracts](./lib-ethers.liquitycontracts.md) | |
+| signer | Signer | |
+| userAddress | string | |
+
+Returns:
+
+[EthersLiquity](./lib-ethers.ethersliquity.md)
+
diff --git a/docs/sdk/lib-ethers.ethersliquity.md b/docs/sdk/lib-ethers.ethersliquity.md
new file mode 100644
index 000000000..7e20c121e
--- /dev/null
+++ b/docs/sdk/lib-ethers.ethersliquity.md
@@ -0,0 +1,33 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersLiquity](./lib-ethers.ethersliquity.md)
+
+## EthersLiquity class
+
+Signature:
+
+```typescript
+export declare class EthersLiquity extends GluedEthersLiquity
+```
+Extends: GluedEthersLiquity
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(readable, observable, populatable)](./lib-ethers.ethersliquity._constructor_.md) | | Constructs a new instance of the EthersLiquity
class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [populate](./lib-ethers.ethersliquity.populate.md) | | [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) | |
+| [send](./lib-ethers.ethersliquity.send.md) | | [SendableEthersLiquity](./lib-ethers.sendableethersliquity.md) | |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [connect(deployment, signer)](./lib-ethers.ethersliquity.connect.md) | static
| |
+| [from(contracts, signer, userAddress)](./lib-ethers.ethersliquity.from.md) | static
| |
+
diff --git a/docs/sdk/lib-ethers.ethersliquity.populate.md b/docs/sdk/lib-ethers.ethersliquity.populate.md
new file mode 100644
index 000000000..c0f39624b
--- /dev/null
+++ b/docs/sdk/lib-ethers.ethersliquity.populate.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersLiquity](./lib-ethers.ethersliquity.md) > [populate](./lib-ethers.ethersliquity.populate.md)
+
+## EthersLiquity.populate property
+
+Signature:
+
+```typescript
+readonly populate: PopulatableEthersLiquity;
+```
diff --git a/docs/sdk/lib-ethers.ethersliquity.send.md b/docs/sdk/lib-ethers.ethersliquity.send.md
new file mode 100644
index 000000000..924195837
--- /dev/null
+++ b/docs/sdk/lib-ethers.ethersliquity.send.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersLiquity](./lib-ethers.ethersliquity.md) > [send](./lib-ethers.ethersliquity.send.md)
+
+## EthersLiquity.send property
+
+Signature:
+
+```typescript
+readonly send: SendableEthersLiquity;
+```
diff --git a/docs/sdk/lib-ethers.etherstransactionoverrides.md b/docs/sdk/lib-ethers.etherstransactionoverrides.md
new file mode 100644
index 000000000..836c9b922
--- /dev/null
+++ b/docs/sdk/lib-ethers.etherstransactionoverrides.md
@@ -0,0 +1,17 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md)
+
+## EthersTransactionOverrides type
+
+Signature:
+
+```typescript
+export declare type EthersTransactionOverrides = Partial>;
+```
+References: [Promisable](./lib-ethers.promisable.md)
+
diff --git a/docs/sdk/lib-ethers.liquitycontractabis.md b/docs/sdk/lib-ethers.liquitycontractabis.md
new file mode 100644
index 000000000..bb5bc6f43
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontractabis.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContractAbis](./lib-ethers.liquitycontractabis.md)
+
+## LiquityContractAbis type
+
+Signature:
+
+```typescript
+export declare type LiquityContractAbis = Record;
+```
+References: [LiquityContractsKey](./lib-ethers.liquitycontractskey.md)
+
diff --git a/docs/sdk/lib-ethers.liquitycontractaddresses.md b/docs/sdk/lib-ethers.liquitycontractaddresses.md
new file mode 100644
index 000000000..c867da68f
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontractaddresses.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContractAddresses](./lib-ethers.liquitycontractaddresses.md)
+
+## LiquityContractAddresses type
+
+Signature:
+
+```typescript
+export declare type LiquityContractAddresses = Record;
+```
+References: [LiquityContractsKey](./lib-ethers.liquitycontractskey.md)
+
diff --git a/docs/sdk/lib-ethers.liquitycontracts.activepool.md b/docs/sdk/lib-ethers.liquitycontracts.activepool.md
new file mode 100644
index 000000000..98da6a24f
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.activepool.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [activePool](./lib-ethers.liquitycontracts.activepool.md)
+
+## LiquityContracts.activePool property
+
+Signature:
+
+```typescript
+activePool: ActivePool;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.borroweroperations.md b/docs/sdk/lib-ethers.liquitycontracts.borroweroperations.md
new file mode 100644
index 000000000..0a3e702ba
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.borroweroperations.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [borrowerOperations](./lib-ethers.liquitycontracts.borroweroperations.md)
+
+## LiquityContracts.borrowerOperations property
+
+Signature:
+
+```typescript
+borrowerOperations: BorrowerOperations;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.collsurpluspool.md b/docs/sdk/lib-ethers.liquitycontracts.collsurpluspool.md
new file mode 100644
index 000000000..cb288e32b
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.collsurpluspool.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [collSurplusPool](./lib-ethers.liquitycontracts.collsurpluspool.md)
+
+## LiquityContracts.collSurplusPool property
+
+Signature:
+
+```typescript
+collSurplusPool: CollSurplusPool;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.communityissuance.md b/docs/sdk/lib-ethers.liquitycontracts.communityissuance.md
new file mode 100644
index 000000000..ffc4dfa9f
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.communityissuance.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [communityIssuance](./lib-ethers.liquitycontracts.communityissuance.md)
+
+## LiquityContracts.communityIssuance property
+
+Signature:
+
+```typescript
+communityIssuance: CommunityIssuance;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.defaultpool.md b/docs/sdk/lib-ethers.liquitycontracts.defaultpool.md
new file mode 100644
index 000000000..fcacda632
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.defaultpool.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [defaultPool](./lib-ethers.liquitycontracts.defaultpool.md)
+
+## LiquityContracts.defaultPool property
+
+Signature:
+
+```typescript
+defaultPool: DefaultPool;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.gaspool.md b/docs/sdk/lib-ethers.liquitycontracts.gaspool.md
new file mode 100644
index 000000000..e6572f0fa
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.gaspool.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [gasPool](./lib-ethers.liquitycontracts.gaspool.md)
+
+## LiquityContracts.gasPool property
+
+Signature:
+
+```typescript
+gasPool: GasPool;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.hinthelpers.md b/docs/sdk/lib-ethers.liquitycontracts.hinthelpers.md
new file mode 100644
index 000000000..defbd2a0d
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.hinthelpers.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [hintHelpers](./lib-ethers.liquitycontracts.hinthelpers.md)
+
+## LiquityContracts.hintHelpers property
+
+Signature:
+
+```typescript
+hintHelpers: HintHelpers;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.lockupcontractfactory.md b/docs/sdk/lib-ethers.liquitycontracts.lockupcontractfactory.md
new file mode 100644
index 000000000..9dcd33ada
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.lockupcontractfactory.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [lockupContractFactory](./lib-ethers.liquitycontracts.lockupcontractfactory.md)
+
+## LiquityContracts.lockupContractFactory property
+
+Signature:
+
+```typescript
+lockupContractFactory: LockupContractFactory;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.lqtystaking.md b/docs/sdk/lib-ethers.liquitycontracts.lqtystaking.md
new file mode 100644
index 000000000..789d80ce2
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.lqtystaking.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [lqtyStaking](./lib-ethers.liquitycontracts.lqtystaking.md)
+
+## LiquityContracts.lqtyStaking property
+
+Signature:
+
+```typescript
+lqtyStaking: LQTYStaking;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.lqtytoken.md b/docs/sdk/lib-ethers.liquitycontracts.lqtytoken.md
new file mode 100644
index 000000000..ae1756894
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.lqtytoken.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [lqtyToken](./lib-ethers.liquitycontracts.lqtytoken.md)
+
+## LiquityContracts.lqtyToken property
+
+Signature:
+
+```typescript
+lqtyToken: LQTYToken;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.lusdtoken.md b/docs/sdk/lib-ethers.liquitycontracts.lusdtoken.md
new file mode 100644
index 000000000..145c0b2bd
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.lusdtoken.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [lusdToken](./lib-ethers.liquitycontracts.lusdtoken.md)
+
+## LiquityContracts.lusdToken property
+
+Signature:
+
+```typescript
+lusdToken: LUSDToken;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.md b/docs/sdk/lib-ethers.liquitycontracts.md
new file mode 100644
index 000000000..1fbfc5fc0
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.md
@@ -0,0 +1,33 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md)
+
+## LiquityContracts interface
+
+Signature:
+
+```typescript
+export interface LiquityContracts
+```
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [activePool](./lib-ethers.liquitycontracts.activepool.md) | ActivePool | |
+| [borrowerOperations](./lib-ethers.liquitycontracts.borroweroperations.md) | BorrowerOperations | |
+| [collSurplusPool](./lib-ethers.liquitycontracts.collsurpluspool.md) | CollSurplusPool | |
+| [communityIssuance](./lib-ethers.liquitycontracts.communityissuance.md) | CommunityIssuance | |
+| [defaultPool](./lib-ethers.liquitycontracts.defaultpool.md) | DefaultPool | |
+| [gasPool](./lib-ethers.liquitycontracts.gaspool.md) | GasPool | |
+| [hintHelpers](./lib-ethers.liquitycontracts.hinthelpers.md) | HintHelpers | |
+| [lockupContractFactory](./lib-ethers.liquitycontracts.lockupcontractfactory.md) | LockupContractFactory | |
+| [lqtyStaking](./lib-ethers.liquitycontracts.lqtystaking.md) | LQTYStaking | |
+| [lqtyToken](./lib-ethers.liquitycontracts.lqtytoken.md) | LQTYToken | |
+| [lusdToken](./lib-ethers.liquitycontracts.lusdtoken.md) | LUSDToken | |
+| [multiTroveGetter](./lib-ethers.liquitycontracts.multitrovegetter.md) | MultiTroveGetter | |
+| [priceFeed](./lib-ethers.liquitycontracts.pricefeed.md) | PriceFeed \| PriceFeedTestnet | |
+| [sortedTroves](./lib-ethers.liquitycontracts.sortedtroves.md) | SortedTroves | |
+| [stabilityPool](./lib-ethers.liquitycontracts.stabilitypool.md) | StabilityPool | |
+| [troveManager](./lib-ethers.liquitycontracts.trovemanager.md) | TroveManager | |
+
diff --git a/docs/sdk/lib-ethers.liquitycontracts.multitrovegetter.md b/docs/sdk/lib-ethers.liquitycontracts.multitrovegetter.md
new file mode 100644
index 000000000..fe6d8e476
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.multitrovegetter.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [multiTroveGetter](./lib-ethers.liquitycontracts.multitrovegetter.md)
+
+## LiquityContracts.multiTroveGetter property
+
+Signature:
+
+```typescript
+multiTroveGetter: MultiTroveGetter;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.pricefeed.md b/docs/sdk/lib-ethers.liquitycontracts.pricefeed.md
new file mode 100644
index 000000000..9c5d42c1f
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.pricefeed.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [priceFeed](./lib-ethers.liquitycontracts.pricefeed.md)
+
+## LiquityContracts.priceFeed property
+
+Signature:
+
+```typescript
+priceFeed: PriceFeed | PriceFeedTestnet;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.sortedtroves.md b/docs/sdk/lib-ethers.liquitycontracts.sortedtroves.md
new file mode 100644
index 000000000..2e9eba7f5
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.sortedtroves.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [sortedTroves](./lib-ethers.liquitycontracts.sortedtroves.md)
+
+## LiquityContracts.sortedTroves property
+
+Signature:
+
+```typescript
+sortedTroves: SortedTroves;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.stabilitypool.md b/docs/sdk/lib-ethers.liquitycontracts.stabilitypool.md
new file mode 100644
index 000000000..6af4e47fe
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.stabilitypool.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [stabilityPool](./lib-ethers.liquitycontracts.stabilitypool.md)
+
+## LiquityContracts.stabilityPool property
+
+Signature:
+
+```typescript
+stabilityPool: StabilityPool;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontracts.trovemanager.md b/docs/sdk/lib-ethers.liquitycontracts.trovemanager.md
new file mode 100644
index 000000000..f5061ba21
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontracts.trovemanager.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContracts](./lib-ethers.liquitycontracts.md) > [troveManager](./lib-ethers.liquitycontracts.trovemanager.md)
+
+## LiquityContracts.troveManager property
+
+Signature:
+
+```typescript
+troveManager: TroveManager;
+```
diff --git a/docs/sdk/lib-ethers.liquitycontractskey.md b/docs/sdk/lib-ethers.liquitycontractskey.md
new file mode 100644
index 000000000..bb11a9032
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitycontractskey.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityContractsKey](./lib-ethers.liquitycontractskey.md)
+
+## LiquityContractsKey type
+
+Signature:
+
+```typescript
+export declare type LiquityContractsKey = keyof LiquityContracts;
+```
+References: [LiquityContracts](./lib-ethers.liquitycontracts.md)
+
diff --git a/docs/sdk/lib-ethers.liquitydeployment.md b/docs/sdk/lib-ethers.liquitydeployment.md
new file mode 100644
index 000000000..98c646b9a
--- /dev/null
+++ b/docs/sdk/lib-ethers.liquitydeployment.md
@@ -0,0 +1,18 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [LiquityDeployment](./lib-ethers.liquitydeployment.md)
+
+## LiquityDeployment type
+
+Signature:
+
+```typescript
+export declare type LiquityDeployment = {
+ addresses: LiquityContractAddresses;
+ priceFeedIsTestnet: boolean;
+ version: string;
+ deploymentDate: number;
+};
+```
+References: [LiquityContractAddresses](./lib-ethers.liquitycontractaddresses.md)
+
diff --git a/docs/sdk/lib-ethers.md b/docs/sdk/lib-ethers.md
new file mode 100644
index 000000000..a9a254829
--- /dev/null
+++ b/docs/sdk/lib-ethers.md
@@ -0,0 +1,56 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md)
+
+## lib-ethers package
+
+## Classes
+
+| Class | Description |
+| --- | --- |
+| [BlockPolledLiquityStore](./lib-ethers.blockpolledliquitystore.md) | |
+| [EthersLiquity](./lib-ethers.ethersliquity.md) | |
+| [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) | |
+| [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) | |
+| [PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md) | |
+| [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) | |
+| [SentEthersTransaction](./lib-ethers.sentetherstransaction.md) | |
+
+## Interfaces
+
+| Interface | Description |
+| --- | --- |
+| [LiquityContracts](./lib-ethers.liquitycontracts.md) | |
+| [TypedLogDescription](./lib-ethers.typedlogdescription.md) | |
+
+## Variables
+
+| Variable | Description |
+| --- | --- |
+| [addressesOf](./lib-ethers.addressesof.md) | |
+| [connectToContracts](./lib-ethers.connecttocontracts.md) | |
+| [deploymentOnNetwork](./lib-ethers.deploymentonnetwork.md) | |
+| [DEV\_CHAIN\_ID](./lib-ethers.dev_chain_id.md) | |
+| [priceFeedIsTestnet](./lib-ethers.pricefeedistestnet.md) | |
+| [redeemMaxIterations](./lib-ethers.redeemmaxiterations.md) | |
+| [SendableEthersLiquity](./lib-ethers.sendableethersliquity.md) | |
+| [TransactableEthersLiquity](./lib-ethers.transactableethersliquity.md) | |
+
+## Type Aliases
+
+| Type Alias | Description |
+| --- | --- |
+| [BlockPolledLiquityStoreExtraState](./lib-ethers.blockpolledliquitystoreextrastate.md) | |
+| [BlockPolledLiquityStoreState](./lib-ethers.blockpolledliquitystorestate.md) | |
+| [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+| [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+| [LiquityContractAbis](./lib-ethers.liquitycontractabis.md) | |
+| [LiquityContractAddresses](./lib-ethers.liquitycontractaddresses.md) | |
+| [LiquityContractsKey](./lib-ethers.liquitycontractskey.md) | |
+| [LiquityDeployment](./lib-ethers.liquitydeployment.md) | |
+| [Promisable](./lib-ethers.promisable.md) | |
+| [SendableEthersLiquity](./lib-ethers.sendableethersliquity.md) | |
+| [TransactableEthersLiquity](./lib-ethers.transactableethersliquity.md) | |
+| [TypedContract](./lib-ethers.typedcontract.md) | |
+| [TypedLiquityContract](./lib-ethers.typedliquitycontract.md) | |
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity._constructor_.md b/docs/sdk/lib-ethers.observableethersliquity._constructor_.md
new file mode 100644
index 000000000..21c30b55b
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity._constructor_.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [(constructor)](./lib-ethers.observableethersliquity._constructor_.md)
+
+## ObservableEthersLiquity.(constructor)
+
+Constructs a new instance of the `ObservableEthersLiquity` class
+
+Signature:
+
+```typescript
+constructor(contracts: LiquityContracts, readableLiquity: ReadableEthersLiquity, userAddress?: string);
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| contracts | [LiquityContracts](./lib-ethers.liquitycontracts.md) | |
+| readableLiquity | [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) | |
+| userAddress | string | |
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.md b/docs/sdk/lib-ethers.observableethersliquity.md
new file mode 100644
index 000000000..1b17e2ee5
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.md
@@ -0,0 +1,34 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md)
+
+## ObservableEthersLiquity class
+
+Signature:
+
+```typescript
+export declare class ObservableEthersLiquity extends EthersLiquityBase implements ObservableLiquity
+```
+Extends: EthersLiquityBase
+
+Implements: ObservableLiquity
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(contracts, readableLiquity, userAddress)](./lib-ethers.observableethersliquity._constructor_.md) | | Constructs a new instance of the ObservableEthersLiquity
class |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [watchLUSDBalance(onLUSDBalanceChanged, address)](./lib-ethers.observableethersliquity.watchlusdbalance.md) | | |
+| [watchLUSDInStabilityPool(onLUSDInStabilityPoolChanged)](./lib-ethers.observableethersliquity.watchlusdinstabilitypool.md) | | |
+| [watchNumberOfTroves(onNumberOfTrovesChanged)](./lib-ethers.observableethersliquity.watchnumberoftroves.md) | | |
+| [watchPrice(onPriceChanged)](./lib-ethers.observableethersliquity.watchprice.md) | | |
+| [watchStabilityDeposit(onStabilityDepositChanged, address)](./lib-ethers.observableethersliquity.watchstabilitydeposit.md) | | |
+| [watchTotal(onTotalChanged)](./lib-ethers.observableethersliquity.watchtotal.md) | | |
+| [watchTotalRedistributed(onTotalRedistributedChanged)](./lib-ethers.observableethersliquity.watchtotalredistributed.md) | | |
+| [watchTroveWithoutRewards(onTroveChanged, address)](./lib-ethers.observableethersliquity.watchtrovewithoutrewards.md) | | |
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchlusdbalance.md b/docs/sdk/lib-ethers.observableethersliquity.watchlusdbalance.md
new file mode 100644
index 000000000..602fe8b9e
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchlusdbalance.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchLUSDBalance](./lib-ethers.observableethersliquity.watchlusdbalance.md)
+
+## ObservableEthersLiquity.watchLUSDBalance() method
+
+Signature:
+
+```typescript
+watchLUSDBalance(onLUSDBalanceChanged: (balance: Decimal) => void, address?: string): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onLUSDBalanceChanged | (balance: [Decimal](./decimal.decimal.md)) => void | |
+| address | string | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchlusdinstabilitypool.md b/docs/sdk/lib-ethers.observableethersliquity.watchlusdinstabilitypool.md
new file mode 100644
index 000000000..d79576e6c
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchlusdinstabilitypool.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchLUSDInStabilityPool](./lib-ethers.observableethersliquity.watchlusdinstabilitypool.md)
+
+## ObservableEthersLiquity.watchLUSDInStabilityPool() method
+
+Signature:
+
+```typescript
+watchLUSDInStabilityPool(onLUSDInStabilityPoolChanged: (lusdInStabilityPool: Decimal) => void): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onLUSDInStabilityPoolChanged | (lusdInStabilityPool: [Decimal](./decimal.decimal.md)) => void | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchnumberoftroves.md b/docs/sdk/lib-ethers.observableethersliquity.watchnumberoftroves.md
new file mode 100644
index 000000000..c9b5b2085
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchnumberoftroves.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchNumberOfTroves](./lib-ethers.observableethersliquity.watchnumberoftroves.md)
+
+## ObservableEthersLiquity.watchNumberOfTroves() method
+
+Signature:
+
+```typescript
+watchNumberOfTroves(onNumberOfTrovesChanged: (numberOfTroves: number) => void): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onNumberOfTrovesChanged | (numberOfTroves: number) => void | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchprice.md b/docs/sdk/lib-ethers.observableethersliquity.watchprice.md
new file mode 100644
index 000000000..d668cbe61
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchprice.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchPrice](./lib-ethers.observableethersliquity.watchprice.md)
+
+## ObservableEthersLiquity.watchPrice() method
+
+Signature:
+
+```typescript
+watchPrice(onPriceChanged: (price: Decimal) => void): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onPriceChanged | (price: [Decimal](./decimal.decimal.md)) => void | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchstabilitydeposit.md b/docs/sdk/lib-ethers.observableethersliquity.watchstabilitydeposit.md
new file mode 100644
index 000000000..a521b6ce3
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchstabilitydeposit.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchStabilityDeposit](./lib-ethers.observableethersliquity.watchstabilitydeposit.md)
+
+## ObservableEthersLiquity.watchStabilityDeposit() method
+
+Signature:
+
+```typescript
+watchStabilityDeposit(onStabilityDepositChanged: (deposit: StabilityDeposit) => void, address?: string): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onStabilityDepositChanged | (deposit: [StabilityDeposit](./lib-base.stabilitydeposit.md)) => void | |
+| address | string | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchtotal.md b/docs/sdk/lib-ethers.observableethersliquity.watchtotal.md
new file mode 100644
index 000000000..c8cdaac26
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchtotal.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchTotal](./lib-ethers.observableethersliquity.watchtotal.md)
+
+## ObservableEthersLiquity.watchTotal() method
+
+Signature:
+
+```typescript
+watchTotal(onTotalChanged: (total: Trove) => void): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onTotalChanged | (total: [Trove](./lib-base.trove.md)) => void | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchtotalredistributed.md b/docs/sdk/lib-ethers.observableethersliquity.watchtotalredistributed.md
new file mode 100644
index 000000000..3b7d23e51
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchtotalredistributed.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchTotalRedistributed](./lib-ethers.observableethersliquity.watchtotalredistributed.md)
+
+## ObservableEthersLiquity.watchTotalRedistributed() method
+
+Signature:
+
+```typescript
+watchTotalRedistributed(onTotalRedistributedChanged: (totalRedistributed: Trove) => void): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onTotalRedistributedChanged | (totalRedistributed: [Trove](./lib-base.trove.md)) => void | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.observableethersliquity.watchtrovewithoutrewards.md b/docs/sdk/lib-ethers.observableethersliquity.watchtrovewithoutrewards.md
new file mode 100644
index 000000000..7c4136b6b
--- /dev/null
+++ b/docs/sdk/lib-ethers.observableethersliquity.watchtrovewithoutrewards.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ObservableEthersLiquity](./lib-ethers.observableethersliquity.md) > [watchTroveWithoutRewards](./lib-ethers.observableethersliquity.watchtrovewithoutrewards.md)
+
+## ObservableEthersLiquity.watchTroveWithoutRewards() method
+
+Signature:
+
+```typescript
+watchTroveWithoutRewards(onTroveChanged: (trove: TroveWithPendingRewards) => void, address?: string): () => void;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| onTroveChanged | (trove: [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)) => void | |
+| address | string | |
+
+Returns:
+
+() => void
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.adjusttrove.md b/docs/sdk/lib-ethers.populatableethersliquity.adjusttrove.md
new file mode 100644
index 000000000..26d1b215c
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.adjusttrove.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [adjustTrove](./lib-ethers.populatableethersliquity.adjusttrove.md)
+
+## PopulatableEthersLiquity.adjustTrove() method
+
+Signature:
+
+```typescript
+adjustTrove(params: TroveAdjustmentParams, optionalParams?: _TroveAdjustmentOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| params | [TroveAdjustmentParams](./lib-base.troveadjustmentparams.md)<[Decimalish](./decimal.decimalish.md)> | |
+| optionalParams | \_TroveAdjustmentOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.borrowlusd.md b/docs/sdk/lib-ethers.populatableethersliquity.borrowlusd.md
new file mode 100644
index 000000000..af7fa990b
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.borrowlusd.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [borrowLUSD](./lib-ethers.populatableethersliquity.borrowlusd.md)
+
+## PopulatableEthersLiquity.borrowLUSD() method
+
+Signature:
+
+```typescript
+borrowLUSD(amount: Decimalish, optionalParams?: _TroveAdjustmentOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| optionalParams | \_TroveAdjustmentOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.claimcollateralsurplus.md b/docs/sdk/lib-ethers.populatableethersliquity.claimcollateralsurplus.md
new file mode 100644
index 000000000..7c99cf6d7
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.claimcollateralsurplus.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [claimCollateralSurplus](./lib-ethers.populatableethersliquity.claimcollateralsurplus.md)
+
+## PopulatableEthersLiquity.claimCollateralSurplus() method
+
+Signature:
+
+```typescript
+claimCollateralSurplus(overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.closetrove.md b/docs/sdk/lib-ethers.populatableethersliquity.closetrove.md
new file mode 100644
index 000000000..28703adf8
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.closetrove.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [closeTrove](./lib-ethers.populatableethersliquity.closetrove.md)
+
+## PopulatableEthersLiquity.closeTrove() method
+
+Signature:
+
+```typescript
+closeTrove(overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[TroveClosureDetails](./lib-base.troveclosuredetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.depositcollateral.md b/docs/sdk/lib-ethers.populatableethersliquity.depositcollateral.md
new file mode 100644
index 000000000..bbfdcd8ac
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.depositcollateral.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [depositCollateral](./lib-ethers.populatableethersliquity.depositcollateral.md)
+
+## PopulatableEthersLiquity.depositCollateral() method
+
+Signature:
+
+```typescript
+depositCollateral(amount: Decimalish, optionalParams?: _TroveAdjustmentOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| optionalParams | \_TroveAdjustmentOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.depositlusdinstabilitypool.md b/docs/sdk/lib-ethers.populatableethersliquity.depositlusdinstabilitypool.md
new file mode 100644
index 000000000..c0dae7368
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.depositlusdinstabilitypool.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [depositLUSDInStabilityPool](./lib-ethers.populatableethersliquity.depositlusdinstabilitypool.md)
+
+## PopulatableEthersLiquity.depositLUSDInStabilityPool() method
+
+Signature:
+
+```typescript
+depositLUSDInStabilityPool(amount: Decimalish, frontendTag?: string, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| frontendTag | string | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[StabilityDepositChangeDetails](./lib-base.stabilitydepositchangedetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.liquidate.md b/docs/sdk/lib-ethers.populatableethersliquity.liquidate.md
new file mode 100644
index 000000000..ee2abfa51
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.liquidate.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [liquidate](./lib-ethers.populatableethersliquity.liquidate.md)
+
+## PopulatableEthersLiquity.liquidate() method
+
+Signature:
+
+```typescript
+liquidate(address: string, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[LiquidationDetails](./lib-base.liquidationdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.liquidateupto.md b/docs/sdk/lib-ethers.populatableethersliquity.liquidateupto.md
new file mode 100644
index 000000000..84b28989d
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.liquidateupto.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [liquidateUpTo](./lib-ethers.populatableethersliquity.liquidateupto.md)
+
+## PopulatableEthersLiquity.liquidateUpTo() method
+
+Signature:
+
+```typescript
+liquidateUpTo(maximumNumberOfTrovesToLiquidate: number, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| maximumNumberOfTrovesToLiquidate | number | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[LiquidationDetails](./lib-base.liquidationdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.md b/docs/sdk/lib-ethers.populatableethersliquity.md
new file mode 100644
index 000000000..91b53fcaf
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.md
@@ -0,0 +1,42 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md)
+
+## PopulatableEthersLiquity class
+
+Signature:
+
+```typescript
+export declare class PopulatableEthersLiquity extends PopulatableEthersLiquityBase implements _Populatable<_Hinted, TransactionReceipt, TransactionResponse, PopulatedTransaction>
+```
+Extends: PopulatableEthersLiquityBase
+
+Implements: \_Populatable<\_Hinted<[TransactableLiquity](./lib-base.transactableliquity.md)>, TransactionReceipt, TransactionResponse, PopulatedTransaction>
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [adjustTrove(params, optionalParams, overrides)](./lib-ethers.populatableethersliquity.adjusttrove.md) | | |
+| [borrowLUSD(amount, optionalParams, overrides)](./lib-ethers.populatableethersliquity.borrowlusd.md) | | |
+| [claimCollateralSurplus(overrides)](./lib-ethers.populatableethersliquity.claimcollateralsurplus.md) | | |
+| [closeTrove(overrides)](./lib-ethers.populatableethersliquity.closetrove.md) | | |
+| [depositCollateral(amount, optionalParams, overrides)](./lib-ethers.populatableethersliquity.depositcollateral.md) | | |
+| [depositLUSDInStabilityPool(amount, frontendTag, overrides)](./lib-ethers.populatableethersliquity.depositlusdinstabilitypool.md) | | |
+| [liquidate(address, overrides)](./lib-ethers.populatableethersliquity.liquidate.md) | | |
+| [liquidateUpTo(maximumNumberOfTrovesToLiquidate, overrides)](./lib-ethers.populatableethersliquity.liquidateupto.md) | | |
+| [openTrove(params, optionalParams, overrides)](./lib-ethers.populatableethersliquity.opentrove.md) | | Open a new Trove. |
+| [redeemLUSD(amount, optionalParams, overrides)](./lib-ethers.populatableethersliquity.redeemlusd.md) | | |
+| [registerFrontend(kickbackRate, overrides)](./lib-ethers.populatableethersliquity.registerfrontend.md) | | |
+| [repayLUSD(amount, optionalParams, overrides)](./lib-ethers.populatableethersliquity.repaylusd.md) | | |
+| [sendLQTY(toAddress, amount, overrides)](./lib-ethers.populatableethersliquity.sendlqty.md) | | |
+| [sendLUSD(toAddress, amount, overrides)](./lib-ethers.populatableethersliquity.sendlusd.md) | | |
+| [setPrice(price, overrides)](./lib-ethers.populatableethersliquity.setprice.md) | | |
+| [stakeLQTY(amount, overrides)](./lib-ethers.populatableethersliquity.stakelqty.md) | | |
+| [transferCollateralGainToTrove(optionalParams, overrides)](./lib-ethers.populatableethersliquity.transfercollateralgaintotrove.md) | | |
+| [unstakeLQTY(amount, overrides)](./lib-ethers.populatableethersliquity.unstakelqty.md) | | |
+| [withdrawCollateral(amount, optionalParams, overrides)](./lib-ethers.populatableethersliquity.withdrawcollateral.md) | | |
+| [withdrawGainsFromStabilityPool(overrides)](./lib-ethers.populatableethersliquity.withdrawgainsfromstabilitypool.md) | | |
+| [withdrawGainsFromStaking(overrides)](./lib-ethers.populatableethersliquity.withdrawgainsfromstaking.md) | | |
+| [withdrawLUSDFromStabilityPool(amount, overrides)](./lib-ethers.populatableethersliquity.withdrawlusdfromstabilitypool.md) | | |
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.opentrove.md b/docs/sdk/lib-ethers.populatableethersliquity.opentrove.md
new file mode 100644
index 000000000..3eca6b1a6
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.opentrove.md
@@ -0,0 +1,28 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [openTrove](./lib-ethers.populatableethersliquity.opentrove.md)
+
+## PopulatableEthersLiquity.openTrove() method
+
+Open a new Trove.
+
+Signature:
+
+```typescript
+openTrove(params: TroveCreationParams, optionalParams?: _TroveCreationOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| params | [TroveCreationParams](./lib-base.trovecreationparams.md)<[Decimalish](./decimal.decimalish.md)> | |
+| optionalParams | \_TroveCreationOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[TroveCreationDetails](./lib-base.trovecreationdetails.md)>>
+
+The details of the Trove creation.
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.redeemlusd.md b/docs/sdk/lib-ethers.populatableethersliquity.redeemlusd.md
new file mode 100644
index 000000000..5a73b6f2a
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.redeemlusd.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [redeemLUSD](./lib-ethers.populatableethersliquity.redeemlusd.md)
+
+## PopulatableEthersLiquity.redeemLUSD() method
+
+Signature:
+
+```typescript
+redeemLUSD(amount: Decimalish, optionalParams?: _RedemptionOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| optionalParams | \_RedemptionOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[RedemptionDetails](./lib-base.redemptiondetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.registerfrontend.md b/docs/sdk/lib-ethers.populatableethersliquity.registerfrontend.md
new file mode 100644
index 000000000..5ee0c38ba
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.registerfrontend.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [registerFrontend](./lib-ethers.populatableethersliquity.registerfrontend.md)
+
+## PopulatableEthersLiquity.registerFrontend() method
+
+Signature:
+
+```typescript
+registerFrontend(kickbackRate: Decimalish, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| kickbackRate | [Decimalish](./decimal.decimalish.md) | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.repaylusd.md b/docs/sdk/lib-ethers.populatableethersliquity.repaylusd.md
new file mode 100644
index 000000000..131159f97
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.repaylusd.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [repayLUSD](./lib-ethers.populatableethersliquity.repaylusd.md)
+
+## PopulatableEthersLiquity.repayLUSD() method
+
+Signature:
+
+```typescript
+repayLUSD(amount: Decimalish, optionalParams?: _TroveAdjustmentOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| optionalParams | \_TroveAdjustmentOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.sendlqty.md b/docs/sdk/lib-ethers.populatableethersliquity.sendlqty.md
new file mode 100644
index 000000000..f5870dd56
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.sendlqty.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [sendLQTY](./lib-ethers.populatableethersliquity.sendlqty.md)
+
+## PopulatableEthersLiquity.sendLQTY() method
+
+Signature:
+
+```typescript
+sendLQTY(toAddress: string, amount: Decimalish, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| toAddress | string | |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.sendlusd.md b/docs/sdk/lib-ethers.populatableethersliquity.sendlusd.md
new file mode 100644
index 000000000..de5465719
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.sendlusd.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [sendLUSD](./lib-ethers.populatableethersliquity.sendlusd.md)
+
+## PopulatableEthersLiquity.sendLUSD() method
+
+Signature:
+
+```typescript
+sendLUSD(toAddress: string, amount: Decimalish, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| toAddress | string | |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.setprice.md b/docs/sdk/lib-ethers.populatableethersliquity.setprice.md
new file mode 100644
index 000000000..b6918ac04
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.setprice.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [setPrice](./lib-ethers.populatableethersliquity.setprice.md)
+
+## PopulatableEthersLiquity.setPrice() method
+
+Signature:
+
+```typescript
+setPrice(price: Decimalish, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| price | [Decimalish](./decimal.decimalish.md) | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.stakelqty.md b/docs/sdk/lib-ethers.populatableethersliquity.stakelqty.md
new file mode 100644
index 000000000..5815bf405
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.stakelqty.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [stakeLQTY](./lib-ethers.populatableethersliquity.stakelqty.md)
+
+## PopulatableEthersLiquity.stakeLQTY() method
+
+Signature:
+
+```typescript
+stakeLQTY(amount: Decimalish, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.transfercollateralgaintotrove.md b/docs/sdk/lib-ethers.populatableethersliquity.transfercollateralgaintotrove.md
new file mode 100644
index 000000000..dc627cbe4
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.transfercollateralgaintotrove.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [transferCollateralGainToTrove](./lib-ethers.populatableethersliquity.transfercollateralgaintotrove.md)
+
+## PopulatableEthersLiquity.transferCollateralGainToTrove() method
+
+Signature:
+
+```typescript
+transferCollateralGainToTrove(optionalParams?: _CollateralGainTransferOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| optionalParams | \_CollateralGainTransferOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[CollateralGainTransferDetails](./lib-base.collateralgaintransferdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.unstakelqty.md b/docs/sdk/lib-ethers.populatableethersliquity.unstakelqty.md
new file mode 100644
index 000000000..e55f8f07b
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.unstakelqty.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [unstakeLQTY](./lib-ethers.populatableethersliquity.unstakelqty.md)
+
+## PopulatableEthersLiquity.unstakeLQTY() method
+
+Signature:
+
+```typescript
+unstakeLQTY(amount: Decimalish, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.withdrawcollateral.md b/docs/sdk/lib-ethers.populatableethersliquity.withdrawcollateral.md
new file mode 100644
index 000000000..da12a0e43
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.withdrawcollateral.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [withdrawCollateral](./lib-ethers.populatableethersliquity.withdrawcollateral.md)
+
+## PopulatableEthersLiquity.withdrawCollateral() method
+
+Signature:
+
+```typescript
+withdrawCollateral(amount: Decimalish, optionalParams?: _TroveAdjustmentOptionalParams, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| optionalParams | \_TroveAdjustmentOptionalParams | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[TroveAdjustmentDetails](./lib-base.troveadjustmentdetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.withdrawgainsfromstabilitypool.md b/docs/sdk/lib-ethers.populatableethersliquity.withdrawgainsfromstabilitypool.md
new file mode 100644
index 000000000..5fb79c0c6
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.withdrawgainsfromstabilitypool.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [withdrawGainsFromStabilityPool](./lib-ethers.populatableethersliquity.withdrawgainsfromstabilitypool.md)
+
+## PopulatableEthersLiquity.withdrawGainsFromStabilityPool() method
+
+Signature:
+
+```typescript
+withdrawGainsFromStabilityPool(overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[StabilityPoolGainsWithdrawalDetails](./lib-base.stabilitypoolgainswithdrawaldetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.withdrawgainsfromstaking.md b/docs/sdk/lib-ethers.populatableethersliquity.withdrawgainsfromstaking.md
new file mode 100644
index 000000000..32363a2d2
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.withdrawgainsfromstaking.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [withdrawGainsFromStaking](./lib-ethers.populatableethersliquity.withdrawgainsfromstaking.md)
+
+## PopulatableEthersLiquity.withdrawGainsFromStaking() method
+
+Signature:
+
+```typescript
+withdrawGainsFromStaking(overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<void>>
+
diff --git a/docs/sdk/lib-ethers.populatableethersliquity.withdrawlusdfromstabilitypool.md b/docs/sdk/lib-ethers.populatableethersliquity.withdrawlusdfromstabilitypool.md
new file mode 100644
index 000000000..3f008548e
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatableethersliquity.withdrawlusdfromstabilitypool.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatableEthersLiquity](./lib-ethers.populatableethersliquity.md) > [withdrawLUSDFromStabilityPool](./lib-ethers.populatableethersliquity.withdrawlusdfromstabilitypool.md)
+
+## PopulatableEthersLiquity.withdrawLUSDFromStabilityPool() method
+
+Signature:
+
+```typescript
+withdrawLUSDFromStabilityPool(amount: Decimalish, overrides?: EthersTransactionOverrides): Promise>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| amount | [Decimalish](./decimal.decimalish.md) | |
+| overrides | [EthersTransactionOverrides](./lib-ethers.etherstransactionoverrides.md) | |
+
+Returns:
+
+Promise<[PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)<[StabilityDepositChangeDetails](./lib-base.stabilitydepositchangedetails.md)>>
+
diff --git a/docs/sdk/lib-ethers.populatedetherstransaction._constructor_.md b/docs/sdk/lib-ethers.populatedetherstransaction._constructor_.md
new file mode 100644
index 000000000..712becd2d
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatedetherstransaction._constructor_.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md) > [(constructor)](./lib-ethers.populatedetherstransaction._constructor_.md)
+
+## PopulatedEthersTransaction.(constructor)
+
+Constructs a new instance of the `PopulatedEthersTransaction` class
+
+Signature:
+
+```typescript
+constructor(rawPopulatedTransaction: PopulatedTransaction, parse: (rawReceipt: TransactionReceipt) => T, signer: Signer, contracts: LiquityContracts);
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| rawPopulatedTransaction | PopulatedTransaction | |
+| parse | (rawReceipt: TransactionReceipt) => T | |
+| signer | Signer | |
+| contracts | [LiquityContracts](./lib-ethers.liquitycontracts.md) | |
+
diff --git a/docs/sdk/lib-ethers.populatedetherstransaction.md b/docs/sdk/lib-ethers.populatedetherstransaction.md
new file mode 100644
index 000000000..2c18e2848
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatedetherstransaction.md
@@ -0,0 +1,31 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md)
+
+## PopulatedEthersTransaction class
+
+Signature:
+
+```typescript
+export declare class PopulatedEthersTransaction implements PopulatedLiquityTransaction>
+```
+Implements: [PopulatedLiquityTransaction](./lib-base.populatedliquitytransaction.md)<PopulatedTransaction, [SentEthersTransaction](./lib-ethers.sentetherstransaction.md)<T>>
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(rawPopulatedTransaction, parse, signer, contracts)](./lib-ethers.populatedetherstransaction._constructor_.md) | | Constructs a new instance of the PopulatedEthersTransaction
class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [rawPopulatedTransaction](./lib-ethers.populatedetherstransaction.rawpopulatedtransaction.md) | | PopulatedTransaction | |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [send()](./lib-ethers.populatedetherstransaction.send.md) | | |
+
diff --git a/docs/sdk/lib-ethers.populatedetherstransaction.rawpopulatedtransaction.md b/docs/sdk/lib-ethers.populatedetherstransaction.rawpopulatedtransaction.md
new file mode 100644
index 000000000..903b53a91
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatedetherstransaction.rawpopulatedtransaction.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md) > [rawPopulatedTransaction](./lib-ethers.populatedetherstransaction.rawpopulatedtransaction.md)
+
+## PopulatedEthersTransaction.rawPopulatedTransaction property
+
+Signature:
+
+```typescript
+readonly rawPopulatedTransaction: PopulatedTransaction;
+```
diff --git a/docs/sdk/lib-ethers.populatedetherstransaction.send.md b/docs/sdk/lib-ethers.populatedetherstransaction.send.md
new file mode 100644
index 000000000..710c0f9fc
--- /dev/null
+++ b/docs/sdk/lib-ethers.populatedetherstransaction.send.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [PopulatedEthersTransaction](./lib-ethers.populatedetherstransaction.md) > [send](./lib-ethers.populatedetherstransaction.send.md)
+
+## PopulatedEthersTransaction.send() method
+
+Signature:
+
+```typescript
+send(): Promise>;
+```
+Returns:
+
+Promise<[SentEthersTransaction](./lib-ethers.sentetherstransaction.md)<T>>
+
diff --git a/docs/sdk/lib-ethers.pricefeedistestnet.md b/docs/sdk/lib-ethers.pricefeedistestnet.md
new file mode 100644
index 000000000..2f663ed3c
--- /dev/null
+++ b/docs/sdk/lib-ethers.pricefeedistestnet.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [priceFeedIsTestnet](./lib-ethers.pricefeedistestnet.md)
+
+## priceFeedIsTestnet variable
+
+Signature:
+
+```typescript
+priceFeedIsTestnet: (priceFeed: PriceFeed | PriceFeedTestnet) => priceFeed is PriceFeedTestnet
+```
diff --git a/docs/sdk/lib-ethers.promisable.md b/docs/sdk/lib-ethers.promisable.md
new file mode 100644
index 000000000..80eba3368
--- /dev/null
+++ b/docs/sdk/lib-ethers.promisable.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [Promisable](./lib-ethers.promisable.md)
+
+## Promisable type
+
+Signature:
+
+```typescript
+export declare type Promisable = {
+ [P in keyof T]: T[P] | Promise;
+};
+```
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getcollateralsurplusbalance.md b/docs/sdk/lib-ethers.readableethersliquity.getcollateralsurplusbalance.md
new file mode 100644
index 000000000..fb7dfcdb9
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getcollateralsurplusbalance.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getCollateralSurplusBalance](./lib-ethers.readableethersliquity.getcollateralsurplusbalance.md)
+
+## ReadableEthersLiquity.getCollateralSurplusBalance() method
+
+Signature:
+
+```typescript
+getCollateralSurplusBalance(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getfees.md b/docs/sdk/lib-ethers.readableethersliquity.getfees.md
new file mode 100644
index 000000000..752e32476
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getfees.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getFees](./lib-ethers.readableethersliquity.getfees.md)
+
+## ReadableEthersLiquity.getFees() method
+
+Signature:
+
+```typescript
+getFees(overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Fees](./lib-base.fees.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getfirsttroves.md b/docs/sdk/lib-ethers.readableethersliquity.getfirsttroves.md
new file mode 100644
index 000000000..1aac578c7
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getfirsttroves.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getFirstTroves](./lib-ethers.readableethersliquity.getfirsttroves.md)
+
+## ReadableEthersLiquity.getFirstTroves() method
+
+Signature:
+
+```typescript
+getFirstTroves(startIdx: number, numberOfTroves: number, overrides?: EthersCallOverrides): Promise<[string, TroveWithPendingRewards][]>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| startIdx | number | |
+| numberOfTroves | number | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<\[string, [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)\]\[\]>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getfrontendstatus.md b/docs/sdk/lib-ethers.readableethersliquity.getfrontendstatus.md
new file mode 100644
index 000000000..b199e5643
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getfrontendstatus.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getFrontendStatus](./lib-ethers.readableethersliquity.getfrontendstatus.md)
+
+## ReadableEthersLiquity.getFrontendStatus() method
+
+Signature:
+
+```typescript
+getFrontendStatus(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[FrontendStatus](./lib-base.frontendstatus.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getlasttroves.md b/docs/sdk/lib-ethers.readableethersliquity.getlasttroves.md
new file mode 100644
index 000000000..e081239d2
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getlasttroves.md
@@ -0,0 +1,24 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getLastTroves](./lib-ethers.readableethersliquity.getlasttroves.md)
+
+## ReadableEthersLiquity.getLastTroves() method
+
+Signature:
+
+```typescript
+getLastTroves(startIdx: number, numberOfTroves: number, overrides?: EthersCallOverrides): Promise<[string, TroveWithPendingRewards][]>;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| startIdx | number | |
+| numberOfTroves | number | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<\[string, [TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)\]\[\]>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getlqtybalance.md b/docs/sdk/lib-ethers.readableethersliquity.getlqtybalance.md
new file mode 100644
index 000000000..6c18f7c85
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getlqtybalance.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getLQTYBalance](./lib-ethers.readableethersliquity.getlqtybalance.md)
+
+## ReadableEthersLiquity.getLQTYBalance() method
+
+Signature:
+
+```typescript
+getLQTYBalance(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getlqtystake.md b/docs/sdk/lib-ethers.readableethersliquity.getlqtystake.md
new file mode 100644
index 000000000..f806e7a53
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getlqtystake.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getLQTYStake](./lib-ethers.readableethersliquity.getlqtystake.md)
+
+## ReadableEthersLiquity.getLQTYStake() method
+
+Signature:
+
+```typescript
+getLQTYStake(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[LQTYStake](./lib-base.lqtystake.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getlusdbalance.md b/docs/sdk/lib-ethers.readableethersliquity.getlusdbalance.md
new file mode 100644
index 000000000..1157e7dd1
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getlusdbalance.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getLUSDBalance](./lib-ethers.readableethersliquity.getlusdbalance.md)
+
+## ReadableEthersLiquity.getLUSDBalance() method
+
+Signature:
+
+```typescript
+getLUSDBalance(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getlusdinstabilitypool.md b/docs/sdk/lib-ethers.readableethersliquity.getlusdinstabilitypool.md
new file mode 100644
index 000000000..e3a5772c7
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getlusdinstabilitypool.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getLUSDInStabilityPool](./lib-ethers.readableethersliquity.getlusdinstabilitypool.md)
+
+## ReadableEthersLiquity.getLUSDInStabilityPool() method
+
+Signature:
+
+```typescript
+getLUSDInStabilityPool(overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getnumberoftroves.md b/docs/sdk/lib-ethers.readableethersliquity.getnumberoftroves.md
new file mode 100644
index 000000000..e50fe1b23
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getnumberoftroves.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getNumberOfTroves](./lib-ethers.readableethersliquity.getnumberoftroves.md)
+
+## ReadableEthersLiquity.getNumberOfTroves() method
+
+Signature:
+
+```typescript
+getNumberOfTroves(overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<number>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getprice.md b/docs/sdk/lib-ethers.readableethersliquity.getprice.md
new file mode 100644
index 000000000..502e88c03
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getprice.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getPrice](./lib-ethers.readableethersliquity.getprice.md)
+
+## ReadableEthersLiquity.getPrice() method
+
+Signature:
+
+```typescript
+getPrice(overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.getstabilitydeposit.md b/docs/sdk/lib-ethers.readableethersliquity.getstabilitydeposit.md
new file mode 100644
index 000000000..711fc28a4
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.getstabilitydeposit.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getStabilityDeposit](./lib-ethers.readableethersliquity.getstabilitydeposit.md)
+
+## ReadableEthersLiquity.getStabilityDeposit() method
+
+Signature:
+
+```typescript
+getStabilityDeposit(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[StabilityDeposit](./lib-base.stabilitydeposit.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.gettotal.md b/docs/sdk/lib-ethers.readableethersliquity.gettotal.md
new file mode 100644
index 000000000..e9475a7a1
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.gettotal.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getTotal](./lib-ethers.readableethersliquity.gettotal.md)
+
+## ReadableEthersLiquity.getTotal() method
+
+Signature:
+
+```typescript
+getTotal(overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Trove](./lib-base.trove.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.gettotalredistributed.md b/docs/sdk/lib-ethers.readableethersliquity.gettotalredistributed.md
new file mode 100644
index 000000000..256a7421a
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.gettotalredistributed.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getTotalRedistributed](./lib-ethers.readableethersliquity.gettotalredistributed.md)
+
+## ReadableEthersLiquity.getTotalRedistributed() method
+
+Signature:
+
+```typescript
+getTotalRedistributed(overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Trove](./lib-base.trove.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.gettotalstakedlqty.md b/docs/sdk/lib-ethers.readableethersliquity.gettotalstakedlqty.md
new file mode 100644
index 000000000..840d00f88
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.gettotalstakedlqty.md
@@ -0,0 +1,22 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getTotalStakedLQTY](./lib-ethers.readableethersliquity.gettotalstakedlqty.md)
+
+## ReadableEthersLiquity.getTotalStakedLQTY() method
+
+Signature:
+
+```typescript
+getTotalStakedLQTY(overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Decimal](./decimal.decimal.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.gettrove.md b/docs/sdk/lib-ethers.readableethersliquity.gettrove.md
new file mode 100644
index 000000000..7001aa90b
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.gettrove.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getTrove](./lib-ethers.readableethersliquity.gettrove.md)
+
+## ReadableEthersLiquity.getTrove() method
+
+Signature:
+
+```typescript
+getTrove(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[Trove](./lib-base.trove.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.gettrovewithoutrewards.md b/docs/sdk/lib-ethers.readableethersliquity.gettrovewithoutrewards.md
new file mode 100644
index 000000000..ccb50d6a3
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.gettrovewithoutrewards.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md) > [getTroveWithoutRewards](./lib-ethers.readableethersliquity.gettrovewithoutrewards.md)
+
+## ReadableEthersLiquity.getTroveWithoutRewards() method
+
+Signature:
+
+```typescript
+getTroveWithoutRewards(address?: string, overrides?: EthersCallOverrides): Promise;
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| address | string | |
+| overrides | [EthersCallOverrides](./lib-ethers.etherscalloverrides.md) | |
+
+Returns:
+
+Promise<[TroveWithPendingRewards](./lib-base.trovewithpendingrewards.md)>
+
diff --git a/docs/sdk/lib-ethers.readableethersliquity.md b/docs/sdk/lib-ethers.readableethersliquity.md
new file mode 100644
index 000000000..18cf495ee
--- /dev/null
+++ b/docs/sdk/lib-ethers.readableethersliquity.md
@@ -0,0 +1,37 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [ReadableEthersLiquity](./lib-ethers.readableethersliquity.md)
+
+## ReadableEthersLiquity class
+
+Signature:
+
+```typescript
+export declare class ReadableEthersLiquity extends EthersLiquityBase implements ReadableLiquity
+```
+Extends: EthersLiquityBase
+
+Implements: [ReadableLiquity](./lib-base.readableliquity.md)
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [getCollateralSurplusBalance(address, overrides)](./lib-ethers.readableethersliquity.getcollateralsurplusbalance.md) | | |
+| [getFees(overrides)](./lib-ethers.readableethersliquity.getfees.md) | | |
+| [getFirstTroves(startIdx, numberOfTroves, overrides)](./lib-ethers.readableethersliquity.getfirsttroves.md) | | |
+| [getFrontendStatus(address, overrides)](./lib-ethers.readableethersliquity.getfrontendstatus.md) | | |
+| [getLastTroves(startIdx, numberOfTroves, overrides)](./lib-ethers.readableethersliquity.getlasttroves.md) | | |
+| [getLQTYBalance(address, overrides)](./lib-ethers.readableethersliquity.getlqtybalance.md) | | |
+| [getLQTYStake(address, overrides)](./lib-ethers.readableethersliquity.getlqtystake.md) | | |
+| [getLUSDBalance(address, overrides)](./lib-ethers.readableethersliquity.getlusdbalance.md) | | |
+| [getLUSDInStabilityPool(overrides)](./lib-ethers.readableethersliquity.getlusdinstabilitypool.md) | | |
+| [getNumberOfTroves(overrides)](./lib-ethers.readableethersliquity.getnumberoftroves.md) | | |
+| [getPrice(overrides)](./lib-ethers.readableethersliquity.getprice.md) | | |
+| [getStabilityDeposit(address, overrides)](./lib-ethers.readableethersliquity.getstabilitydeposit.md) | | |
+| [getTotal(overrides)](./lib-ethers.readableethersliquity.gettotal.md) | | |
+| [getTotalRedistributed(overrides)](./lib-ethers.readableethersliquity.gettotalredistributed.md) | | |
+| [getTotalStakedLQTY(overrides)](./lib-ethers.readableethersliquity.gettotalstakedlqty.md) | | |
+| [getTrove(address, overrides)](./lib-ethers.readableethersliquity.gettrove.md) | | |
+| [getTroveWithoutRewards(address, overrides)](./lib-ethers.readableethersliquity.gettrovewithoutrewards.md) | | |
+
diff --git a/docs/sdk/lib-ethers.redeemmaxiterations.md b/docs/sdk/lib-ethers.redeemmaxiterations.md
new file mode 100644
index 000000000..7a044d442
--- /dev/null
+++ b/docs/sdk/lib-ethers.redeemmaxiterations.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [redeemMaxIterations](./lib-ethers.redeemmaxiterations.md)
+
+## redeemMaxIterations variable
+
+Signature:
+
+```typescript
+redeemMaxIterations = 68
+```
diff --git a/docs/sdk/lib-ethers.sendableethersliquity.md b/docs/sdk/lib-ethers.sendableethersliquity.md
new file mode 100644
index 000000000..194082989
--- /dev/null
+++ b/docs/sdk/lib-ethers.sendableethersliquity.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [SendableEthersLiquity](./lib-ethers.sendableethersliquity.md)
+
+## SendableEthersLiquity variable
+
+Signature:
+
+```typescript
+SendableEthersLiquity: new (populatable: PopulatableEthersLiquity) => SendableEthersLiquity
+```
diff --git a/docs/sdk/lib-ethers.sentetherstransaction._constructor_.md b/docs/sdk/lib-ethers.sentetherstransaction._constructor_.md
new file mode 100644
index 000000000..f11a1a7df
--- /dev/null
+++ b/docs/sdk/lib-ethers.sentetherstransaction._constructor_.md
@@ -0,0 +1,23 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [SentEthersTransaction](./lib-ethers.sentetherstransaction.md) > [(constructor)](./lib-ethers.sentetherstransaction._constructor_.md)
+
+## SentEthersTransaction.(constructor)
+
+Constructs a new instance of the `SentEthersTransaction` class
+
+Signature:
+
+```typescript
+constructor(rawSentTransaction: TransactionResponse, parse: (rawReceipt: TransactionReceipt) => T, provider: Provider, contracts: LiquityContracts);
+```
+
+## Parameters
+
+| Parameter | Type | Description |
+| --- | --- | --- |
+| rawSentTransaction | TransactionResponse | |
+| parse | (rawReceipt: TransactionReceipt) => T | |
+| provider | Provider | |
+| contracts | [LiquityContracts](./lib-ethers.liquitycontracts.md) | |
+
diff --git a/docs/sdk/lib-ethers.sentetherstransaction.getreceipt.md b/docs/sdk/lib-ethers.sentetherstransaction.getreceipt.md
new file mode 100644
index 000000000..fb473b2be
--- /dev/null
+++ b/docs/sdk/lib-ethers.sentetherstransaction.getreceipt.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [SentEthersTransaction](./lib-ethers.sentetherstransaction.md) > [getReceipt](./lib-ethers.sentetherstransaction.getreceipt.md)
+
+## SentEthersTransaction.getReceipt() method
+
+Signature:
+
+```typescript
+getReceipt(): Promise>;
+```
+Returns:
+
+Promise<[LiquityReceipt](./lib-base.liquityreceipt.md)<TransactionReceipt, T>>
+
diff --git a/docs/sdk/lib-ethers.sentetherstransaction.md b/docs/sdk/lib-ethers.sentetherstransaction.md
new file mode 100644
index 000000000..e01e9aa31
--- /dev/null
+++ b/docs/sdk/lib-ethers.sentetherstransaction.md
@@ -0,0 +1,32 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [SentEthersTransaction](./lib-ethers.sentetherstransaction.md)
+
+## SentEthersTransaction class
+
+Signature:
+
+```typescript
+export declare class SentEthersTransaction implements SentLiquityTransaction>
+```
+Implements: [SentLiquityTransaction](./lib-base.sentliquitytransaction.md)<TransactionResponse, [LiquityReceipt](./lib-base.liquityreceipt.md)<TransactionReceipt, T>>
+
+## Constructors
+
+| Constructor | Modifiers | Description |
+| --- | --- | --- |
+| [(constructor)(rawSentTransaction, parse, provider, contracts)](./lib-ethers.sentetherstransaction._constructor_.md) | | Constructs a new instance of the SentEthersTransaction
class |
+
+## Properties
+
+| Property | Modifiers | Type | Description |
+| --- | --- | --- | --- |
+| [rawSentTransaction](./lib-ethers.sentetherstransaction.rawsenttransaction.md) | | TransactionResponse | |
+
+## Methods
+
+| Method | Modifiers | Description |
+| --- | --- | --- |
+| [getReceipt()](./lib-ethers.sentetherstransaction.getreceipt.md) | | |
+| [waitForReceipt()](./lib-ethers.sentetherstransaction.waitforreceipt.md) | | |
+
diff --git a/docs/sdk/lib-ethers.sentetherstransaction.rawsenttransaction.md b/docs/sdk/lib-ethers.sentetherstransaction.rawsenttransaction.md
new file mode 100644
index 000000000..cd9e4a3d5
--- /dev/null
+++ b/docs/sdk/lib-ethers.sentetherstransaction.rawsenttransaction.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [SentEthersTransaction](./lib-ethers.sentetherstransaction.md) > [rawSentTransaction](./lib-ethers.sentetherstransaction.rawsenttransaction.md)
+
+## SentEthersTransaction.rawSentTransaction property
+
+Signature:
+
+```typescript
+readonly rawSentTransaction: TransactionResponse;
+```
diff --git a/docs/sdk/lib-ethers.sentetherstransaction.waitforreceipt.md b/docs/sdk/lib-ethers.sentetherstransaction.waitforreceipt.md
new file mode 100644
index 000000000..74e196d31
--- /dev/null
+++ b/docs/sdk/lib-ethers.sentetherstransaction.waitforreceipt.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [SentEthersTransaction](./lib-ethers.sentetherstransaction.md) > [waitForReceipt](./lib-ethers.sentetherstransaction.waitforreceipt.md)
+
+## SentEthersTransaction.waitForReceipt() method
+
+Signature:
+
+```typescript
+waitForReceipt(): Promise>;
+```
+Returns:
+
+Promise<[MinedReceipt](./lib-base.minedreceipt.md)<TransactionReceipt, T>>
+
diff --git a/docs/sdk/lib-ethers.transactableethersliquity.md b/docs/sdk/lib-ethers.transactableethersliquity.md
new file mode 100644
index 000000000..4b6d358b8
--- /dev/null
+++ b/docs/sdk/lib-ethers.transactableethersliquity.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [TransactableEthersLiquity](./lib-ethers.transactableethersliquity.md)
+
+## TransactableEthersLiquity variable
+
+Signature:
+
+```typescript
+TransactableEthersLiquity: new (sendable: SendableEthersLiquity) => TransactableEthersLiquity
+```
diff --git a/docs/sdk/lib-ethers.typedcontract.md b/docs/sdk/lib-ethers.typedcontract.md
new file mode 100644
index 000000000..48e8d45c3
--- /dev/null
+++ b/docs/sdk/lib-ethers.typedcontract.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [TypedContract](./lib-ethers.typedcontract.md)
+
+## TypedContract type
+
+Signature:
+
+```typescript
+export declare type TypedContract = TypeSafeContract & U & {
+ readonly estimateAndPopulate: {
+ [P in keyof U]: U[P] extends (...args: [...infer A, infer O | undefined]) => unknown ? EstimatedContractFunction : never;
+ };
+};
+```
diff --git a/docs/sdk/lib-ethers.typedliquitycontract.md b/docs/sdk/lib-ethers.typedliquitycontract.md
new file mode 100644
index 000000000..e77e8ca7a
--- /dev/null
+++ b/docs/sdk/lib-ethers.typedliquitycontract.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [TypedLiquityContract](./lib-ethers.typedliquitycontract.md)
+
+## TypedLiquityContract type
+
+Signature:
+
+```typescript
+export declare type TypedLiquityContract = TypedContract;
+```
+References: [TypedContract](./lib-ethers.typedcontract.md)
+
diff --git a/docs/sdk/lib-ethers.typedlogdescription.args.md b/docs/sdk/lib-ethers.typedlogdescription.args.md
new file mode 100644
index 000000000..73af93901
--- /dev/null
+++ b/docs/sdk/lib-ethers.typedlogdescription.args.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [TypedLogDescription](./lib-ethers.typedlogdescription.md) > [args](./lib-ethers.typedlogdescription.args.md)
+
+## TypedLogDescription.args property
+
+Signature:
+
+```typescript
+args: T;
+```
diff --git a/docs/sdk/lib-ethers.typedlogdescription.md b/docs/sdk/lib-ethers.typedlogdescription.md
new file mode 100644
index 000000000..88cfe9e7d
--- /dev/null
+++ b/docs/sdk/lib-ethers.typedlogdescription.md
@@ -0,0 +1,19 @@
+
+
+[Home](./index.md) > [@liquity/lib-ethers](./lib-ethers.md) > [TypedLogDescription](./lib-ethers.typedlogdescription.md)
+
+## TypedLogDescription interface
+
+Signature:
+
+```typescript
+export interface TypedLogDescription extends Omit
+```
+Extends: Omit<LogDescription, "args">
+
+## Properties
+
+| Property | Type | Description |
+| --- | --- | --- |
+| [args](./lib-ethers.typedlogdescription.args.md) | T | |
+
diff --git a/package.json b/package.json
index ce9b1d6be..15ad7fcf2 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"deploy": "yarn workspace @liquity/lib-ethers hardhat deploy",
"docs": "run-s docs:*",
"docs:collect-sdk-apis": "node scripts/collect-sdk-apis.js",
- "docs:api-documenter": "api-documenter markdown -i temp/sdk-apis -o docs/sdk",
+ "docs:api-documenter": "api-documenter generate -i temp/sdk-apis -o docs/sdk",
"fuzzer": "yarn workspace @liquity/fuzzer fuzzer",
"prepare": "run-s prepare:*",
"prepare:contracts": "yarn workspace @liquity/contracts prepare",
diff --git a/packages/decimal/api-extractor.json b/packages/decimal/api-extractor.json
new file mode 100644
index 000000000..2069b8ac3
--- /dev/null
+++ b/packages/decimal/api-extractor.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
+ "extends": "../../api-extractor.base.json"
+}
diff --git a/packages/decimal/etc/decimal.api.md b/packages/decimal/etc/decimal.api.md
new file mode 100644
index 000000000..1b2854be7
--- /dev/null
+++ b/packages/decimal/etc/decimal.api.md
@@ -0,0 +1,127 @@
+## API Report File for "@liquity/decimal"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { BigNumber } from '@ethersproject/bignumber';
+import { BigNumberish } from '@ethersproject/bignumber';
+
+// @public (undocumented)
+export class Decimal {
+ constructor(bigNumber: BigNumber);
+ // (undocumented)
+ get absoluteValue(): this;
+ // (undocumented)
+ add(addend: Decimalish): Decimal;
+ // (undocumented)
+ readonly bigNumber: BigNumber;
+ // (undocumented)
+ static bigNumberFrom(decimalish: Decimalish): BigNumber;
+ // (undocumented)
+ static readonly DIGITS: BigNumber;
+ // (undocumented)
+ div(divider: Decimalish): Decimal;
+ // (undocumented)
+ eq(that: Decimalish): boolean;
+ // (undocumented)
+ get finite(): this | undefined;
+ // (undocumented)
+ static from(decimalish: Decimalish): Decimal;
+ // (undocumented)
+ gt(that: Decimalish): boolean;
+ // (undocumented)
+ gte(that: Decimalish): boolean;
+ // (undocumented)
+ static readonly HALF: Decimal;
+ // (undocumented)
+ get infinite(): this | undefined;
+ // (undocumented)
+ static readonly INFINITY: Decimal;
+ // (undocumented)
+ get isZero(): boolean;
+ // (undocumented)
+ lt(that: Decimalish): boolean;
+ // (undocumented)
+ lte(that: Decimalish): boolean;
+ // (undocumented)
+ mul(multiplier: Decimalish): Decimal;
+ // (undocumented)
+ mulDiv(multiplier: Decimalish, divider: Decimalish): Decimal;
+ // (undocumented)
+ get nonZero(): this | undefined;
+ // (undocumented)
+ static readonly ONE: Decimal;
+ // (undocumented)
+ pow(exponent: number): Decimal;
+ // (undocumented)
+ static readonly PRECISION = 18;
+ // (undocumented)
+ prettify(precision?: number): string;
+ // (undocumented)
+ static prettify(bigNumberish: BigNumberish): string;
+ // (undocumented)
+ shorten(): string;
+ // (undocumented)
+ static shorten(bigNumber: BigNumber): string;
+ // (undocumented)
+ sub(subtrahend: Decimalish): Decimal;
+ // (undocumented)
+ toString(precision?: number): string;
+ // (undocumented)
+ static readonly ZERO: Decimal;
+ // (undocumented)
+ get zero(): this | undefined;
+}
+
+// @public (undocumented)
+export type Decimalish = Decimal | number | string;
+
+// @alpha (undocumented)
+export class Difference {
+ // (undocumented)
+ get absoluteValue(): Decimal | undefined;
+ // (undocumented)
+ static between(d1: Decimalish | undefined, d2: Decimalish | undefined): Difference;
+ // (undocumented)
+ get bigNumber(): BigNumber | undefined;
+ // (undocumented)
+ get finite(): this | undefined;
+ // (undocumented)
+ get infinite(): this | undefined;
+ // (undocumented)
+ mul(multiplier: Decimalish): Difference;
+ // (undocumented)
+ get negative(): this | undefined;
+ // (undocumented)
+ get nonZero(): this | undefined;
+ // (undocumented)
+ get positive(): this | undefined;
+ // (undocumented)
+ prettify(precision?: number): string;
+ // (undocumented)
+ toString(precision?: number): string;
+}
+
+// @alpha (undocumented)
+export class Percent {
+ constructor(ratio: T);
+ // (undocumented)
+ nonZeroish(precision: number): this | undefined;
+ // (undocumented)
+ prettify(): string;
+ // (undocumented)
+ toString(precision: number): string;
+}
+
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/packages/decimal/package.json b/packages/decimal/package.json
index 76cd83d4f..9b03eccf1 100644
--- a/packages/decimal/package.json
+++ b/packages/decimal/package.json
@@ -5,16 +5,20 @@
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
- "prepare": "tsc --project tsconfig.dist.json",
+ "prepare": "run-s prepare:*",
+ "prepare:tsc": "tsc --project tsconfig.dist.json",
+ "prepare:api": "api-extractor run --local",
"test": "mocha --require ts-node/register"
},
"devDependencies": {
"@ethersproject/bignumber": "^5.0.0",
+ "@microsoft/api-extractor": "^7.13.0",
"@types/chai": "^4.2.9",
"@types/mocha": "^8.0.3",
"chai": "^4.2.0",
"fast-check": "^2.7.0",
"mocha": "^8.0.1",
+ "npm-run-all": "^4.1.5",
"ts-node": "^9.0.0",
"typescript": "^4.0.3"
},
diff --git a/packages/decimal/src/Decimal.ts b/packages/decimal/src/Decimal.ts
index 1481110ec..34b83bcf2 100644
--- a/packages/decimal/src/Decimal.ts
+++ b/packages/decimal/src/Decimal.ts
@@ -7,16 +7,22 @@ const MAX_UINT_256 = BigNumber.from(
);
const TEN = BigNumber.from(10);
+const getDigits = (numDigits: number) => TEN.pow(numDigits);
+/** @public */
export type Decimalish = Decimal | number | string;
+const stringRepresentationFormat = /^[0-9]*(\.[0-9]*)?(e[-+]?[0-9]+)?$/;
+const trailingZeros = /0*$/;
+const magnitudes = ["", "K", "M", "B", "T"];
+
+const roundedMul = (x: BigNumber, y: BigNumber) =>
+ x.mul(y).add(Decimal.HALF.bigNumber).div(Decimal.DIGITS);
+
+/** @public */
export class Decimal {
static readonly PRECISION = 18;
- static readonly DIGITS = Decimal.getDigits(Decimal.PRECISION);
-
- private static readonly stringRepresentationFormat = /^[0-9]*(\.[0-9]*)?(e[-+]?[0-9]+)?$/;
- private static readonly trailingZeros = /0*$/;
- private static readonly magnitudes = ["", "K", "M", "B", "T"];
+ static readonly DIGITS = getDigits(Decimal.PRECISION);
static readonly INFINITY = new Decimal(MAX_UINT_256);
static readonly ZERO = Decimal.from(0);
@@ -33,12 +39,8 @@ export class Decimal {
this.bigNumber = bigNumber;
}
- private static getDigits(numDigits: number) {
- return TEN.pow(numDigits);
- }
-
- private static fromString(representation: string): Decimal {
- if (!representation || !representation.match(Decimal.stringRepresentationFormat)) {
+ private static _fromString(representation: string): Decimal {
+ if (!representation || !representation.match(stringRepresentationFormat)) {
throw new Error("bad decimal format");
}
@@ -47,7 +49,7 @@ export class Decimal {
if (exponent.startsWith("-")) {
return new Decimal(
- Decimal.fromString(coefficient).bigNumber.div(TEN.pow(BigNumber.from(exponent.substr(1))))
+ Decimal._fromString(coefficient).bigNumber.div(TEN.pow(BigNumber.from(exponent.substr(1))))
);
}
@@ -56,7 +58,7 @@ export class Decimal {
}
return new Decimal(
- Decimal.fromString(coefficient).bigNumber.mul(TEN.pow(BigNumber.from(exponent)))
+ Decimal._fromString(coefficient).bigNumber.mul(TEN.pow(BigNumber.from(exponent)))
);
}
@@ -84,9 +86,9 @@ export class Decimal {
case "object":
return decimalish;
case "string":
- return Decimal.fromString(decimalish);
+ return Decimal._fromString(decimalish);
case "number":
- return Decimal.fromString(decimalish.toString());
+ return Decimal._fromString(decimalish.toString());
}
}
@@ -94,7 +96,7 @@ export class Decimal {
return Decimal.from(decimalish).bigNumber;
}
- private toStringWithAutomaticPrecision() {
+ private _toStringWithAutomaticPrecision() {
const characteristic = this.bigNumber.div(Decimal.DIGITS);
const mantissa = this.bigNumber.mod(Decimal.DIGITS);
@@ -102,22 +104,22 @@ export class Decimal {
return characteristic.toString();
} else {
const paddedMantissa = mantissa.toString().padStart(Decimal.PRECISION, "0");
- const trimmedMantissa = paddedMantissa.replace(Decimal.trailingZeros, "");
+ const trimmedMantissa = paddedMantissa.replace(trailingZeros, "");
return characteristic.toString() + "." + trimmedMantissa;
}
}
- private roundUp(precision: number) {
- const halfDigit = Decimal.getDigits(Decimal.PRECISION - 1 - precision).mul(5);
+ private _roundUp(precision: number) {
+ const halfDigit = getDigits(Decimal.PRECISION - 1 - precision).mul(5);
return this.bigNumber.add(halfDigit);
}
- private toStringWithPrecision(precision: number) {
+ private _toStringWithPrecision(precision: number) {
if (precision < 0) {
throw new Error("precision must not be negative");
}
- const value = precision < Decimal.PRECISION ? this.roundUp(precision) : this.bigNumber;
+ const value = precision < Decimal.PRECISION ? this._roundUp(precision) : this.bigNumber;
const characteristic = value.div(Decimal.DIGITS);
const mantissa = value.mod(Decimal.DIGITS);
@@ -134,9 +136,9 @@ export class Decimal {
if (this.infinite) {
return "∞";
} else if (precision !== undefined) {
- return this.toStringWithPrecision(precision);
+ return this._toStringWithPrecision(precision);
} else {
- return this.toStringWithAutomaticPrecision();
+ return this._toStringWithAutomaticPrecision();
}
}
@@ -153,15 +155,12 @@ export class Decimal {
shorten() {
const characteristicLength = this.toString(0).length;
- const magnitude = Math.min(
- Math.floor((characteristicLength - 1) / 3),
- Decimal.magnitudes.length - 1
- );
+ const magnitude = Math.min(Math.floor((characteristicLength - 1) / 3), magnitudes.length - 1);
const precision = Math.max(3 * (magnitude + 1) - characteristicLength, 0);
- const normalized = this.div(new Decimal(Decimal.getDigits(Decimal.PRECISION + 3 * magnitude)));
+ const normalized = this.div(new Decimal(getDigits(Decimal.PRECISION + 3 * magnitude)));
- return normalized.prettify(precision) + Decimal.magnitudes[magnitude];
+ return normalized.prettify(precision) + magnitudes[magnitude];
}
static shorten(bigNumber: BigNumber) {
@@ -201,10 +200,6 @@ export class Decimal {
return new Decimal(this.bigNumber.mul(multiplier.bigNumber).div(divider.bigNumber));
}
- private static roundedMul(x: BigNumber, y: BigNumber) {
- return x.mul(y).add(Decimal.HALF.bigNumber).div(Decimal.DIGITS);
- }
-
pow(exponent: number) {
assert(Number.isInteger(exponent));
assert(0 <= exponent && exponent <= 0xffffffff); // Ensure we're safe to use bitwise ops
@@ -222,13 +217,13 @@ export class Decimal {
for (; exponent > 1; exponent >>>= 1) {
if (exponent & 1) {
- y = Decimal.roundedMul(x, y);
+ y = roundedMul(x, y);
}
- x = Decimal.roundedMul(x, x);
+ x = roundedMul(x, x);
}
- return new Decimal(Decimal.roundedMul(x, y));
+ return new Decimal(roundedMul(x, y));
}
get isZero() {
@@ -286,11 +281,12 @@ export class Decimal {
type DifferenceRepresentation = { sign: "" | "+" | "-"; absoluteValue: Decimal };
+/** @alpha */
export class Difference {
- private number?: DifferenceRepresentation;
+ private _number?: DifferenceRepresentation;
private constructor(number?: DifferenceRepresentation) {
- this.number = number;
+ this._number = number;
}
static between(d1: Decimalish | undefined, d2: Decimalish | undefined) {
@@ -317,61 +313,62 @@ export class Difference {
}
toString(precision?: number) {
- if (!this.number) {
+ if (!this._number) {
return "N/A";
}
- return this.number.sign + this.number.absoluteValue.toString(precision);
+ return this._number.sign + this._number.absoluteValue.toString(precision);
}
prettify(precision?: number) {
- if (!this.number) {
+ if (!this._number) {
return this.toString();
}
- return this.number.sign + this.number.absoluteValue.prettify(precision);
+ return this._number.sign + this._number.absoluteValue.prettify(precision);
}
mul(multiplier: Decimalish) {
return new Difference(
- this.number && {
- sign: this.number.sign,
- absoluteValue: this.number.absoluteValue.mul(multiplier)
+ this._number && {
+ sign: this._number.sign,
+ absoluteValue: this._number.absoluteValue.mul(multiplier)
}
);
}
get bigNumber() {
- return this.number?.sign === "-"
- ? this.number.absoluteValue.bigNumber.mul(-1)
- : this.number?.absoluteValue.bigNumber;
+ return this._number?.sign === "-"
+ ? this._number.absoluteValue.bigNumber.mul(-1)
+ : this._number?.absoluteValue.bigNumber;
}
get nonZero() {
- return this.number?.absoluteValue.nonZero && this;
+ return this._number?.absoluteValue.nonZero && this;
}
get positive() {
- return this.number?.sign === "+" ? this : undefined;
+ return this._number?.sign === "+" ? this : undefined;
}
get negative() {
- return this.number?.sign === "-" ? this : undefined;
+ return this._number?.sign === "-" ? this : undefined;
}
get absoluteValue() {
- return this.number?.absoluteValue;
+ return this._number?.absoluteValue;
}
get infinite() {
- return this.number?.absoluteValue.infinite && this;
+ return this._number?.absoluteValue.infinite && this;
}
get finite() {
- return this.number?.absoluteValue.finite && this;
+ return this._number?.absoluteValue.finite && this;
}
}
+/** @alpha */
export class Percent<
T extends {
infinite?: T | undefined;
@@ -383,31 +380,31 @@ export class Percent<
gte(n: string): boolean;
}
> {
- private percent: T;
+ private _percent: T;
public constructor(ratio: T) {
- this.percent = ratio.infinite || (ratio.mul && ratio.mul(100)) || ratio;
+ this._percent = ratio.infinite || (ratio.mul && ratio.mul(100)) || ratio;
}
nonZeroish(precision: number) {
const zeroish = `0.${"0".repeat(precision)}5`;
- if (this.percent.absoluteValue?.gte(zeroish)) {
+ if (this._percent.absoluteValue?.gte(zeroish)) {
return this;
}
}
toString(precision: number) {
return (
- this.percent.toString(precision) +
- (this.percent.absoluteValue && !this.percent.infinite ? "%" : "")
+ this._percent.toString(precision) +
+ (this._percent.absoluteValue && !this._percent.infinite ? "%" : "")
);
}
prettify() {
- if (this.percent.absoluteValue?.gte("1000")) {
+ if (this._percent.absoluteValue?.gte("1000")) {
return this.toString(0);
- } else if (this.percent.absoluteValue?.gte("10")) {
+ } else if (this._percent.absoluteValue?.gte("10")) {
return this.toString(1);
} else {
return this.toString(2);
diff --git a/packages/dev-frontend/src/App.tsx b/packages/dev-frontend/src/App.tsx
index 59f746f11..42e93ef1b 100644
--- a/packages/dev-frontend/src/App.tsx
+++ b/packages/dev-frontend/src/App.tsx
@@ -66,6 +66,7 @@ const LiquityFrontend: React.FC = ({ loader }) => {
} = useLiquity();
const store = new BlockPolledLiquityStore(provider, account, liquity, frontendTag);
+ store.logging = true;
// For console tinkering ;-)
Object.assign(window, {
diff --git a/packages/dev-frontend/src/components/RiskiestTroves.tsx b/packages/dev-frontend/src/components/RiskiestTroves.tsx
index 19076388c..f8a5738e4 100644
--- a/packages/dev-frontend/src/components/RiskiestTroves.tsx
+++ b/packages/dev-frontend/src/components/RiskiestTroves.tsx
@@ -3,7 +3,7 @@ import CopyToClipboard from "react-copy-to-clipboard";
import { Card, Button, Text, Box, Heading, Flex } from "theme-ui";
import { Percent } from "@liquity/decimal";
-import { Trove } from "@liquity/lib-base";
+import { MINIMUM_COLLATERAL_RATIO, CRITICAL_COLLATERAL_RATIO } from "@liquity/lib-base";
import { BlockPolledLiquityStoreState } from "@liquity/lib-ethers";
import { useLiquitySelector } from "@liquity/lib-react";
@@ -260,9 +260,9 @@ export const RiskiestTroves: React.FC = ({ pageSize }) => {
{(collateralRatio => (
({
trove,
lusdBalance,
numberOfTroves,
- frontendTag: frontend.status === "registered" ? frontendTag : undefined,
+ frontendRegistered: frontend.status === "registered",
noOwnFrontend: ownFrontend.status === "unregistered"
});
@@ -41,14 +40,21 @@ const StabilityDepositAction: React.FC = ({
changePending,
dispatch
}) => {
- const { trove, lusdBalance, numberOfTroves, frontendTag, noOwnFrontend } = useLiquitySelector(
- select
- );
+ const {
+ trove,
+ lusdBalance,
+ numberOfTroves,
+ frontendRegistered,
+ noOwnFrontend
+ } = useLiquitySelector(select);
const {
+ config,
liquity: { send: liquity }
} = useLiquity();
+ const frontendTag = frontendRegistered ? config.frontendTag : undefined;
+
const myTransactionId = "stability-deposit";
const myTransactionState = useMyTransactionState(/^stability-deposit-/);
diff --git a/packages/dev-frontend/src/components/TroveAction.tsx b/packages/dev-frontend/src/components/TroveAction.tsx
index 87ddb0c79..39056f992 100644
--- a/packages/dev-frontend/src/components/TroveAction.tsx
+++ b/packages/dev-frontend/src/components/TroveAction.tsx
@@ -2,7 +2,15 @@ import React, { useEffect } from "react";
import { Button, Flex, Spinner } from "theme-ui";
import { Decimal, Percent } from "@liquity/decimal";
-import { LiquityStoreState, Trove, TroveAdjustment, TroveChange } from "@liquity/lib-base";
+import {
+ MINIMUM_COLLATERAL_RATIO,
+ CRITICAL_COLLATERAL_RATIO,
+ LUSD_LIQUIDATION_RESERVE,
+ LiquityStoreState,
+ Trove,
+ TroveAdjustmentParams,
+ TroveChange
+} from "@liquity/lib-base";
import { useLiquitySelector } from "@liquity/lib-react";
import { useLiquity } from "../hooks/LiquityContext";
@@ -19,15 +27,15 @@ type TroveActionProps = {
dispatch: (action: { type: "startChange" | "finishChange" }) => void;
};
-const mcrPercent = new Percent(Trove.MINIMUM_COLLATERAL_RATIO).toString(0);
-const ccrPercent = new Percent(Trove.CRITICAL_COLLATERAL_RATIO).toString(0);
+const mcrPercent = new Percent(MINIMUM_COLLATERAL_RATIO).toString(0);
+const ccrPercent = new Percent(CRITICAL_COLLATERAL_RATIO).toString(0);
const describeAdjustment = ({
depositCollateral,
withdrawCollateral,
borrowLUSD,
repayLUSD
-}: TroveAdjustment) =>
+}: TroveAdjustmentParams) =>
depositCollateral && borrowLUSD
? `Deposit ${depositCollateral.prettify()} ETH & borrow ${borrowLUSD.prettify()} ${COIN}`
: repayLUSD && withdrawCollateral
@@ -89,7 +97,7 @@ export const TroveAction: React.FC = ({
{}) as any}
>
@@ -155,8 +163,8 @@ export const TroveAction: React.FC = ({
id={myTransactionId}
requires={[
[
- edited.isEmpty || edited.debt.gte(Trove.GAS_COMPENSATION_DEPOSIT),
- `Need at least ${Trove.GAS_COMPENSATION_DEPOSIT} ${COIN} for gas compensation`
+ edited.isEmpty || edited.debt.gte(LUSD_LIQUIDATION_RESERVE),
+ `Need at least ${LUSD_LIQUIDATION_RESERVE} ${COIN} for gas compensation`
],
[
!(
diff --git a/packages/dev-frontend/src/components/TroveEditor.tsx b/packages/dev-frontend/src/components/TroveEditor.tsx
index c86bc3cb2..42c4e28d9 100644
--- a/packages/dev-frontend/src/components/TroveEditor.tsx
+++ b/packages/dev-frontend/src/components/TroveEditor.tsx
@@ -2,7 +2,13 @@ import React, { useState } from "react";
import { Heading, Box, Card, Button } from "theme-ui";
import { Percent, Difference, Decimalish, Decimal } from "@liquity/decimal";
-import { Trove, LiquityStoreState, TroveChange } from "@liquity/lib-base";
+import {
+ CRITICAL_COLLATERAL_RATIO,
+ MINIMUM_COLLATERAL_RATIO,
+ Trove,
+ LiquityStoreState,
+ TroveChange
+} from "@liquity/lib-base";
import { useLiquitySelector } from "@liquity/lib-react";
import { COIN } from "../strings";
@@ -121,11 +127,11 @@ export const TroveEditor: React.FC = ({
: collateralRatioPct.prettify()
}
color={
- collateralRatio?.gt(Trove.CRITICAL_COLLATERAL_RATIO)
+ collateralRatio?.gt(CRITICAL_COLLATERAL_RATIO)
? "success"
- : collateralRatio?.gt(Trove.MINIMUM_COLLATERAL_RATIO)
+ : collateralRatio?.gt(MINIMUM_COLLATERAL_RATIO)
? "warning"
- : collateralRatio?.lte(Trove.MINIMUM_COLLATERAL_RATIO)
+ : collateralRatio?.lte(MINIMUM_COLLATERAL_RATIO)
? "danger"
: "muted"
}
diff --git a/packages/dev-frontend/src/components/TroveManager.tsx b/packages/dev-frontend/src/components/TroveManager.tsx
index daa06d30e..a66107e2a 100644
--- a/packages/dev-frontend/src/components/TroveManager.tsx
+++ b/packages/dev-frontend/src/components/TroveManager.tsx
@@ -1,7 +1,7 @@
import React from "react";
import { Decimal, Decimalish } from "@liquity/decimal";
-import { LiquityStoreState, Trove } from "@liquity/lib-base";
+import { LUSD_LIQUIDATION_RESERVE, LiquityStoreState } from "@liquity/lib-base";
import { LiquityStoreUpdate, useLiquityReducer, useLiquitySelector } from "@liquity/lib-react";
import { TroveEditor } from "./TroveEditor";
@@ -74,7 +74,7 @@ const reduce = (state: TroveManagerState, action: TroveManagerAction): TroveMana
case "addDebtCompensation":
return {
...state,
- edited: edited.setDebt(Trove.GAS_COMPENSATION_DEPOSIT),
+ edited: edited.setDebt(LUSD_LIQUIDATION_RESERVE),
addedGasCompensation: true
};
diff --git a/packages/dev-frontend/src/config/index.ts b/packages/dev-frontend/src/config/index.ts
index 41aa0625c..bd392a02b 100644
--- a/packages/dev-frontend/src/config/index.ts
+++ b/packages/dev-frontend/src/config/index.ts
@@ -1,16 +1,21 @@
+import { AddressZero } from "@ethersproject/constants";
import { isAddress, getAddress } from "@ethersproject/address";
-export type LiquityFrontendConfig = Partial<{
+export type LiquityFrontendConfig = {
frontendTag: string;
- infuraApiKey: string;
-}>;
+ infuraApiKey?: string;
+};
+
+const defaultConfig: LiquityFrontendConfig = {
+ frontendTag: AddressZero
+};
function hasKey(o: object, k: K): o is Record {
return k in o;
}
const parseConfig = (json: unknown): LiquityFrontendConfig => {
- const config: LiquityFrontendConfig = {};
+ const config = { ...defaultConfig };
if (typeof json === "object" && json !== null) {
if (hasKey(json, "frontendTag") && json.frontendTag !== "") {
@@ -57,7 +62,7 @@ const fetchConfig = async () => {
return parseConfig(await response.json());
} catch (err) {
console.error(err);
- return {};
+ return { ...defaultConfig };
}
};
diff --git a/packages/dev-frontend/src/pages/PageSwitcher.tsx b/packages/dev-frontend/src/pages/PageSwitcher.tsx
index a5c376f66..d17e12b29 100644
--- a/packages/dev-frontend/src/pages/PageSwitcher.tsx
+++ b/packages/dev-frontend/src/pages/PageSwitcher.tsx
@@ -11,18 +11,19 @@ import { UnregisteredFrontend } from "./UnregisteredFrontend";
import { FrontendRegistration } from "./FrontendRegistration";
import { FrontendRegistrationSuccess } from "./FrontendRegistrationSuccess";
-const select = ({ frontend, frontendTag }: LiquityStoreState) => ({
- frontend,
- frontendTag
-});
+const selectFrontend = ({ frontend }: LiquityStoreState) => frontend;
export const PageSwitcher: React.FC = () => {
- const { account } = useLiquity();
- const { frontend, frontendTag } = useLiquitySelector(select);
- const [registering, setRegistering] = useState(false);
+ const {
+ account,
+ config: { frontendTag }
+ } = useLiquity();
+ const frontend = useLiquitySelector(selectFrontend);
const unregistered = frontendTag !== AddressZero && frontend.status === "unregistered";
+ const [registering, setRegistering] = useState(false);
+
useEffect(() => {
if (unregistered) {
setRegistering(true);
diff --git a/packages/dev-frontend/src/pages/UnregisteredFrontend.tsx b/packages/dev-frontend/src/pages/UnregisteredFrontend.tsx
index e25590c6d..4cb3c1b6c 100644
--- a/packages/dev-frontend/src/pages/UnregisteredFrontend.tsx
+++ b/packages/dev-frontend/src/pages/UnregisteredFrontend.tsx
@@ -1,15 +1,13 @@
import { Box, Flex, Heading, Paragraph } from "theme-ui";
-import { useLiquitySelector } from "@liquity/lib-react";
-import { LiquityStoreState } from "@liquity/lib-base";
-
import { shortenAddress } from "../utils/shortenAddress";
import { Icon } from "../components/Icon";
-
-const selectFrontendTag = ({ frontendTag }: LiquityStoreState) => frontendTag;
+import { useLiquity } from "../hooks/LiquityContext";
export const UnregisteredFrontend: React.FC = () => {
- const frontendTag = useLiquitySelector(selectFrontendTag);
+ const {
+ config: { frontendTag }
+ } = useLiquity();
return (
= {
+ [P in K]: T[P] extends (...args: infer A) => infer R ? (...args: [...A, ...U]) => R : never;
+};
+
+// @internal (undocumented)
+export type _CollateralChange = (_CollateralDeposit & _NoCollateralWithdrawal) | (_CollateralWithdrawal & _NoCollateralDeposit);
+
+// @internal (undocumented)
+export type _CollateralDeposit = {
+ depositCollateral: T;
};
// @public (undocumented)
-export type CollateralGainTransferOptionalParams = FeelessTroveAdjustmentOptionalParams & {
+export interface CollateralGainTransferDetails extends StabilityPoolGainsWithdrawalDetails {
+ // (undocumented)
+ newTrove: Trove;
+}
+
+// @internal (undocumented)
+export type _CollateralGainTransferMethod = "transferCollateralGainToTrove";
+
+// @internal (undocumented)
+export type _CollateralGainTransferOptionalParams = _FeelessTroveAdjustmentOptionalParams & {
deposit?: StabilityDeposit;
};
-// @public (undocumented)
-export const emptyTrove: Trove;
+// @internal (undocumented)
+export type _CollateralWithdrawal = {
+ withdrawCollateral: T;
+};
+
+// @public
+export const CRITICAL_COLLATERAL_RATIO: Decimal;
+
+// @internal (undocumented)
+export type _DebtChange = (_LUSDBorrowing & _NoLUSDRepayment) | (_LUSDRepayment & _NoLUSDBorrowing);
+
+// @internal (undocumented)
+export const _emptyTrove: Trove;
// @public (undocumented)
export type FailedReceipt = {
@@ -26,30 +54,31 @@ export type FailedReceipt = {
rawReceipt: R;
};
-// @public (undocumented)
-export const failedReceipt: (rawReceipt: R) => FailedReceipt;
+// @internal (undocumented)
+export const _failedReceipt: (rawReceipt: R) => FailedReceipt;
-// @public (undocumented)
-export type FeelessTroveAdjustmentOptionalParams = HintedMethodOptionalParams & {
+// @internal (undocumented)
+export type _FeelessTroveAdjustmentMethod = "depositCollateral" | "withdrawCollateral" | "repayLUSD";
+
+// @internal (undocumented)
+export type _FeelessTroveAdjustmentOptionalParams = _HintedMethodOptionalParams & {
trove?: Trove;
};
-// @public (undocumented)
+// @public
export class Fees {
+ // @internal
constructor(lastFeeOperation: Date, baseRateWithoutDecay: Decimalish, minuteDecayFactor: Decimalish, beta: Decimalish);
- // (undocumented)
+ // @internal (undocumented)
baseRate(when: Date): Decimal;
- // (undocumented)
- borrowingFeeFactor(when?: Date): Decimal;
- // (undocumented)
+ borrowingFeeFactor(): Decimal;
equals(that: Fees): boolean;
- // (undocumented)
- redemptionFeeFactor(redeemedFractionOfSupply?: Decimalish, when?: Date): Decimal;
- // (undocumented)
+ redemptionFeeFactor(redeemedFractionOfSupply?: Decimalish): Decimal;
+ // @internal (undocumented)
toString(): string;
}
-// @public (undocumented)
+// @public
export type FrontendStatus = {
status: "unregistered";
} | {
@@ -57,160 +86,179 @@ export type FrontendStatus = {
kickbackRate: Decimal;
};
-// @public (undocumented)
-export function glue(t: new (...args: never[]) => T, u: new (...args: never[]) => U): new (t: T, u: U) => T & U;
+// @internal (undocumented)
+export function _glue(t: new (...args: never[]) => T, u: new (...args: never[]) => U): new (t: T, u: U) => T & U;
-// @public (undocumented)
-export function glue(t: new (...args: never[]) => T, u: new (...args: never[]) => U, v: new (...args: never[]) => V): new (t: T, u: U, v: V) => T & U & V;
+// @internal (undocumented)
+export function _glue(t: new (...args: never[]) => T, u: new (...args: never[]) => U, v: new (...args: never[]) => V): new (t: T, u: U, v: V) => T & U & V;
-// @public (undocumented)
-export function glue(t: new (...args: never[]) => T, u: new (...args: never[]) => U, v: new (...args: never[]) => V, w: new (...args: never[]) => W): new (t: T, u: U, v: V, w: W) => T & U & V & W;
-
-// Warning: (ae-forgotten-export) The symbol "Hintable" needs to be exported by the entry point index.d.ts
-// Warning: (ae-forgotten-export) The symbol "AddParams" needs to be exported by the entry point index.d.ts
-// Warning: (ae-forgotten-export) The symbol "TroveCreationMethod" needs to be exported by the entry point index.d.ts
-// Warning: (ae-forgotten-export) The symbol "FeelessTroveAdjustmentMethod" needs to be exported by the entry point index.d.ts
-// Warning: (ae-forgotten-export) The symbol "TroveAdjustmentMethod" needs to be exported by the entry point index.d.ts
-// Warning: (ae-forgotten-export) The symbol "CollateralGainTransferMethod" needs to be exported by the entry point index.d.ts
-// Warning: (ae-forgotten-export) The symbol "RedemptionMethod" needs to be exported by the entry point index.d.ts
-//
-// @public (undocumented)
-export type Hinted = T & AddParams & AddParams & AddParams & AddParams & AddParams;
+// @internal (undocumented)
+export function _glue(t: new (...args: never[]) => T, u: new (...args: never[]) => U, v: new (...args: never[]) => V, w: new (...args: never[]) => W): new (t: T, u: U, v: V, w: W) => T & U & V & W;
-// @public (undocumented)
-export type HintedMethodOptionalParams = {
- numberOfTroves?: number;
+// @internal (undocumented)
+export type _Hintable = {
+ [P in _HintedMethod]: (...args: never[]) => unknown;
};
-// @public (undocumented)
-export const invalidTroveCreation: (invalidTrove: Trove, error: TroveCreationError) => TaggedInvalidTroveCreation;
+// @internal (undocumented)
+export type _Hinted = T & _AddParams & _AddParams & _AddParams & _AddParams & _AddParams;
+
+// @internal (undocumented)
+export type _HintedMethod = _TroveCreationMethod | _FeelessTroveAdjustmentMethod | _TroveAdjustmentMethod | _CollateralGainTransferMethod | _RedemptionMethod;
+
+// @internal (undocumented)
+export type _HintedMethodOptionalParams = {
+ numberOfTroves?: number;
+};
// @public (undocumented)
-export type LiquidationDetails = {
+export interface LiquidationDetails {
+ // (undocumented)
+ collateralGasCompensation: Decimal;
+ // (undocumented)
liquidatedAddresses: string[];
- totalLiquidated: Trove;
+ // (undocumented)
lusdGasCompensation: Decimal;
- collateralGasCompensation: Decimal;
-};
+ // (undocumented)
+ totalLiquidated: Trove;
+}
// @public (undocumented)
export type LiquityReceipt = PendingReceipt | MinedReceipt;
-// @public (undocumented)
+// @public
export abstract class LiquityStore {
- constructor(constants: LiquityStoreConstants);
- // (undocumented)
- protected constants: LiquityStoreConstants;
- // (undocumented)
- abstract doStart(): () => void;
- // (undocumented)
- protected load(baseState: LiquityStoreBaseState, extraState?: T): void;
- // (undocumented)
- protected loaded: boolean;
- // (undocumented)
+ // @internal (undocumented)
+ protected abstract _doStart(): () => void;
+ // @internal (undocumented)
+ protected _load(baseState: LiquityStoreBaseState, extraState?: T): void;
+ // @internal (undocumented)
+ protected _loaded: boolean;
logging: boolean;
- // (undocumented)
- protected logUpdate(name: string, next: U, show?: (next: U) => string): U;
- // (undocumented)
onLoaded?: () => void;
- // (undocumented)
- protected abstract reduceExtra(extraState: T, extraStateUpdate: Partial): T;
- // (undocumented)
- protected silentlyUpdateIfChanged(equals: (a: U, b: U) => boolean, prev: U, next?: U): U;
- // (undocumented)
+ // @internal (undocumented)
+ protected abstract _reduceExtra(extraState: T, extraStateUpdate: Partial): T;
start(): () => void;
- // (undocumented)
get state(): LiquityStoreState;
- // (undocumented)
- subscribe(listener: LiquityStoreListener): () => void;
- // (undocumented)
- protected update(baseStateUpdate?: Partial, extraStateUpdate?: Partial): void;
- // (undocumented)
- protected updateIfChanged(equals: (a: U, b: U) => boolean, name: string, prev: U, next?: U, show?: (next: U) => string): U;
+ subscribe(listener: (params: LiquityStoreListenerParams) => void): () => void;
+ // @internal (undocumented)
+ protected _update(baseStateUpdate?: Partial, extraStateUpdate?: Partial): void;
}
-// @public (undocumented)
-export type LiquityStoreBaseState = {
- frontend: FrontendStatus;
- ownFrontend: FrontendStatus;
- numberOfTroves: number;
+// @public
+export interface LiquityStoreBaseState {
accountBalance: Decimal;
- lusdBalance: Decimal;
- lqtyBalance: Decimal;
collateralSurplusBalance: Decimal;
- price: Decimal;
- lusdInStabilityPool: Decimal;
- total: Trove;
- totalRedistributed: Trove;
- troveWithoutRewards: TroveWithPendingRewards;
deposit: StabilityDeposit;
fees: Fees;
+ frontend: FrontendStatus;
+ lqtyBalance: Decimal;
lqtyStake: LQTYStake;
+ lusdBalance: Decimal;
+ lusdInStabilityPool: Decimal;
+ numberOfTroves: number;
+ ownFrontend: FrontendStatus;
+ price: Decimal;
+ total: Trove;
+ totalRedistributed: Trove;
totalStakedLQTY: Decimal;
-};
-
-// @public (undocumented)
-export type LiquityStoreConstants = {
- frontendTag: string;
-};
+ troveWithoutRewards: TroveWithPendingRewards;
+}
-// @public (undocumented)
-export type LiquityStoreDerivedState = {
- trove: Trove;
+// @public
+export interface LiquityStoreDerivedState {
borrowingFeeFactor: Decimal;
redemptionFeeFactor: Decimal;
-};
+ trove: Trove;
+}
-// @public (undocumented)
-export type LiquityStoreListener = (params: {
+// @public
+export interface LiquityStoreListenerParams {
newState: LiquityStoreState;
oldState: LiquityStoreState;
stateChange: Partial>;
-}) => void;
+}
-// @public (undocumented)
-export type LiquityStoreState = T & LiquityStoreConstants & LiquityStoreBaseState & LiquityStoreDerivedState;
+// @public
+export type LiquityStoreState = LiquityStoreBaseState & LiquityStoreDerivedState & T;
-// @public (undocumented)
+// @public
export class LQTYStake {
- // Warning: (ae-forgotten-export) The symbol "LQTYStakish" needs to be exported by the entry point index.d.ts
- constructor({ stakedLQTY, collateralGain, lusdGain }: LQTYStakish);
- // (undocumented)
+ // @internal
+ constructor(stakedLQTY?: Decimal, collateralGain?: Decimal, lusdGain?: Decimal);
apply(change: LQTYStakeChange | undefined): Decimal;
- // (undocumented)
readonly collateralGain: Decimal;
- // (undocumented)
equals(that: LQTYStake): boolean;
// (undocumented)
get isEmpty(): boolean;
- // (undocumented)
readonly lusdGain: Decimal;
- // (undocumented)
readonly stakedLQTY: Decimal;
- // (undocumented)
+ // @internal (undocumented)
toString(): string;
- // Warning: (ae-forgotten-export) The symbol "LQTYStakeChange" needs to be exported by the entry point index.d.ts
- //
- // (undocumented)
whatChanged(thatStakedLQTY: Decimalish): LQTYStakeChange | undefined;
}
// @public (undocumented)
-export type MinedReceipt = FailedReceipt | SuccessfulReceipt;
+export type LQTYStakeChange = {
+ stakeLQTY: T;
+ unstakeLQTY?: undefined;
+} | {
+ stakeLQTY?: undefined;
+ unstakeLQTY: T;
+ unstakeAllLQTY: boolean;
+};
-// Warning: (ae-forgotten-export) The symbol "Normalizer" needs to be exported by the entry point index.d.ts
-//
-// @public (undocumented)
-export const normalizeTroveAdjustment: Normalizer, TroveAdjustment>;
+// @public
+export const LUSD_LIQUIDATION_RESERVE: Decimal;
-// @public (undocumented)
-export const normalizeTroveCreation: Normalizer, TroveCreation>;
+// @internal (undocumented)
+export type _LUSDBorrowing = {
+ borrowLUSD: T;
+};
+
+// @internal (undocumented)
+export type _LUSDRepayment = {
+ repayLUSD: T;
+};
// @public (undocumented)
+export type MinedReceipt = FailedReceipt | SuccessfulReceipt;
+
+// @public
+export const MINIMUM_COLLATERAL_RATIO: Decimal;
+
+// @internal (undocumented)
+export type _NoCollateralChange = _NoCollateralDeposit & _NoCollateralWithdrawal;
+
+// @internal (undocumented)
+export type _NoCollateralDeposit = Partial<_CollateralDeposit>;
+
+// @internal (undocumented)
+export type _NoCollateralWithdrawal = Partial<_CollateralWithdrawal>;
+
+// @internal (undocumented)
+export type _NoDebtChange = _NoLUSDBorrowing & _NoLUSDRepayment;
+
+// @internal (undocumented)
+export type _NoLUSDBorrowing = Partial<_LUSDBorrowing>;
+
+// @internal (undocumented)
+export type _NoLUSDRepayment = Partial<_LUSDRepayment>;
+
+// @internal (undocumented)
+export type _Normalizer = (params: T) => U;
+
+// @internal (undocumented)
+export const _normalizeTroveAdjustment: _Normalizer, TroveAdjustmentParams>;
+
+// @internal (undocumented)
+export const _normalizeTroveCreation: _Normalizer, TroveCreationParams>;
+
+// @alpha (undocumented)
export interface ObservableLiquity {
// (undocumented)
watchLUSDBalance(onLUSDBalanceChanged: (balance: Decimal) => void, address?: string): () => void;
@@ -235,22 +283,24 @@ export type PendingReceipt = {
status: "pending";
};
-// @public (undocumented)
-export const pendingReceipt: PendingReceipt;
+// @internal (undocumented)
+export const _pendingReceipt: PendingReceipt;
-// @public (undocumented)
-export type Populatable = {
- [M in keyof T]: T[M] extends (...args: infer A) => Promise ? PopulateMethod>>> : never;
+// @internal (undocumented)
+export type _Populatable = {
+ [M in keyof T]: T[M] extends (...args: infer A) => Promise ? _PopulateMethod>>> : never;
};
// @public (undocumented)
-export type PopulatedLiquityTransaction = {
+export interface PopulatedLiquityTransaction
{
+ // (undocumented)
rawPopulatedTransaction: P;
+ // (undocumented)
send(): Promise;
-};
+}
-// @public (undocumented)
-export type PopulateMethod = (...args: A) => Promise