UNPKG

@renft/sdk

Version:

**ReNFT** is a multi-chain highly gas-optimised NFT rental protocol and platform that can be whitelabel integrated into any project to enable collateral-free in-house renting, lending, and reward share (scholarship automation).

99 lines (92 loc) 3.12 kB
import { Contract } from '@ethersproject/contracts'; import { AzraelVersion, EVMNetworkType, RenftContractType, ResolverVersion, SylvesterVersion, WhoopiVersion, } from '../core'; import { AzraelInterfaceVersions, createAzraelV0ClaimCollateralThunk, createAzraelV0LendThunk, createAzraelV0RentThunk, createAzraelV0ReturnItThunk, createAzraelV0StopLendingThunk, createSylvesterV0ClaimCollateralThunk, createSylvesterV0LendThunk, createSylvesterV0RentThunk, createSylvesterV0ReturnItThunk, createSylvesterV0StopLendingThunk, createSylvesterV1LendThunk, createWhoopiV0LendThunk, createWhoopiV0PayThunk, createWhoopiV0RentThunk, createWhoopiV0StopLendingThunk, createWhoopiV0StopRentThunk, ResolverInterfaceVersions, SylvesterInterfaceVersions, WhoopiInterfaceVersions, } from './contracts'; import { CreateVersionedContractInterfaceResult } from './types'; const createAzraelInterfaceVersionsThunk = ( contract: Contract ): AzraelInterfaceVersions => ({ [AzraelVersion.V0]: { claimCollateral: createAzraelV0ClaimCollateralThunk(contract), lend: createAzraelV0LendThunk(contract), rent: createAzraelV0RentThunk(contract), returnIt: createAzraelV0ReturnItThunk(contract), stopLending: createAzraelV0StopLendingThunk(contract), }, }); const createSylvesterInterfaceVersionsThunk = ( contract: Contract ): SylvesterInterfaceVersions => ({ [SylvesterVersion.V0]: { claimCollateral: createSylvesterV0ClaimCollateralThunk(contract), lend: createSylvesterV0LendThunk(contract), rent: createSylvesterV0RentThunk(contract), returnIt: createSylvesterV0ReturnItThunk(contract), stopLending: createSylvesterV0StopLendingThunk(contract), }, [SylvesterVersion.V1]: { claimCollateral: createSylvesterV0ClaimCollateralThunk(contract), lend: createSylvesterV1LendThunk(contract), rent: createSylvesterV0RentThunk(contract), returnIt: createSylvesterV0ReturnItThunk(contract), stopLending: createSylvesterV0StopLendingThunk(contract), }, }); const createWhoopiInterfaceVersionsThunk = ( contract: Contract, network: EVMNetworkType ): WhoopiInterfaceVersions => ({ [WhoopiVersion.V0]: { lend: createWhoopiV0LendThunk(contract, network), pay: createWhoopiV0PayThunk(contract), rent: createWhoopiV0RentThunk(contract), stopLending: createWhoopiV0StopLendingThunk(contract), stopRent: createWhoopiV0StopRentThunk(contract), }, }); const createResolverInterfaceVersionsThunk = (): ResolverInterfaceVersions => ({ // TODO: What arguments to use here? [ResolverVersion.V0]: {}, [ResolverVersion.V1]: {}, }); export const createInterfaceVersions = ( contract: Contract, network: EVMNetworkType ): CreateVersionedContractInterfaceResult => ({ [RenftContractType.AZRAEL]: createAzraelInterfaceVersionsThunk(contract), [RenftContractType.SYLVESTER]: createSylvesterInterfaceVersionsThunk( contract ), [RenftContractType.WHOOPI]: createWhoopiInterfaceVersionsThunk( contract, network ), [RenftContractType.RESOLVER]: createResolverInterfaceVersionsThunk(), });