@arcana/ca-sdk
Version:
Arcana Network's chain abstraction SDK for unified balance in Web3 apps
56 lines (55 loc) • 2.22 kB
TypeScript
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;