@ohgeez/fsushi
Version:
fSUSHI is a protocol built on top of [FlashStake](http://flashstake.io/) and [SushiSwap](https://sushi.com) that enables stakers to get instant, upfront yield without waiting for it to accrue.
672 lines (589 loc) • 21 kB
text/typescript
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
BaseContract,
BigNumber,
BigNumberish,
BytesLike,
CallOverrides,
ContractTransaction,
Overrides,
PopulatedTransaction,
Signer,
utils,
} from "ethers";
import type {
FunctionFragment,
Result,
EventFragment,
} from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type {
TypedEventFilter,
TypedEvent,
TypedListener,
OnEvent,
PromiseOrValue,
} from "../../common";
export declare namespace FlashProtocol {
export type StakeStructStruct = {
stakerAddress: PromiseOrValue<string>;
strategyAddress: PromiseOrValue<string>;
stakeStartTs: PromiseOrValue<BigNumberish>;
stakeDuration: PromiseOrValue<BigNumberish>;
stakedAmount: PromiseOrValue<BigNumberish>;
active: PromiseOrValue<boolean>;
nftId: PromiseOrValue<BigNumberish>;
fTokensToUser: PromiseOrValue<BigNumberish>;
fTokensFee: PromiseOrValue<BigNumberish>;
totalFTokenBurned: PromiseOrValue<BigNumberish>;
totalStakedWithdrawn: PromiseOrValue<BigNumberish>;
};
export type StakeStructStructOutput = [
string,
string,
BigNumber,
BigNumber,
BigNumber,
boolean,
BigNumber,
BigNumber,
BigNumber,
BigNumber,
BigNumber
] & {
stakerAddress: string;
strategyAddress: string;
stakeStartTs: BigNumber;
stakeDuration: BigNumber;
stakedAmount: BigNumber;
active: boolean;
nftId: BigNumber;
fTokensToUser: BigNumber;
fTokensFee: BigNumber;
totalFTokenBurned: BigNumber;
totalStakedWithdrawn: BigNumber;
};
}
export interface FlashProtocolInterface extends utils.Interface {
functions: {
"flashNFTAddress()": FunctionFragment;
"flashStake(address,uint256,uint256,uint256,address,bool)": FunctionFragment;
"getStakeInfo(uint256,bool)": FunctionFragment;
"issueNFT(uint256)": FunctionFragment;
"owner()": FunctionFragment;
"registerStrategy(address,address,string,string)": FunctionFragment;
"renounceOwnership()": FunctionFragment;
"setMintFeeInfo(address,uint96)": FunctionFragment;
"stake(address,uint256,uint256,address,bool)": FunctionFragment;
"transferOwnership(address)": FunctionFragment;
"unstake(uint256,bool,uint256)": FunctionFragment;
};
getFunction(
nameOrSignatureOrTopic:
| "flashNFTAddress"
| "flashStake"
| "getStakeInfo"
| "issueNFT"
| "owner"
| "registerStrategy"
| "renounceOwnership"
| "setMintFeeInfo"
| "stake"
| "transferOwnership"
| "unstake"
): FunctionFragment;
encodeFunctionData(
functionFragment: "flashNFTAddress",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "flashStake",
values: [
PromiseOrValue<string>,
PromiseOrValue<BigNumberish>,
PromiseOrValue<BigNumberish>,
PromiseOrValue<BigNumberish>,
PromiseOrValue<string>,
PromiseOrValue<boolean>
]
): string;
encodeFunctionData(
functionFragment: "getStakeInfo",
values: [PromiseOrValue<BigNumberish>, PromiseOrValue<boolean>]
): string;
encodeFunctionData(
functionFragment: "issueNFT",
values: [PromiseOrValue<BigNumberish>]
): string;
encodeFunctionData(functionFragment: "owner", values?: undefined): string;
encodeFunctionData(
functionFragment: "registerStrategy",
values: [
PromiseOrValue<string>,
PromiseOrValue<string>,
PromiseOrValue<string>,
PromiseOrValue<string>
]
): string;
encodeFunctionData(
functionFragment: "renounceOwnership",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "setMintFeeInfo",
values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]
): string;
encodeFunctionData(
functionFragment: "stake",
values: [
PromiseOrValue<string>,
PromiseOrValue<BigNumberish>,
PromiseOrValue<BigNumberish>,
PromiseOrValue<string>,
PromiseOrValue<boolean>
]
): string;
encodeFunctionData(
functionFragment: "transferOwnership",
values: [PromiseOrValue<string>]
): string;
encodeFunctionData(
functionFragment: "unstake",
values: [
PromiseOrValue<BigNumberish>,
PromiseOrValue<boolean>,
PromiseOrValue<BigNumberish>
]
): string;
decodeFunctionResult(
functionFragment: "flashNFTAddress",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "flashStake", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "getStakeInfo",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "issueNFT", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "registerStrategy",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "renounceOwnership",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "setMintFeeInfo",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "stake", data: BytesLike): Result;
decodeFunctionResult(
functionFragment: "transferOwnership",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "unstake", data: BytesLike): Result;
events: {
"NFTIssued(uint256,uint256)": EventFragment;
"OwnershipTransferred(address,address)": EventFragment;
"Staked(uint256)": EventFragment;
"StrategyRegistered(address,address,address)": EventFragment;
"Unstaked(uint256,uint256,uint256,bool)": EventFragment;
};
getEvent(nameOrSignatureOrTopic: "NFTIssued"): EventFragment;
getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
getEvent(nameOrSignatureOrTopic: "Staked"): EventFragment;
getEvent(nameOrSignatureOrTopic: "StrategyRegistered"): EventFragment;
getEvent(nameOrSignatureOrTopic: "Unstaked"): EventFragment;
}
export interface NFTIssuedEventObject {
_stakeId: BigNumber;
nftId: BigNumber;
}
export type NFTIssuedEvent = TypedEvent<
[BigNumber, BigNumber],
NFTIssuedEventObject
>;
export type NFTIssuedEventFilter = TypedEventFilter<NFTIssuedEvent>;
export interface OwnershipTransferredEventObject {
previousOwner: string;
newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<
[string, string],
OwnershipTransferredEventObject
>;
export type OwnershipTransferredEventFilter =
TypedEventFilter<OwnershipTransferredEvent>;
export interface StakedEventObject {
_stakeId: BigNumber;
}
export type StakedEvent = TypedEvent<[BigNumber], StakedEventObject>;
export type StakedEventFilter = TypedEventFilter<StakedEvent>;
export interface StrategyRegisteredEventObject {
_strategyAddress: string;
_principalTokenAddress: string;
_fTokenAddress: string;
}
export type StrategyRegisteredEvent = TypedEvent<
[string, string, string],
StrategyRegisteredEventObject
>;
export type StrategyRegisteredEventFilter =
TypedEventFilter<StrategyRegisteredEvent>;
export interface UnstakedEventObject {
_stakeId: BigNumber;
_tokensReturned: BigNumber;
_fTokensBurned: BigNumber;
_stakeFinished: boolean;
}
export type UnstakedEvent = TypedEvent<
[BigNumber, BigNumber, BigNumber, boolean],
UnstakedEventObject
>;
export type UnstakedEventFilter = TypedEventFilter<UnstakedEvent>;
export interface FlashProtocol extends BaseContract {
connect(signerOrProvider: Signer | Provider | string): this;
attach(addressOrName: string): this;
deployed(): Promise<this>;
interface: FlashProtocolInterface;
queryFilter<TEvent extends TypedEvent>(
event: TypedEventFilter<TEvent>,
fromBlockOrBlockhash?: string | number | undefined,
toBlock?: string | number | undefined
): Promise<Array<TEvent>>;
listeners<TEvent extends TypedEvent>(
eventFilter?: TypedEventFilter<TEvent>
): Array<TypedListener<TEvent>>;
listeners(eventName?: string): Array<Listener>;
removeAllListeners<TEvent extends TypedEvent>(
eventFilter: TypedEventFilter<TEvent>
): this;
removeAllListeners(eventName?: string): this;
off: OnEvent<this>;
on: OnEvent<this>;
once: OnEvent<this>;
removeListener: OnEvent<this>;
functions: {
flashNFTAddress(overrides?: CallOverrides): Promise<[string]>;
flashStake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_minimumReceived: PromiseOrValue<BigNumberish>,
_yieldTo: PromiseOrValue<string>,
_mintNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
getStakeInfo(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
overrides?: CallOverrides
): Promise<
[FlashProtocol.StakeStructStructOutput] & {
_stake: FlashProtocol.StakeStructStructOutput;
}
>;
issueNFT(
_stakeId: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
owner(overrides?: CallOverrides): Promise<[string]>;
registerStrategy(
_strategyAddress: PromiseOrValue<string>,
_principalTokenAddress: PromiseOrValue<string>,
_fTokenName: PromiseOrValue<string>,
_fTokenSymbol: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
setMintFeeInfo(
_feeRecipient: PromiseOrValue<string>,
_feePercentageBasis: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
stake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_fTokensTo: PromiseOrValue<string>,
_issueNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
unstake(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
_fTokenToBurn: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
};
flashNFTAddress(overrides?: CallOverrides): Promise<string>;
flashStake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_minimumReceived: PromiseOrValue<BigNumberish>,
_yieldTo: PromiseOrValue<string>,
_mintNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
getStakeInfo(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
overrides?: CallOverrides
): Promise<FlashProtocol.StakeStructStructOutput>;
issueNFT(
_stakeId: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
owner(overrides?: CallOverrides): Promise<string>;
registerStrategy(
_strategyAddress: PromiseOrValue<string>,
_principalTokenAddress: PromiseOrValue<string>,
_fTokenName: PromiseOrValue<string>,
_fTokenSymbol: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
setMintFeeInfo(
_feeRecipient: PromiseOrValue<string>,
_feePercentageBasis: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
stake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_fTokensTo: PromiseOrValue<string>,
_issueNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
transferOwnership(
newOwner: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
unstake(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
_fTokenToBurn: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<ContractTransaction>;
callStatic: {
flashNFTAddress(overrides?: CallOverrides): Promise<string>;
flashStake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_minimumReceived: PromiseOrValue<BigNumberish>,
_yieldTo: PromiseOrValue<string>,
_mintNFT: PromiseOrValue<boolean>,
overrides?: CallOverrides
): Promise<void>;
getStakeInfo(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
overrides?: CallOverrides
): Promise<FlashProtocol.StakeStructStructOutput>;
issueNFT(
_stakeId: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<BigNumber>;
owner(overrides?: CallOverrides): Promise<string>;
registerStrategy(
_strategyAddress: PromiseOrValue<string>,
_principalTokenAddress: PromiseOrValue<string>,
_fTokenName: PromiseOrValue<string>,
_fTokenSymbol: PromiseOrValue<string>,
overrides?: CallOverrides
): Promise<void>;
renounceOwnership(overrides?: CallOverrides): Promise<void>;
setMintFeeInfo(
_feeRecipient: PromiseOrValue<string>,
_feePercentageBasis: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<void>;
stake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_fTokensTo: PromiseOrValue<string>,
_issueNFT: PromiseOrValue<boolean>,
overrides?: CallOverrides
): Promise<FlashProtocol.StakeStructStructOutput>;
transferOwnership(
newOwner: PromiseOrValue<string>,
overrides?: CallOverrides
): Promise<void>;
unstake(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
_fTokenToBurn: PromiseOrValue<BigNumberish>,
overrides?: CallOverrides
): Promise<
[BigNumber, BigNumber] & {
_principalReturned: BigNumber;
_fTokensBurned: BigNumber;
}
>;
};
filters: {
"NFTIssued(uint256,uint256)"(
_stakeId?: null,
nftId?: null
): NFTIssuedEventFilter;
NFTIssued(_stakeId?: null, nftId?: null): NFTIssuedEventFilter;
"OwnershipTransferred(address,address)"(
previousOwner?: PromiseOrValue<string> | null,
newOwner?: PromiseOrValue<string> | null
): OwnershipTransferredEventFilter;
OwnershipTransferred(
previousOwner?: PromiseOrValue<string> | null,
newOwner?: PromiseOrValue<string> | null
): OwnershipTransferredEventFilter;
"Staked(uint256)"(_stakeId?: null): StakedEventFilter;
Staked(_stakeId?: null): StakedEventFilter;
"StrategyRegistered(address,address,address)"(
_strategyAddress?: PromiseOrValue<string> | null,
_principalTokenAddress?: PromiseOrValue<string> | null,
_fTokenAddress?: PromiseOrValue<string> | null
): StrategyRegisteredEventFilter;
StrategyRegistered(
_strategyAddress?: PromiseOrValue<string> | null,
_principalTokenAddress?: PromiseOrValue<string> | null,
_fTokenAddress?: PromiseOrValue<string> | null
): StrategyRegisteredEventFilter;
"Unstaked(uint256,uint256,uint256,bool)"(
_stakeId?: null,
_tokensReturned?: null,
_fTokensBurned?: null,
_stakeFinished?: null
): UnstakedEventFilter;
Unstaked(
_stakeId?: null,
_tokensReturned?: null,
_fTokensBurned?: null,
_stakeFinished?: null
): UnstakedEventFilter;
};
estimateGas: {
flashNFTAddress(overrides?: CallOverrides): Promise<BigNumber>;
flashStake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_minimumReceived: PromiseOrValue<BigNumberish>,
_yieldTo: PromiseOrValue<string>,
_mintNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
getStakeInfo(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
overrides?: CallOverrides
): Promise<BigNumber>;
issueNFT(
_stakeId: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
owner(overrides?: CallOverrides): Promise<BigNumber>;
registerStrategy(
_strategyAddress: PromiseOrValue<string>,
_principalTokenAddress: PromiseOrValue<string>,
_fTokenName: PromiseOrValue<string>,
_fTokenSymbol: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
renounceOwnership(
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
setMintFeeInfo(
_feeRecipient: PromiseOrValue<string>,
_feePercentageBasis: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
stake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_fTokensTo: PromiseOrValue<string>,
_issueNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
transferOwnership(
newOwner: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
unstake(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
_fTokenToBurn: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<BigNumber>;
};
populateTransaction: {
flashNFTAddress(overrides?: CallOverrides): Promise<PopulatedTransaction>;
flashStake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_minimumReceived: PromiseOrValue<BigNumberish>,
_yieldTo: PromiseOrValue<string>,
_mintNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
getStakeInfo(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
issueNFT(
_stakeId: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
registerStrategy(
_strategyAddress: PromiseOrValue<string>,
_principalTokenAddress: PromiseOrValue<string>,
_fTokenName: PromiseOrValue<string>,
_fTokenSymbol: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
renounceOwnership(
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
setMintFeeInfo(
_feeRecipient: PromiseOrValue<string>,
_feePercentageBasis: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
stake(
_strategyAddress: PromiseOrValue<string>,
_tokenAmount: PromiseOrValue<BigNumberish>,
_stakeDuration: PromiseOrValue<BigNumberish>,
_fTokensTo: PromiseOrValue<string>,
_issueNFT: PromiseOrValue<boolean>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
transferOwnership(
newOwner: PromiseOrValue<string>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
unstake(
_id: PromiseOrValue<BigNumberish>,
_isNFT: PromiseOrValue<boolean>,
_fTokenToBurn: PromiseOrValue<BigNumberish>,
overrides?: Overrides & { from?: PromiseOrValue<string> }
): Promise<PopulatedTransaction>;
};
}