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).

53 lines (46 loc) 1.8 kB
import { ContractInterface } from '@ethersproject/contracts'; import { AzraelVersion, Network, RenftContractType, RenftContractVersion, ResolverVersion, SylvesterVersion, WhoopiVersion, } from '../core'; import { AzraelInterfaceVersions, ResolverInterfaceVersions, SylvesterInterfaceVersions, WhoopiInterfaceVersions, } from './contracts'; // We need to relate contracts to their versions type AbstractVersionedAbis<Version extends RenftContractVersion> = { readonly [key in Version]: ContractInterface; }; export type AzraelAbiVersions = AbstractVersionedAbis<AzraelVersion>; export type SylvesterAbiVersions = AbstractVersionedAbis<SylvesterVersion>; export type WhoopiAbiVersions = AbstractVersionedAbis<WhoopiVersion>; export type ResolverAbiVersions = AbstractVersionedAbis<ResolverVersion>; export type ContractAbiVersions = { readonly [RenftContractType.AZRAEL]: AzraelAbiVersions; readonly [RenftContractType.SYLVESTER]: SylvesterAbiVersions; readonly [RenftContractType.WHOOPI]: WhoopiAbiVersions; readonly [RenftContractType.RESOLVER]: ResolverAbiVersions; }; export type CreateVersionedContractInterfaceResult = { readonly [RenftContractType.AZRAEL]: AzraelInterfaceVersions; readonly [RenftContractType.SYLVESTER]: SylvesterInterfaceVersions; readonly [RenftContractType.WHOOPI]: WhoopiInterfaceVersions; readonly [RenftContractType.RESOLVER]: ResolverInterfaceVersions; }; export type AbstractRenftContractDeployment< ContractType extends keyof CreateVersionedContractInterfaceResult, Version extends keyof CreateVersionedContractInterfaceResult[ContractType] > = { readonly contractType: ContractType; readonly version: Version; readonly contractAddress: string; readonly network: Network; readonly startBlock: number; };