{"version":3,"sources":["../../src/utils.ts"],"sourcesContent":["import {\n  Deserializer,\n  SimpleTransaction,\n  AccountAuthenticator,\n  TransactionPayloadEntryFunction,\n  TransactionPayload,\n  EntryFunction,\n  Aptos,\n  AptosConfig,\n} from \"@aptos-labs/ts-sdk\";\nimport type { DecodedAptosPayload } from \"./types\";\nimport { getAptosNetwork, getAptosRpcUrl } from \"./constants\";\n\n/**\n * Deserialize an Aptos transaction and authenticator from the payment payload.\n *\n * @param transactionBase64 - The base64 encoded transaction payload\n * @returns The deserialized transaction and authenticator\n */\nexport function deserializeAptosPayment(transactionBase64: string): {\n  transaction: SimpleTransaction;\n  senderAuthenticator: AccountAuthenticator;\n  entryFunction?: EntryFunction;\n} {\n  // Decode the base64 payload\n  const decoded = Buffer.from(transactionBase64, \"base64\").toString(\"utf8\");\n  const parsed: DecodedAptosPayload = JSON.parse(decoded);\n\n  // Deserialize the transaction bytes\n  const transactionBytes = Uint8Array.from(parsed.transaction);\n  const transaction = SimpleTransaction.deserialize(new Deserializer(transactionBytes));\n\n  // Deserialize the authenticator bytes\n  const authBytes = Uint8Array.from(parsed.senderAuthenticator);\n  const senderAuthenticator = AccountAuthenticator.deserialize(new Deserializer(authBytes));\n\n  // Only Entry Function transactions are supported\n  if (!isEntryFunctionPayload(transaction.rawTransaction.payload)) {\n    return { transaction, senderAuthenticator };\n  }\n\n  const entryFunction = transaction.rawTransaction.payload.entryFunction;\n\n  return { transaction, senderAuthenticator, entryFunction };\n}\n\n/**\n * Checks if it's an entry function payload.\n *\n * @param payload - The payload to check\n * @returns True if it's an entry function payload\n */\nexport function isEntryFunctionPayload(\n  payload: TransactionPayload,\n): payload is TransactionPayloadEntryFunction {\n  return \"entryFunction\" in payload;\n}\n\n/**\n * Create an Aptos SDK client for the given network\n *\n * @param network - CAIP-2 network identifier (e.g., \"aptos:1\")\n * @param rpcUrl - Optional custom RPC URL\n * @returns Aptos SDK client\n */\nexport function createAptosClient(network: string, rpcUrl?: string): Aptos {\n  const aptosNetwork = getAptosNetwork(network);\n  const fullnodeUrl = rpcUrl || getAptosRpcUrl(aptosNetwork);\n\n  const config = new AptosConfig({\n    network: aptosNetwork,\n    fullnode: fullnodeUrl,\n  });\n\n  return new Aptos(config);\n}\n\n/**\n * Encode an Aptos payment payload to base64\n *\n * @param transactionBytes - The serialized transaction bytes\n * @param authenticatorBytes - The serialized authenticator bytes\n * @returns Base64 encoded payload\n */\nexport function encodeAptosPayload(\n  transactionBytes: Uint8Array,\n  authenticatorBytes: Uint8Array,\n): string {\n  const payload: DecodedAptosPayload = {\n    transaction: Array.from(transactionBytes),\n    senderAuthenticator: Array.from(authenticatorBytes),\n  };\n  return Buffer.from(JSON.stringify(payload)).toString(\"base64\");\n}\n"],"mappings":";;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,OACK;AAUA,SAAS,wBAAwB,mBAItC;AAEA,QAAM,UAAU,OAAO,KAAK,mBAAmB,QAAQ,EAAE,SAAS,MAAM;AACxE,QAAM,SAA8B,KAAK,MAAM,OAAO;AAGtD,QAAM,mBAAmB,WAAW,KAAK,OAAO,WAAW;AAC3D,QAAM,cAAc,kBAAkB,YAAY,IAAI,aAAa,gBAAgB,CAAC;AAGpF,QAAM,YAAY,WAAW,KAAK,OAAO,mBAAmB;AAC5D,QAAM,sBAAsB,qBAAqB,YAAY,IAAI,aAAa,SAAS,CAAC;AAGxF,MAAI,CAAC,uBAAuB,YAAY,eAAe,OAAO,GAAG;AAC/D,WAAO,EAAE,aAAa,oBAAoB;AAAA,EAC5C;AAEA,QAAM,gBAAgB,YAAY,eAAe,QAAQ;AAEzD,SAAO,EAAE,aAAa,qBAAqB,cAAc;AAC3D;AAQO,SAAS,uBACd,SAC4C;AAC5C,SAAO,mBAAmB;AAC5B;AASO,SAAS,kBAAkB,SAAiB,QAAwB;AACzE,QAAM,eAAe,gBAAgB,OAAO;AAC5C,QAAM,cAAc,UAAU,eAAe,YAAY;AAEzD,QAAM,SAAS,IAAI,YAAY;AAAA,IAC7B,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,CAAC;AAED,SAAO,IAAI,MAAM,MAAM;AACzB;AASO,SAAS,mBACd,kBACA,oBACQ;AACR,QAAM,UAA+B;AAAA,IACnC,aAAa,MAAM,KAAK,gBAAgB;AAAA,IACxC,qBAAqB,MAAM,KAAK,kBAAkB;AAAA,EACpD;AACA,SAAO,OAAO,KAAK,KAAK,UAAU,OAAO,CAAC,EAAE,SAAS,QAAQ;AAC/D;","names":[]}