UNPKG

@arcana/ca-sdk

Version:

Arcana Network's chain abstraction SDK for unified balance in Web3 apps

56 lines (55 loc) 2.22 kB
import { Universe } from "@arcana/ca-common"; import Decimal from "decimal.js"; import Long from "long"; import { ChainList } from "../../chains"; import { Intent, IRequestHandler, onAllowanceHookSource, RequestHandlerInput, SetAllowanceInput, SimulateReturnType, Step, StepInfo, TokenInfo, UserAssets } from "../../typings"; import { FeeStore, getAllowances } from "../../utils"; declare abstract class BaseRequest implements IRequestHandler { readonly input: RequestHandlerInput; abstract destinationUniverse: Universe; protected chainList: ChainList; protected steps: Step[]; constructor(input: RequestHandlerInput); buildIntent: () => Promise<{ intent: Intent; token: { contractAddress: `0x${string}`; decimals: number; name: string; symbol: string; }; } | undefined>; getUnallowedSources(intent: Intent, allowances: Awaited<ReturnType<typeof getAllowances>>): onAllowanceHookSource[]; abstract parseSimulation(input: { assets: UserAssets; simulation: SimulateReturnType; }): { amount: Decimal; gas: Decimal; isIntentRequired: boolean; }; process: () => Promise<void>; processIntent(intent: Intent): Promise<void>; processRFF(intent: Intent): Promise<{ id: Long; requestHash: `0x${string}`; waitForDoubleCheckTx: () => Promise<void>; }>; setAllowances(input: Array<SetAllowanceInput>): Promise<void>; abstract simulateTx(): Promise<null | SimulateReturnType>; abstract waitForFill(requestHash: `0x${string}`, intentID: Long, waitForDoubleCheckTx: () => Promise<void>): Promise<void>; waitForOnAllowanceHook(sources: onAllowanceHookSource[]): Promise<boolean>; protected createExpectedSteps(intent: Intent, unallowedSources?: onAllowanceHookSource[]): void; protected createIntent(input: { amount: Decimal; assets: UserAssets; feeStore: FeeStore; gas: Decimal; gasInToken: Decimal; token: TokenInfo; }): Intent; protected markStepDone: (step: StepInfo, data?: { [k: string]: unknown; }) => void; } export default BaseRequest;