{"version":3,"sources":["../../src/eip712/getNadoEIP712Values.ts"],"sourcesContent":["import { addDecimals, toIntegerString } from '@nadohq/utils';\nimport { subaccountToHex } from '../utils/bytes32';\nimport {\n  EIP712BurnNlpValues,\n  EIP712IsolatedOrderValues,\n  EIP712LeaderboardAuthenticationValues,\n  EIP712LinkSignerValues,\n  EIP712LiquidateSubaccountValues,\n  EIP712ListTriggerOrdersValues,\n  EIP712MintNlpValues,\n  EIP712OrderCancellationValues,\n  EIP712OrderValues,\n  EIP712ProductOrdersCancellationValues,\n  EIP712TransferQuoteValues,\n  EIP712WithdrawCollateralValues,\n  SignableRequestTypeToEIP712Values,\n} from './eip712ValueTypes';\nimport {\n  SignableRequestType,\n  SignableRequestTypeToParams,\n} from './signableRequestType';\nimport {\n  EIP712CancelOrdersParams,\n  EIP712CancelProductOrdersParams,\n  EIP712IsolatedOrderParams,\n  EIP712LeaderboardAuthenticationParams,\n  EIP712LinkSignerParams,\n  EIP712LiquidateSubaccountParams,\n  EIP712ListTriggerOrdersParams,\n  EIP712MintNlpParams,\n  EIP712OrderParams,\n  EIP712TransferQuoteParams,\n  EIP712WithdrawCollateralParams,\n  EIP712BurnNlpParams,\n} from './signatureParamTypes';\n\n/**\n * Returns the EIP712 compatible values for signing.\n *\n * Note: We use the string representation of bigint to be compatible with JSON.stringify\n *\n * @param requestType\n * @param params\n */\nexport function getNadoEIP712Values<TReqType extends SignableRequestType>(\n  requestType: TReqType,\n  params: SignableRequestTypeToParams[TReqType],\n): SignableRequestTypeToEIP712Values[TReqType] {\n  // Typescript does not yet support type narrowing + generic lookup types, hence the hacks here\n  let values: SignableRequestTypeToEIP712Values[keyof SignableRequestTypeToEIP712Values];\n  switch (requestType) {\n    case 'withdraw_collateral':\n      values = getWithdrawCollateralValues(\n        params as EIP712WithdrawCollateralParams,\n      );\n      break;\n    case 'place_order':\n      values = getOrderValues(params as EIP712OrderParams);\n      break;\n    case 'place_isolated_order':\n      values = getIsolatedOrderValues(params as EIP712IsolatedOrderParams);\n      break;\n    case 'list_trigger_orders':\n      values = getListTriggerOrdersValues(\n        params as EIP712ListTriggerOrdersParams,\n      );\n      break;\n    case 'cancel_orders':\n      values = getOrderCancellationValues(params as EIP712CancelOrdersParams);\n      break;\n    case 'cancel_product_orders':\n      values = getProductOrdersCancellationValues(\n        params as EIP712CancelProductOrdersParams,\n      );\n      break;\n    case 'liquidate_subaccount':\n      values = getLiquidateSubaccountValues(\n        params as EIP712LiquidateSubaccountParams,\n      );\n      break;\n    case 'link_signer':\n      values = getLinkSignerValues(params as EIP712LinkSignerParams);\n      break;\n    case 'transfer_quote':\n      values = getTransferQuoteValues(params as EIP712TransferQuoteParams);\n      break;\n    case 'leaderboard_authentication':\n      values = getLeaderboardAuthenticationValues(\n        params as EIP712LeaderboardAuthenticationParams,\n      );\n      break;\n    case 'mint_nlp':\n      values = getMintNlpValues(params as EIP712MintNlpParams);\n      break;\n    case 'burn_nlp':\n      values = getBurnNlpValues(params as EIP712BurnNlpParams);\n      break;\n    default:\n      throw new Error(`Unsupported request type: ${requestType}`);\n  }\n\n  return values as SignableRequestTypeToEIP712Values[TReqType];\n}\n\nfunction getWithdrawCollateralValues(\n  params: EIP712WithdrawCollateralParams,\n): EIP712WithdrawCollateralValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    productId: params.productId,\n    amount: toIntegerString(params.amount),\n    nonce: params.nonce,\n  };\n}\n\nfunction getOrderValues(params: EIP712OrderParams): EIP712OrderValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    priceX18: toIntegerString(addDecimals(params.price)),\n    amount: toIntegerString(params.amount),\n    expiration: toIntegerString(params.expiration),\n    nonce: params.nonce,\n  };\n}\n\nfunction getIsolatedOrderValues(\n  params: EIP712IsolatedOrderParams,\n): EIP712IsolatedOrderValues {\n  return {\n    ...getOrderValues(params),\n    margin: toIntegerString(params.margin),\n  };\n}\n\nfunction getListTriggerOrdersValues(\n  params: EIP712ListTriggerOrdersParams,\n): EIP712ListTriggerOrdersValues {\n  return {\n    recvTime: toIntegerString(params.recvTime),\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n  };\n}\n\nfunction getOrderCancellationValues(\n  params: EIP712CancelOrdersParams,\n): EIP712OrderCancellationValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    productIds: params.productIds,\n    digests: params.digests,\n    nonce: params.nonce,\n  };\n}\n\nfunction getProductOrdersCancellationValues(\n  params: EIP712CancelProductOrdersParams,\n): EIP712ProductOrdersCancellationValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    productIds: params.productIds,\n    nonce: params.nonce,\n  };\n}\n\nfunction getLiquidateSubaccountValues(\n  params: EIP712LiquidateSubaccountParams,\n): EIP712LiquidateSubaccountValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    liquidatee: subaccountToHex({\n      subaccountOwner: params.liquidateeOwner,\n      subaccountName: params.liquidateeName,\n    }),\n    mode: params.mode,\n    healthGroup: toIntegerString(params.healthGroup),\n    amount: toIntegerString(params.amount),\n    nonce: params.nonce,\n  };\n}\n\nfunction getLinkSignerValues(\n  params: EIP712LinkSignerParams,\n): EIP712LinkSignerValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    signer: params.signer,\n    nonce: params.nonce,\n  };\n}\n\nfunction getTransferQuoteValues(\n  params: EIP712TransferQuoteParams,\n): EIP712TransferQuoteValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    recipient: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.recipientSubaccountName,\n    }),\n    amount: toIntegerString(params.amount),\n    nonce: params.nonce,\n  };\n}\n\nfunction getLeaderboardAuthenticationValues(\n  params: EIP712LeaderboardAuthenticationParams,\n): EIP712LeaderboardAuthenticationValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    expiration: toIntegerString(params.expiration),\n  };\n}\n\nfunction getMintNlpValues(params: EIP712MintNlpParams): EIP712MintNlpValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    quoteAmount: toIntegerString(params.quoteAmount),\n    nonce: params.nonce,\n  };\n}\n\nfunction getBurnNlpValues(params: EIP712BurnNlpParams): EIP712BurnNlpValues {\n  return {\n    sender: subaccountToHex({\n      subaccountOwner: params.subaccountOwner,\n      subaccountName: params.subaccountName,\n    }),\n    nlpAmount: toIntegerString(params.nlpAmount),\n    nonce: params.nonce,\n  };\n}\n"],"mappings":"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","names":[]}