import { BigNumber, BigNumberish } from 'ethers'; import { Web3Provider } from '@ethersproject/providers'; export declare type ICyanSDKConstructor = { host: string; apiKey: string; provider: Web3Provider; }; export declare const chains: readonly ["mainnet", "goerli", "sepolia", "polygon", "mumbai", "arbitrum", "bsc", "optimism"]; export declare type IChain = typeof chains[keyof typeof chains]; export declare const PlanTypes: { readonly bnpl: 0; readonly pawn: 1; }; export declare type IPlanType = typeof PlanTypes[keyof typeof PlanTypes]; declare type IGetCollectionsMaxLtvsParams = { planType: IPlanType; chain: IChain; }; declare type ICollectionsWithMaxLtvs = { address: string; maxLtvs: { currencyAddress: string; maxLtv: number; }[]; }[]; export declare type IGetCollectionsMaxLtvs = { params: IGetCollectionsMaxLtvsParams; result: ICollectionsWithMaxLtvs; }; declare const statusType: { Pending: number; Funded: number; Activated: number; }; export declare type IPlanStatus = typeof statusType[keyof typeof statusType]; export declare enum AutoRepayStatus { Disabled = 0, FromCyanWallet = 1, FromMainWallet = 2 } export declare type IPricerMethod = number[]; export declare type ICurrency = { symbol: string; address: string; decimal: number; }; export declare type IPlan = { planId: number; owner: string; totalNumOfPayments: number; currentNumOfPayments: number; status: IPlanStatus; type: 'bnpl' | 'pawn'; wrapperAddress: string; paymentPlanContractAddress: string; collectionAddress: string; autoRepayStatus: AutoRepayStatus; tokenId: string; tokenAmount: number; currency: ICurrency; tokenType: ItemType; }; export declare type FnGetExpectedPlanSync = { params: { amount: BigNumber; downpaymentRate: number; interestRate: number; serviceFeeRate: number; totalNumberOfPayments: number; }; result: { downpaymentAmount: BigNumber; totalInterestFee: BigNumber; totalServiceFee: BigNumber; monthlyAmount: BigNumber; totalAmount: BigNumber; }; }; export declare enum ItemType { ERC721 = 1, ERC1155 = 2, CryptoPunks = 3 } export declare type IConfigs = { factoryContracts: { chainId: number; address: string; }[]; paymentPlanContracts: { chainId: number; address: string; abiName: 'PaymentPlanV1' | 'PaymentPlanV2'; isActive: boolean; }[]; supportedCollections: { address: string; currencies: string[]; }[]; cyanConduitAddresses: { chainId: number; address: string; }[]; }; export declare type IOption = { term: number; loanRate: number; totalNumberOfPayments: number; interestRate: number; serviceFeeRate: number; downpaymentRate: number; counterPaidPayments: number; downpaymentAmount: BigNumber; monthlyAmount: BigNumber; }; export declare type ICreatePlanParams = { item: { amount: number; tokenId: string; contractAddress: string; cyanVaultAddress: string; itemType: ItemType; }; plan: { amount: BigNumber; downPaymentPercent: number; interestRate: number; serviceFeeRate: number; term: number; totalNumberOfPayments: number; counterPaidPayments: number; autoRepayStatus: AutoRepayStatus; }; planId: number; blockNum: number; signature: string; }; export declare type Errored = T | { error: string; }; export declare type ICreateAcceptance = { planIds: number[]; signature: string; }; export declare type IItem = { address: string; tokenId: string; itemType: ItemType; amount: number; isAutoLiquidated: boolean; existingPlanId?: number; privateSaleId?: number; }; export declare type IItemWithPrice = IItem & { price: { amount: BigNumber; currency: string; }; }; export declare type IPricerStep1 = { request: { wallet?: string; chain: IChain; currencyAddress: string; items: Array; }; response: { items: { vaultId: number; interestRate: number; price: string; config: IPricerMethod[]; }[]; }; }; export declare type IPricerStep2 = { request: { items: Array; chain: IChain; currencyAddress: string; autoRepayStatus: AutoRepayStatus; wallet: string; }; response: { plans: Errored<{ planId: number; signature: string; price: string; interestRate: number; vaultAddress: string; marketName?: string; }>[]; blockNumber: number; }; }; export declare type ISdkPricerStep1 = { result: { items: Array; }; }; export declare type ISdkPricerStep2 = { params: { wallet: string; items: Array; currencyAddress: string; autoRepayStatus: AutoRepayStatus; }; result: Errored[]; }; export declare type IOffer = { hash: string; contract: string; price: { currency: { contract: string; decimals: number; symbol: string; name: string; }; amount: { raw: string; decimal: number; }; netAmount: { raw: string; decimal: number; }; }; validUntil: number; }; export declare type IGetCollectionTopBid = { request: { chain: IChain; tokenId?: string; collectionAddress: string; }; result: IOffer[]; }; declare enum OrderType { FULL_OPEN = 0, PARTIAL_OPEN = 1, FULL_RESTRICTED = 2, PARTIAL_RESTRICTED = 3 } declare type OfferItem = { itemType: ItemType; token: string; identifierOrCriteria: string; startAmount: string; endAmount: string; }; declare type ConsiderationItem = { itemType: ItemType; token: string; identifierOrCriteria: string; startAmount: string; endAmount: string; recipient: string; }; declare type OrderParameters = { offerer: string; zone: string; orderType: OrderType; startTime: BigNumberish; endTime: BigNumberish; zoneHash: string; salt: string; offer: OfferItem[]; consideration: ConsiderationItem[]; totalOriginalConsiderationItems: BigNumberish; conduitKey: string; }; declare type MatchOrdersFulfillmentComponent = { orderIndex: number; itemIndex: number; }; export declare type IFulfillOffer = { request: { chain: IChain; planId: number; offerHash: string; }; result: { orders: { parameters: OrderParameters; signature: string; extraData: string; denominator: number; numerator: number; }[]; fulfillments: { offerComponents: MatchOrdersFulfillmentComponent[]; considerationComponents: MatchOrdersFulfillmentComponent[]; }[]; criteriaResolvers: { orderIndex: string; side: number; index: string; identifier: string; criteriaProof: string[]; }[]; recipient: string; }; }; export {};