UNPKG

@superfluid-finance/sdk-core

Version:
213 lines 11.4 kB
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