import { Side } from "../order-utils/model/side.cjs";

//#region src/types/clob.d.ts
interface ApiKeyCreds {
  key: string;
  secret: string;
  passphrase: string;
}
interface BuilderConfig {
  builderCode: string;
}
interface ApiKeyRaw {
  apiKey: string;
  secret: string;
  passphrase: string;
}
interface L2HeaderArgs {
  method: string;
  requestPath: string;
  body?: string;
}
type SimpleHeaders = Record<string, string | number | boolean>;
interface L1PolyHeader extends SimpleHeaders {
  POLY_ADDRESS: string;
  POLY_SIGNATURE: string;
  POLY_TIMESTAMP: string;
  POLY_NONCE: string;
}
interface L2PolyHeader extends SimpleHeaders {
  POLY_ADDRESS: string;
  POLY_SIGNATURE: string;
  POLY_TIMESTAMP: string;
  POLY_API_KEY: string;
  POLY_PASSPHRASE: string;
}
declare enum OrderType {
  GTC = "GTC",
  FOK = "FOK",
  GTD = "GTD",
  FAK = "FAK",
}
interface OrderPayload {
  orderID: string;
}
interface OrderResponse {
  success: boolean;
  errorMsg: string;
  orderID: string;
  transactionsHashes?: string[];
  tradeIDs?: string[];
  status: string;
  takingAmount: string;
  makingAmount: string;
}
interface OpenOrder {
  id: string;
  status: string;
  owner: string;
  maker_address: string;
  market: string;
  asset_id: string;
  side: string;
  original_size: string;
  size_matched: string;
  price: string;
  associate_trades: string[];
  outcome: string;
  created_at: number;
  expiration: string;
  order_type: string;
}
type OpenOrdersResponse = OpenOrder[];
type PreMigrationOrder = OpenOrder;
type PreMigrationOrdersResponse = PreMigrationOrder[];
interface MakerOrder {
  order_id: string;
  owner: string;
  maker_address: string;
  matched_amount: string;
  price: string;
  fee_rate_bps: string;
  asset_id: string;
  outcome: string;
  side?: Side;
  builder_fee?: string;
  builder_code?: string;
}
interface Trade {
  id: string;
  taker_order_id: string;
  market: string;
  asset_id: string;
  side: Side;
  size: string;
  fee_rate_bps: string;
  price: string;
  status: string;
  match_time: string;
  match_time_nano?: string;
  last_update: string;
  outcome: string;
  bucket_index: number;
  owner: string;
  maker_address: string;
  maker_orders: MakerOrder[];
  transaction_hash?: string;
  err_msg?: string | null;
  trader_side: "TAKER" | "MAKER";
}
interface ApiKeysResponse {
  apiKeys: ApiKeyCreds[];
}
interface BanStatus {
  closed_only: boolean;
}
interface TradeParams {
  id?: string;
  maker_address?: string;
  market?: string;
  asset_id?: string;
  before?: string;
  after?: string;
}
interface BuilderTradeParams extends TradeParams {
  builder_code: string;
}
interface OpenOrderParams {
  id?: string;
  market?: string;
  asset_id?: string;
}
declare enum Chain {
  POLYGON = 137,
  AMOY = 80002,
}
interface MarketPrice {
  t: number;
  p: number;
}
interface PriceHistoryFilterParams {
  market?: string;
  startTs?: number;
  endTs?: number;
  fidelity?: number;
  interval?: PriceHistoryInterval;
}
declare enum PriceHistoryInterval {
  MAX = "max",
  ONE_WEEK = "1w",
  ONE_DAY = "1d",
  SIX_HOURS = "6h",
  ONE_HOUR = "1h",
}
interface DropNotificationParams {
  ids: string[];
}
interface Notification {
  type: number;
  owner: string;
  payload: any;
}
interface OrderMarketCancelParams {
  market?: string;
  asset_id?: string;
}
interface OrderBookSummary {
  market: string;
  asset_id: string;
  timestamp: string;
  bids: OrderSummary[];
  asks: OrderSummary[];
  min_order_size: string;
  tick_size: string;
  neg_risk: boolean;
  hash: string;
  last_trade_price: string;
}
interface OrderSummary {
  price: string;
  size: string;
}
declare enum AssetType {
  COLLATERAL = "COLLATERAL",
  CONDITIONAL = "CONDITIONAL",
}
interface BalanceAllowanceParams {
  asset_type: AssetType;
  token_id?: string;
}
interface BalanceAllowanceResponse {
  balance: string;
  allowances: Record<string, string>;
}
interface OrderScoringParams {
  order_id: string;
}
interface OrderScoring {
  scoring: boolean;
}
interface OrdersScoringParams {
  orderIds: string[];
}
type OrdersScoring = { [orderId in string]: boolean };
type CreateOrderOptions = {
  tickSize: TickSize;
  negRisk?: boolean;
};
type TickSize = "0.1" | "0.01" | "0.001" | "0.0001";
interface RoundConfig {
  readonly price: number;
  readonly size: number;
  readonly amount: number;
}
interface TickSizes {
  [tokenId: string]: TickSize;
}
interface FeeRates {
  [tokenId: string]: number;
}
interface NegRisk {
  [tokenId: string]: boolean;
}
interface FeeInfo {
  rate: number;
  exponent: number;
}
interface FeeInfos {
  [tokenId: string]: FeeInfo;
}
interface BuilderFeeRates {
  [builderCode: string]: {
    maker: number;
    taker: number;
  };
}
type TokenConditionMap = Record<string, string>;
interface FeeDetails {
  r?: number;
  e?: number;
  to?: boolean;
}
interface ClobRewards {
  mi?: number;
  ma?: number;
  e?: boolean;
  smoa?: boolean;
  moas?: number;
}
interface ClobToken {
  t: string;
  o: string;
}
interface MarketDetails {
  c: string;
  t: [ClobToken, ClobToken];
  mts: number;
  nr?: boolean;
  fd?: FeeDetails;
  mbf?: number;
  tbf?: number;
  r: ClobRewards | null;
  ao?: boolean;
  mos?: number;
  sd?: number;
  gst?: string;
  cbos?: boolean;
  aot?: string;
  rfqe?: boolean;
  itode?: boolean;
  ibce?: boolean;
}
interface PaginationPayload {
  readonly limit: number;
  readonly count: number;
  readonly next_cursor: string;
  readonly data: any[];
}
interface BookParams {
  token_id: string;
  side: Side;
}
interface UserEarning {
  date: string;
  condition_id: string;
  asset_address: string;
  maker_address: string;
  earnings: number;
  asset_rate: number;
}
interface TotalUserEarning {
  date: string;
  asset_address: string;
  maker_address: string;
  earnings: number;
  asset_rate: number;
}
interface RewardsPercentages {
  [market: string]: number;
}
interface Token {
  token_id: string;
  outcome: string;
  price: number;
}
interface RewardsConfig {
  asset_address: string;
  start_date: string;
  end_date: string;
  rate_per_day: number;
  total_rewards: number;
}
interface MarketReward {
  condition_id: string;
  question: string;
  market_slug: string;
  event_slug: string;
  image: string;
  rewards_max_spread: number;
  rewards_min_size: number;
  tokens: Token[];
  rewards_config: RewardsConfig[];
}
interface Earning {
  asset_address: string;
  earnings: number;
  asset_rate: number;
}
interface UserRewardsEarning {
  condition_id: string;
  question: string;
  market_slug: string;
  event_slug: string;
  image: string;
  rewards_max_spread: number;
  rewards_min_size: number;
  market_competitiveness: number;
  tokens: Token[];
  rewards_config: RewardsConfig[];
  maker_address: string;
  earning_percentage: number;
  earnings: Earning[];
}
interface BuilderTrade {
  id: string;
  tradeType: string;
  takerOrderHash: string;
  builder: string;
  market: string;
  assetId: string;
  side: string;
  size: string;
  sizeUsdc: string;
  price: string;
  status: string;
  outcome: string;
  outcomeIndex: number;
  owner: string;
  maker: string;
  transactionHash: string;
  matchTime: string;
  bucketIndex: number;
  fee: string;
  feeUsdc: string;
  builderFee: string;
  builderCode: string;
  err_msg?: string | null;
  createdAt: string | null;
  updatedAt: string | null;
}
interface ReadonlyApiKeyResponse {
  apiKey: string;
}
interface MarketTradeEvent {
  event_type: string;
  market: {
    condition_id: string;
    asset_id: string;
    question: string;
    icon: string;
    slug: string;
  };
  user: {
    address: string;
    username: string;
    profile_picture: string;
    optimized_profile_picture: string;
    pseudonym: string;
  };
  side: Side;
  size: string;
  fee_rate_bps: string;
  price: string;
  outcome: string;
  outcome_index: number;
  transaction_hash: string;
  timestamp: string;
}
interface BuilderApiKey {
  key: string;
  secret: string;
  passphrase: string;
}
interface BuilderApiKeyResponse {
  key: string;
  createdAt?: string;
  revokedAt?: string;
}
type ClobErrorResponseBody = {
  error: string;
};
interface TradesPaginatedResponse {
  trades: Trade[];
  next_cursor: string;
  limit: number;
  count: number;
}
interface BuilderTradesResponse {
  trades: BuilderTrade[];
  next_cursor: string;
  limit: number;
  count: number;
}
//#endregion
export { ApiKeyCreds, ApiKeyRaw, ApiKeysResponse, AssetType, BalanceAllowanceParams, BalanceAllowanceResponse, BanStatus, BookParams, BuilderApiKey, BuilderApiKeyResponse, BuilderConfig, BuilderFeeRates, BuilderTrade, BuilderTradeParams, BuilderTradesResponse, Chain, ClobErrorResponseBody, ClobRewards, ClobToken, CreateOrderOptions, DropNotificationParams, Earning, FeeDetails, FeeInfo, FeeInfos, FeeRates, L1PolyHeader, L2HeaderArgs, L2PolyHeader, MakerOrder, MarketDetails, MarketPrice, MarketReward, MarketTradeEvent, NegRisk, Notification, OpenOrder, OpenOrderParams, OpenOrdersResponse, OrderBookSummary, OrderMarketCancelParams, OrderPayload, OrderResponse, OrderScoring, OrderScoringParams, OrderSummary, OrderType, OrdersScoring, OrdersScoringParams, PaginationPayload, PreMigrationOrder, PreMigrationOrdersResponse, PriceHistoryFilterParams, PriceHistoryInterval, ReadonlyApiKeyResponse, RewardsConfig, RewardsPercentages, RoundConfig, SimpleHeaders, TickSize, TickSizes, Token, TokenConditionMap, TotalUserEarning, Trade, TradeParams, TradesPaginatedResponse, UserEarning, UserRewardsEarning };
//# sourceMappingURL=clob.d.cts.map