@superfluid-finance/sdk-core
Version:
SDK Core for building with Superfluid Protocol
213 lines • 11.4 kB
TypeScript
import Host from "./Host";
import Operation from "./Operation";
import SuperfluidAgreement from "./SuperfluidAgreement";
import { FlowRateAllowanceParams, FlowRateAllowanceWithPermissionsParams, ICreateFlowByOperatorParams, ICreateFlowParams, IDeleteFlowParams, IFullControlParams, IGetAccountFlowInfoParams, IGetFlowOperatorDataByIDParams, IGetFlowOperatorDataParams, IGetFlowParams, IUpdateFlowByOperatorParams, IUpdateFlowOperatorPermissionsParams, IUpdateFlowParams, IWeb3FlowInfo, IWeb3FlowInfoParams, IWeb3FlowOperatorData, IWeb3FlowOperatorDataParams } from "./interfaces";
import { CFAv1Forwarder, IConstantFlowAgreementV1 } from "./typechain-types";
/**
* Constant Flow Agreement V1 Helper Class
* @description A helper class to interact with the CFAV1 contract.
*/
export default class ConstantFlowAgreementV1 extends SuperfluidAgreement {
readonly host: Host;
readonly contract: IConstantFlowAgreementV1;
readonly forwarder: CFAv1Forwarder;
constructor(hostAddress: string, cfaV1Address: string, cfaV1ForwarderAddress: string);
/** ### CFA Read Functions ### */
/**
* Get the details of a flow.
* @param superToken the superToken of the agreement
* @param sender the sender of the flow
* @param receiver the receiver of the flow
* @param providerOrSigner a provider or signer object
* @returns {Promise<IWeb3FlowInfo>} Web3 Flow info object
*/
getFlow: (params: IGetFlowParams) => Promise<IWeb3FlowInfo>;
/**
* Get the flow info of an account (net flow).
* @param superToken the superToken of the agreement
* @param account the account we're querying
* @param providerOrSigner a provider or signer object
* @returns {Promise<IWeb3FlowInfo>} Web3 Flow info object
*/
getAccountFlowInfo: (params: IGetAccountFlowInfoParams) => Promise<IWeb3FlowInfo>;
/**
* Get the net flow of an account.
* @param superToken the superToken of the agreement
* @param account the account we're querying
* @param providerOrSigner a provider or signer object
* @returns {Promise<string>} Web3 Flow info object
*/
getNetFlow: (params: IGetAccountFlowInfoParams) => Promise<string>;
/**
* Get flow operator data.
* @param superToken the superToken of the agreement
* @param sender the sender
* @param flowOperator the flowOperator
* @param providerOrSigner a provider or signer object
* @returns {Promise<IWeb3FlowOperatorData>} Web3 Flow info object
*/
getFlowOperatorData: (params: IGetFlowOperatorDataParams) => Promise<IWeb3FlowOperatorData>;
/**
* Get flow operator data using the flowOperatorId.
* @param superToken the superToken of the agreement
* @param flowOperatorId The keccak256 hash of encoded string "flowOperator", sender and flowOperator
* @param providerOrSigner a provider or signer object
* @returns {Promise<IWeb3FlowOperatorData>} Web3 Flow info object
*/
getFlowOperatorDataByID: (params: IGetFlowOperatorDataByIDParams) => Promise<IWeb3FlowOperatorData>;
/** ### CFA Write Functions ### */
/**
* Create a flow.
* @param flowRate The specified flow rate.
* @param sender The sender of the flow
* @param receiver The receiver of the flow.
* @param superToken The token to be flowed.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @param shouldUseCallAgreement Whether to use callAgreement, or the CFAv1Forwarder
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
createFlow: (params: ICreateFlowParams) => Operation;
/**
* Update a flow.
* @param flowRate The specified flow rate.
* @param sender The sender of the flow
* @param receiver The receiver of the flow.
* @param superToken The token to be flowed.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
updateFlow: (params: IUpdateFlowParams) => Operation;
/**
* Delete a flow.
* @param superToken The token to be flowed.
* @param sender The sender of the flow.
* @param receiver The receiver of the flow.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
deleteFlow: (params: IDeleteFlowParams) => Operation;
/** ### CFA ACL Write Functions (byOperator) ### */
/**
* Increase the flow rate allowance for an ACL operator.
* @param superToken The token to be flowed.
* @param flowOperator The operator of the flow.
* @param flowRateAllowanceDelta The amount to increase the flow rate allowance by.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
increaseFlowRateAllowance(params: FlowRateAllowanceParams): Operation;
/**
* Decrease the flow rate allowance for an ACL operator.
* @param superToken The token to be flowed.
* @param flowOperator The operator of the flow.
* @param flowRateAllowanceDelta The amount to decrease the flow rate allowance by.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
decreaseFlowRateAllowance(params: FlowRateAllowanceParams): Operation;
/**
* Increase the flow rate allowance and sets permissions for an ACL operator.
* @param superToken The token to be flowed.
* @param flowOperator The operator of the flow.
* @param permissionsDelta The permissions to be add for the operator.
* @param flowRateAllowanceDelta The amount to increase the flow rate allowance by.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
increaseFlowRateAllowanceWithPermissions(params: FlowRateAllowanceWithPermissionsParams): Operation;
/**
* Decrease the flow rate allowance and sets permissions for an ACL operator.
* @param superToken The token to be flowed.
* @param flowOperator The operator of the flow.
* @param permissionsDelta The permissions to be remove from the operator.
* @param flowRateAllowanceDelta The amount to decrease the flow rate allowance by.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
decreaseFlowRateAllowanceWithPermissions(params: FlowRateAllowanceWithPermissionsParams): Operation;
/**
* Update permissions for a flow operator as a sender.
* @param superToken The token to be flowed.
* @param flowOperator The permission grantee address
* @param permission The permissions to set.
* @param flowRateAllowance The flowRateAllowance granted to the flow operator.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
updateFlowOperatorPermissions(params: IUpdateFlowOperatorPermissionsParams): Operation;
/**
* Give flow operator full control - max flow rate and create/update/delete permissions.
* @param superToken The token to be flowed.
* @param flowOperator The permission grantee address
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
*/
authorizeFlowOperatorWithFullControl(params: IFullControlParams): Operation;
/**
* Revoke flow operator control - set flow rate to 0 with no permissions.
* @param superToken The token to be flowed.
* @param flowOperator The permission grantee address
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
*/
revokeFlowOperatorWithFullControl(params: IFullControlParams): Operation;
/**
* Create a flow as an operator
* @param flowRate The specified flow rate.
* @param sender The sender of the flow.
* @param receiver The receiver of the flow.
* @param superToken The token to be flowed.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
createFlowByOperator: (params: ICreateFlowByOperatorParams) => Operation;
/**
* Update a flow as an operator.
* @param flowRate The specified flow rate.
* @param sender The sender of the flow.
* @param receiver The receiver of the flow.
* @param superToken The token to be flowed.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
updateFlowByOperator: (params: IUpdateFlowByOperatorParams) => Operation;
/**
* Delete a flow as an operator.
* @param sender The sender of the flow.
* @param receiver The receiver of the flow.
* @param superToken The token to be flowed.
* @param userData Extra user data provided.
* @param overrides ethers overrides object for more control over the transaction sent.
* @returns {Operation} An instance of Operation which can be executed or batched.
*/
deleteFlowByOperator: (params: IDeleteFlowParams) => Operation;
/** ### Internal Helper Functions ### */
/**
* Sanitizes flow info, converting BigNumber to string.
* @param timestamp last updated timestamp of flow
* @param flowRate the current flow rate
* @param deposit the deposit amount
* @param owedDeposit any owed deposit
* @returns {IWeb3FlowInfo} sanitized web3 flow info
*/
_sanitizeFlowInfo: (params: IWeb3FlowInfoParams) => IWeb3FlowInfo;
/**
* Sanitizes flow operator data, converting BigNumber to string.
* @param flowOperatorId The keccak256 hash of encoded string "flowOperator", sender and flowOperator
* @param permissions the permissions
* @param flowRateAllowance the flow rate allowance granted to the flow operator
* @returns {IWeb3FlowOperatorData} sanitized web3 flow info
*/
_sanitizeFlowOperatorData: (params: IWeb3FlowOperatorDataParams) => IWeb3FlowOperatorData;
}
//# sourceMappingURL=ConstantFlowAgreementV1.d.ts.map