# multipartyRagequit sub-class
The following readme describes all the functions and their parameters exposed by the `multipartyRageQuit` class of the Stakehouse SDK.

## signRageQuitRequest function
This function allows users to sign a multi-party Rage Quit request. During the multiparty Rage Quit, each of the participants must generate a signature. The same function can also be used to generate signatures for the Stakehouse kick process.  

### Input Parameters
stakehouseAddress: Stakehouse address of the KNOT that wants to Rage Quit  
blsPublicKey: BLS Public key of the KNOT  
recipient: the Ethereum execution layer address that will receive the unstaked ETH after rage quit and after the withdrawal is triggered  
deadline: deadline for the validity of the generated signature  
signatureHolder: type of participant. Should be either `ROUTER`, `FREE_FLOATING_SLOT_OWNER`, `SAVETH_INDEX_OWNER` or `COLLATERALISDED_SLOT_OWNER`  
stakehouseKick: Boolean. If the signature being generated is for a multiparty Rage Quit, then this can be left `null` or `false`. Otherwise, for Stakehouse kick, it should be provided as `true`.  

### Using signRageQuitRequest function
```js
await sdk.multipartyRageQuit.signRageQuitRequest(stakehouseAddress, blsPublicKey, recipient, deadline, signatureHolder, stakehouseKick=null);
```

### Return Parameter
Returns the signature.  

## multipartyRageQuit function
This function allows users to multi-party Rage Quit or a Stakehouse to Stakehouse kick a KNOT.  

### Input Parameters
stakehouseAddress: Stakehouse address of the KNOT that wants to Rage Quit  
ethRecipient: Ethereum execution layer address of the receiver of all the funds after Rage Quit is successful  
freeFloatingSlotOwner: Ethereum execution layer address of the free floating SLOT owner  
authenticatedReport: report returned by the `authenticateReport` function  
reportAndTokenHolderSignatures: List of signatures of all the participants in correct order. The order is `ROUTER`, `FREE_FLOATING_SLOT_OWNER`, `SAVETH_INDEX_OWNER`, `COLLATERALISDED_SLOT_OWNER`.  
ethValue: ETH to be paid for the payable function  
stakehouseKick: `null` or `false` for multiparty Rage Quit, `true` for Stakehouse kick  

### Using multipartyRageQuit function
```js
await sdk.multipartyRageQuit.multipartyRageQuit(stakehouseAddress, ethRecipient, freeFloatingSlotOwner, authenticatedReport, reportAndTokenHolderSignatures, ethValue, stakehouseKick=null);
```

### Return Parameter
Returns the transaction data.  