Integrate with Cyan in ~1hr!
https://github.com/usecyan/sdk
Install Cyan SDK
npm install @usecyan/sdk
yarn add @usecyan/sdk
Usage
Initialize the SDK instance with an API key, your current web3 provider, and Host URI
import {Cyan} from '@usecyan/sdk'
const apiKey = process.env.CYAN_API_KEY
const provider ... // your web3 provider
const host = 'https://testnet-api.usecyan.com'
const cyan = await Cyan.initiate({apiKey, provider, host})
Method references
configure
This method is responsible for downloading and storing configs from the Cyan API. You need to call this method before starting to use the SDK. However, if you have already initialized the SDK using the initiate
method, then there is no need to call this method.
async configure(): Promise<IConfigs>
priceBnplsStep1
Performs the first step of pricing BNPLs and generating options from the response.
async priceBnplsStep1(
currencyAddress: string,
items: Array<IItem | IItemWithPrice>
): Promise<{
items: (IItemWithPrice & { interestRate: number })[];
options: IOption[];
}>
priceBnplsStep2
Performs the second step of pricing BNPLs. (ICreatePlanParams, IItemWithPrice)
async priceBnplsStep2(args: {
wallet: string;
items: IItemWithPrice[];
option: IOption;
currencyAddress: string;
autoRepayStatus: 0 | 1;
}): Promise<Errored<ICreatePlanParams & { isChanged: boolean; marketName: string }>[]>
pricePawnsStep1
Performs the first step of pricing Pawns and generating options from the response. (IItemWithPrice, IOption)
async pricePawnsStep1(
currencyAddress: string,
items: Array<IItem | IItemWithPrice>
): Promise<{
items: (IItemWithPrice & { interestRate: number })[];
options: IOption[];
}>
pricePawnsStep2
Performs the second step of pricing Pawns. (ICreatePlanParams, IItemWithPrice)
async pricePawnsStep2(args: {
wallet: string;
items: IItemWithPrice[];
option: IOption;
currencyAddress: string;
autoRepayStatus: 0 | 1;
}): Promise<Errored<ICreatePlanParams & { isChanged: boolean; marketName: string }>[]>
acceptPlanInfo
Accepts payment plans by signing a typed data message and sending it to the API. (ICreatePlanParams)
async acceptPlans(plans: ICreatePlanParams[]): Promise<void>
checkAndAllowCurrencyForPlan
Checks if the user has allowed the Payment Plan Contract to spend the specified amount of the given currency, and approves it if not.
async checkAndAllowCurrencyForPlan(currencyAddress: string, amount: BigNumber): Promise<void>
getApproval
Approve Payment Plan Contract to spend a specific ERC721 token on behalf of the signer.
async getApproval(address: string, tokenId: string): Promise<void>
createBnpls
Creates BNPL (Buy Now Pay Later) plans by calling the createBNPL
function of the payment plan contract. (ICreatePlanParams)
async createBnpls(
currencyAddress: string, // The address of the currency to use for the BNPL plans.
plans: ICreatePlanParams[], // An array of objects containing the parameters for each plan to create.
useOriginalWallet: boolean = true // Whether to pay the downpayment using the original wallet or not (only works for native currency)
): Promise<ContractTransaction>
createPawn
Creates pawn plans by calling the createPawn
function of the payment plan contract. (ICreatePlanParams)
async createPawns(plans: ICreatePlanParams[]): Promise<ContractTransaction>
getPaymentInfo
Get the following payment information for a payment plan
async getPaymentInfo(
plan: IPlan, // The payment plan object
isEarlyRepayment: boolean = false // Optional flag to indicate if this is early repayment or not
): Promise<{
payAmountForCollateral: string;
payAmountForInterest: string;
payAmountForService: string;
currentPayment: string;
dueDate?: Date;
}>
pay
Pays the next payment for a payment plan
async pay(plan: IPlan): Promise<ContractTransaction>
payEarly
Pays all the remaining payment for a payment plan
async payEarly(plan: IPlan): Promise<ContractTransaction>
getUserPlans
Retrieve BNPL or Pawn plans, by user, which are Activated, Funded, or in Pending status.
async getUserPlans(address: string): Promise<IPlan[]>
getCyanWallet
Returns an instance of the CyanWallet contract for the current user.
async getCyanWallet(): Promise<CyanWallet>
createCyanWallet
Creates a new CyanWallet for the current user if it does not exist, or returns the existing one.
async createCyanWallet(): Promise<ContractTransaction>
getPaymentPlanContract
Retrieves the PaymentPlanV2 contract instance for the current chain. (Typically, there is no need to utilize this method. However, if direct interaction with the contract is necessary, invoking this method will provide the currently active instance of PaymentPlanContract.)
async getPaymentPlanContract(): Promise<PaymentPlanV2>