repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
public Clawd ADK gateway launch mirror
stars
latest
clone command
git clone gitlawb://did:key:z6Mkq5mY...iFZ5/my-project-publ...git clone gitlawb://did:key:z6Mkq5mY.../my-project-publ...2fa351d6docs: add automaton and perps launch sources16d ago| #1 | /** |
| #2 | * Imperial Perps Agent — real Imperial Trading API client |
| #3 | * |
| #4 | * Base: https://api.imperial.space/api/v1 |
| #5 | * Auth: JWT obtained via connect → exchange flow (or pre-set IMPERIAL_JWT env var) |
| #6 | * |
| #7 | * Environment: |
| #8 | * IMPERIAL_JWT — pre-issued JWT (skip auth flow) |
| #9 | * IMPERIAL_WALLET — operator wallet pubkey (base58, never private key) |
| #10 | * IMPERIAL_PROFILE_INDEX — subaccount index 0..5 (default 0) |
| #11 | * IMPERIAL_LIVE — "true" to enable live submission |
| #12 | * IMPERIAL_MAX_SIZE_USD — hard cap per order in USD (default 100) |
| #13 | * IMPERIAL_ALLOWED_SYMS — comma-separated allowlist (default SOL,ETH,BTC) |
| #14 | * IMPERIAL_SLIPPAGE_BPS — default slippage (default 50) |
| #15 | */ |
| #16 | export declare const IMPERIAL_BASE = "https://api.imperial.space/api/v1"; |
| #17 | export type Underwriter = 0 | 1 | 2 | 3; |
| #18 | export declare const Underwriter: { |
| #19 | readonly Jupiter: Underwriter; |
| #20 | readonly Flash: Underwriter; |
| #21 | readonly Phoenix: Underwriter; |
| #22 | readonly GMTrade: Underwriter; |
| #23 | }; |
| #24 | export declare const UNDERWRITER_LABELS: Record<Underwriter, string>; |
| #25 | export type OrderType = 0 | 1 | 2 | 3 | 4 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16; |
| #26 | export declare const ORDER_TYPE_NAMES: Record<number, string>; |
| #27 | export interface ImperialConfig { |
| #28 | jwt: string; |
| #29 | wallet: string; |
| #30 | profileIndex: number; |
| #31 | live: boolean; |
| #32 | maxSizeUsd: number; |
| #33 | allowedSymbols: string[]; |
| #34 | slippageBps: number; |
| #35 | base: string; |
| #36 | } |
| #37 | export declare function loadImperialConfig(env?: NodeJS.ProcessEnv): ImperialConfig; |
| #38 | /** sizeUsd in human dollars → 6-decimal fixed point (1_000_000 = $1) */ |
| #39 | export declare function usdToFixed(usd: number): number; |
| #40 | /** 6-decimal fixed point → human dollars */ |
| #41 | export declare function fixedToUsd(fixed: number): number; |
| #42 | export interface ConnectResponse { |
| #43 | code: string; |
| #44 | } |
| #45 | export interface ExchangeResponse { |
| #46 | jwt: string; |
| #47 | expires_at: string; |
| #48 | } |
| #49 | export interface ExtraData { |
| #50 | worstPrice?: number; |
| #51 | ratchetSize?: number; |
| #52 | waitPrice?: number; |
| #53 | waitDuration?: number; |
| #54 | dcaStartPrice?: number; |
| #55 | dcaEndPrice?: number; |
| #56 | dcaNumLegs?: number; |
| #57 | dcaCloseStartPrice?: number; |
| #58 | dcaCloseEndPrice?: number; |
| #59 | dcaCloseNumLegs?: number; |
| #60 | dcaCloseIntervalSeconds?: number; |
| #61 | dcaCloseRatchetSize?: number; |
| #62 | dcaIntervalSeconds?: number; |
| #63 | dcaRatchetSize?: number; |
| #64 | } |
| #65 | export interface MobileCreateOrderRequest { |
| #66 | wallet: string; |
| #67 | profileIndex: number; |
| #68 | action: 0 | 1; |
| #69 | side: 0 | 1; |
| #70 | underwriter: Underwriter; |
| #71 | orderType: OrderType; |
| #72 | sizeUsd: number; |
| #73 | collateralAmount: number; |
| #74 | slippageBps: number; |
| #75 | fundingStatus: 0 | 1; |
| #76 | priority: number; |
| #77 | triggerPrice: number; |
| #78 | triggerCondition: 0 | 1; |
| #79 | symbol?: string | null; |
| #80 | marketMint?: string | null; |
| #81 | marketPrice?: number; |
| #82 | parentOrderPda?: string | null; |
| #83 | phoenixNative?: unknown | null; |
| #84 | extraData?: ExtraData | null; |
| #85 | } |
| #86 | export interface MobileOrderResponse { |
| #87 | success: boolean; |
| #88 | error: string | null; |
| #89 | orderPda: string | null; |
| #90 | signature: string | null; |
| #91 | } |
| #92 | export interface MobileBatchRequest { |
| #93 | entry: MobileCreateOrderRequest; |
| #94 | closeOrders?: MobileCreateOrderRequest[]; |
| #95 | } |
| #96 | export interface MobileBatchResponse { |
| #97 | entry: MobileOrderResponse; |
| #98 | closeOrders: MobileOrderResponse[]; |
| #99 | } |
| #100 | export interface MobileCancelRequest { |
| #101 | wallet: string; |
| #102 | profileIndex: number; |
| #103 | orderPda: string; |
| #104 | } |
| #105 | export interface MobileCollateralRequest { |
| #106 | wallet: string; |
| #107 | profileIndex: number; |
| #108 | action: 0 | 1; |
| #109 | marketMint: string; |
| #110 | side: 0 | 1; |
| #111 | underwriter: Underwriter; |
| #112 | collateralAmount: number; |
| #113 | price: number; |
| #114 | slippageBps: number; |
| #115 | } |
| #116 | export interface MobileUpdateRequest { |
| #117 | wallet: string; |
| #118 | profileIndex: number; |
| #119 | orderPda: string; |
| #120 | sizeUsd?: number; |
| #121 | triggerPrice?: number; |
| #122 | slippageBps?: number; |
| #123 | closeBps?: number; |
| #124 | priority?: number; |
| #125 | proOrderUpdate?: { |
| #126 | type: string; |
| #127 | worstPrice?: number; |
| #128 | ratchetSize?: number; |
| #129 | waitPrice?: number; |
| #130 | waitDurationSeconds?: number; |
| #131 | } | null; |
| #132 | } |
| #133 | export interface DepositBuildTxRequest { |
| #134 | wallet: string; |
| #135 | profileIndex: number; |
| #136 | amount: number; |
| #137 | mode: "deposit" | "withdraw"; |
| #138 | } |
| #139 | export interface ProfileBalance { |
| #140 | profileIndex: number; |
| #141 | profilePda: string; |
| #142 | usdc: number; |
| #143 | } |
| #144 | export interface BalancesResponse { |
| #145 | wallet: string; |
| #146 | profiles: ProfileBalance[]; |
| #147 | } |
| #148 | export interface FundingRateEntry { |
| #149 | symbol: string; |
| #150 | venue: string; |
| #151 | source: string; |
| #152 | longFundingRatePerHourPercent: number | null; |
| #153 | shortFundingRatePerHourPercent: number | null; |
| #154 | longBorrowRatePerHourPercent: number | null; |
| #155 | shortBorrowRatePerHourPercent: number | null; |
| #156 | } |
| #157 | export interface MarkPriceEntry { |
| #158 | symbol: string; |
| #159 | venue: string; |
| #160 | source: string; |
| #161 | price: number; |
| #162 | fetchedAtUnixMs: number; |
| #163 | } |
| #164 | export interface RouteRecommendation { |
| #165 | underwriter: Underwriter; |
| #166 | venue: string; |
| #167 | estimatedFee: number; |
| #168 | reason: string; |
| #169 | } |
| #170 | export interface PhoenixDepthSnapshot { |
| #171 | symbol: string; |
| #172 | bids: [number, number][]; |
| #173 | asks: [number, number][]; |
| #174 | } |
| #175 | export type AgentDecision = "buy" | "sell" | "watch"; |
| #176 | export interface ImperialMarketSnapshot { |
| #177 | symbol: string; |
| #178 | markPrice: number | null; |
| #179 | fundingRates: FundingRateEntry[]; |
| #180 | depth: PhoenixDepthSnapshot | null; |
| #181 | } |
| #182 | export interface AgentSignal { |
| #183 | symbol: string; |
| #184 | decision: AgentDecision; |
| #185 | confidence: number; |
| #186 | scores: { |
| #187 | momentum: number; |
| #188 | funding: number; |
| #189 | liquidity: number; |
| #190 | }; |
| #191 | rationale: string; |
| #192 | snapshot: ImperialMarketSnapshot; |
| #193 | } |
| #194 | export declare function scoreImperialMarket(snap: ImperialMarketSnapshot): AgentSignal; |
| #195 | export type ExecutionStatus = "preview" | "submitted" | "failed" | "blocked"; |
| #196 | export interface ExecutionRecord { |
| #197 | id: string; |
| #198 | ts: number; |
| #199 | wallet: string; |
| #200 | profileIndex: number; |
| #201 | venue: string; |
| #202 | underwriter: Underwriter; |
| #203 | symbol: string; |
| #204 | side: "long" | "short"; |
| #205 | action: "increase" | "decrease"; |
| #206 | orderType: string; |
| #207 | sizeUsd: number; |
| #208 | dryRun: boolean; |
| #209 | request: unknown; |
| #210 | response: unknown; |
| #211 | status: ExecutionStatus; |
| #212 | error?: string; |
| #213 | txSignature?: string; |
| #214 | orderPda?: string; |
| #215 | } |
| #216 | export declare class ImperialClient { |
| #217 | config: ImperialConfig; |
| #218 | constructor(config?: Partial<ImperialConfig>); |
| #219 | get jwt(): string; |
| #220 | get wallet(): string; |
| #221 | /** |
| #222 | * Exchange a pre-signed connect code for a JWT. |
| #223 | * The caller must sign imperial:mobile-connect:{wallet}:{nonce} externally. |
| #224 | */ |
| #225 | exchangeCode(code: string): Promise<ExchangeResponse>; |
| #226 | /** Revoke the current JWT (call on bot shutdown). */ |
| #227 | revokeJwt(): Promise<void>; |
| #228 | getStatus(): Promise<unknown>; |
| #229 | getFundingRates(): Promise<FundingRateEntry[]>; |
| #230 | getMarkPrices(): Promise<MarkPriceEntry[]>; |
| #231 | getPhoenixMarkPrices(): Promise<MarkPriceEntry[]>; |
| #232 | getPhoenixDepth(symbol?: string): Promise<PhoenixDepthSnapshot | PhoenixDepthSnapshot[]>; |
| #233 | getPhoenixMarkets(): Promise<unknown>; |
| #234 | getFlashMarkets(): Promise<unknown>; |
| #235 | getGMTradeMarkets(): Promise<unknown>; |
| #236 | getGMTradeFundingRates(): Promise<unknown>; |
| #237 | getPositions(wallet?: string): Promise<unknown>; |
| #238 | getOrders(wallet?: string): Promise<unknown>; |
| #239 | getPassthroughOrders(wallet?: string): Promise<unknown>; |
| #240 | getRoute(asset: string, side: 0 | 1, notional: number): Promise<RouteRecommendation>; |
| #241 | getPriorityFee(): Promise<unknown>; |
| #242 | getTrades(wallet?: string): Promise<unknown>; |
| #243 | getBalances(): Promise<BalancesResponse>; |
| #244 | private requireJwt; |
| #245 | private requireLive; |
| #246 | /** Build a baseline order request with all required fields. */ |
| #247 | buildOrderRequest(opts: { |
| #248 | symbol: string; |
| #249 | side: 0 | 1; |
| #250 | action: 0 | 1; |
| #251 | sizeUsd: number; |
| #252 | underwriter?: Underwriter; |
| #253 | orderType?: OrderType; |
| #254 | collateralAmount?: number; |
| #255 | slippageBps?: number; |
| #256 | triggerPrice?: number; |
| #257 | triggerCondition?: 0 | 1; |
| #258 | fundingStatus?: 0 | 1; |
| #259 | priority?: number; |
| #260 | extraData?: ExtraData | null; |
| #261 | parentOrderPda?: string | null; |
| #262 | }): MobileCreateOrderRequest; |
| #263 | /** Submit a single order. Dry-run when IMPERIAL_LIVE is not set. */ |
| #264 | placeOrder(req: MobileCreateOrderRequest, dryRun?: boolean): Promise<{ |
| #265 | response: MobileOrderResponse; |
| #266 | record: ExecutionRecord; |
| #267 | }>; |
| #268 | /** Submit entry + TP/SL legs in one atomic batch request. */ |
| #269 | placeBatch(req: MobileBatchRequest, dryRun?: boolean): Promise<{ |
| #270 | response: MobileBatchResponse; |
| #271 | records: ExecutionRecord[]; |
| #272 | }>; |
| #273 | cancelOrder(req: MobileCancelRequest): Promise<MobileOrderResponse>; |
| #274 | updateOrder(req: MobileUpdateRequest): Promise<MobileOrderResponse>; |
| #275 | editCollateral(req: MobileCollateralRequest): Promise<MobileOrderResponse>; |
| #276 | buildDepositTx(req: DepositBuildTxRequest): Promise<{ |
| #277 | transaction: string; |
| #278 | }>; |
| #279 | syncProfile(wallet?: string, index?: number): Promise<unknown>; |
| #280 | registerPhoenix(wallet?: string, profileIndex?: number): Promise<unknown>; |
| #281 | /** Fetch a full market snapshot for signal scoring. */ |
| #282 | fetchSnapshot(symbol: string): Promise<ImperialMarketSnapshot>; |
| #283 | /** Full OODA cycle: observe → score → decide → optionally route. */ |
| #284 | runCycle(symbol: string, opts?: { |
| #285 | sizeUsd?: number; |
| #286 | autoRoute?: boolean; |
| #287 | }): Promise<{ |
| #288 | signal: AgentSignal; |
| #289 | record: ExecutionRecord | null; |
| #290 | }>; |
| #291 | /** Scan all allowed symbols and return ranked signals. */ |
| #292 | runScan(opts?: { |
| #293 | sizeUsd?: number; |
| #294 | autoRoute?: boolean; |
| #295 | }): Promise<{ |
| #296 | signals: AgentSignal[]; |
| #297 | records: ExecutionRecord[]; |
| #298 | }>; |
| #299 | /** Health summary. */ |
| #300 | healthCheck(): Promise<{ |
| #301 | configured: boolean; |
| #302 | live: boolean; |
| #303 | wallet: string; |
| #304 | profileIndex: number; |
| #305 | allowedSymbols: string[]; |
| #306 | maxSizeUsd: number; |
| #307 | slippageBps: number; |
| #308 | jwtPresent: boolean; |
| #309 | apiStatus: unknown; |
| #310 | warnings: string[]; |
| #311 | }>; |
| #312 | } |
| #313 | export declare function createImperialClient(config?: Partial<ImperialConfig>): ImperialClient; |
| #314 |