@aeternity/aepp-sdk 14.1.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/aepp-sdk.browser-script.cjs +1 -1
  2. package/dist/aepp-sdk.browser-script.cjs.map +1 -1
  3. package/dist/aepp-sdk.browser.cjs +1 -1
  4. package/dist/aepp-sdk.browser.cjs.map +1 -1
  5. package/dist/aepp-sdk.cjs +10776 -6350
  6. package/dist/aepp-sdk.cjs.map +1 -1
  7. package/es/account/Base.d.ts +6 -1
  8. package/es/account/Base.js.map +1 -1
  9. package/es/account/Generalized.d.ts +1 -1
  10. package/es/account/Generalized.js +7 -1
  11. package/es/account/Generalized.js.map +1 -1
  12. package/es/aens.d.ts +10 -2
  13. package/es/aens.js +10 -2
  14. package/es/aens.js.map +1 -1
  15. package/es/apis/middleware/models/index.js.map +1 -1
  16. package/es/apis/node/models/index.d.ts +405 -79
  17. package/es/apis/node/models/index.js.map +1 -1
  18. package/es/apis/node/models/mappers.d.ts +54 -4
  19. package/es/apis/node/models/mappers.js +1910 -500
  20. package/es/apis/node/models/mappers.js.map +1 -1
  21. package/es/apis/node/node.d.ts +28 -6
  22. package/es/apis/node/node.js +276 -5
  23. package/es/apis/node/node.js.map +1 -1
  24. package/es/channel/Contract.d.ts +5 -0
  25. package/es/channel/Contract.js +8 -2
  26. package/es/channel/Contract.js.map +1 -1
  27. package/es/channel/handlers.js +3 -3
  28. package/es/channel/handlers.js.map +1 -1
  29. package/es/contract/compiler/Cli.js +6 -2
  30. package/es/contract/compiler/Cli.js.map +1 -1
  31. package/es/contract/ga.d.ts +5 -2
  32. package/es/contract/ga.js +53 -21
  33. package/es/contract/ga.js.map +1 -1
  34. package/es/index-browser.d.ts +3 -1
  35. package/es/index-browser.js +2 -1
  36. package/es/index-browser.js.map +1 -1
  37. package/es/tx/builder/constants.d.ts +12 -2
  38. package/es/tx/builder/constants.js +11 -1
  39. package/es/tx/builder/constants.js.map +1 -1
  40. package/es/tx/builder/entry/index.js +6 -0
  41. package/es/tx/builder/entry/index.js.map +1 -1
  42. package/es/tx/builder/entry/schema.d.ts +10 -10
  43. package/es/tx/builder/field-types/ct-version.d.ts +14 -0
  44. package/es/tx/builder/field-types/ct-version.js +14 -0
  45. package/es/tx/builder/field-types/ct-version.js.map +1 -1
  46. package/es/tx/builder/field-types/fee.d.ts +9 -7
  47. package/es/tx/builder/field-types/fee.js +75 -66
  48. package/es/tx/builder/field-types/fee.js.map +1 -1
  49. package/es/tx/builder/field-types/gas-limit.d.ts +5 -3
  50. package/es/tx/builder/field-types/gas-limit.js +25 -14
  51. package/es/tx/builder/field-types/gas-limit.js.map +1 -1
  52. package/es/tx/builder/field-types/gas-price.d.ts +6 -4
  53. package/es/tx/builder/field-types/gas-price.js +87 -21
  54. package/es/tx/builder/field-types/gas-price.js.map +1 -1
  55. package/es/tx/builder/field-types/interface.d.ts +20 -0
  56. package/es/tx/builder/field-types/interface.js +17 -1
  57. package/es/tx/builder/field-types/interface.js.map +1 -1
  58. package/es/tx/builder/field-types/name-fee.d.ts +3 -2
  59. package/es/tx/builder/field-types/name-fee.js +6 -0
  60. package/es/tx/builder/field-types/name-fee.js.map +1 -1
  61. package/es/tx/builder/field-types/pointers.d.ts +2 -1
  62. package/es/tx/builder/field-types/pointers.js +6 -2
  63. package/es/tx/builder/field-types/pointers.js.map +1 -1
  64. package/es/tx/builder/field-types/transaction.d.ts +4 -1
  65. package/es/tx/builder/field-types/transaction.js +18 -3
  66. package/es/tx/builder/field-types/transaction.js.map +1 -1
  67. package/es/tx/builder/field-types/ttl.d.ts +1 -2
  68. package/es/tx/builder/field-types/ttl.js +7 -4
  69. package/es/tx/builder/field-types/ttl.js.map +1 -1
  70. package/es/tx/builder/field-types/with-formatting.d.ts +1 -1
  71. package/es/tx/builder/field-types/with-formatting.js +1 -1
  72. package/es/tx/builder/field-types/with-formatting.js.map +1 -1
  73. package/es/tx/builder/index.d.ts +13 -0
  74. package/es/tx/builder/index.js +92 -5
  75. package/es/tx/builder/index.js.map +1 -1
  76. package/es/tx/builder/protocol-parameters.d.ts +123 -0
  77. package/es/tx/builder/protocol-parameters.js +519 -0
  78. package/es/tx/builder/protocol-parameters.js.map +1 -0
  79. package/es/tx/builder/schema.d.ts +179 -201
  80. package/es/tx/builder/schema.js +5 -1
  81. package/es/tx/builder/schema.js.map +1 -1
  82. package/es/tx/execution-cost.js +5 -5
  83. package/es/tx/execution-cost.js.map +1 -1
  84. package/es/tx/transaction-signer.js +2 -2
  85. package/es/tx/transaction-signer.js.map +1 -1
  86. package/es/tx/validator.js +4 -4
  87. package/es/tx/validator.js.map +1 -1
  88. package/es/utils/wrap-proxy.d.ts +10 -0
  89. package/es/utils/wrap-proxy.js +18 -0
  90. package/es/utils/wrap-proxy.js.map +1 -1
  91. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","names":["changeStatus","changeState","notify","emit","disconnect","unpackTx","buildTx","decode","IllegalArgumentError","InsufficientBalanceError","ChannelConnectionError","UnexpectedChannelMessageError","ChannelError","Tag","snakeToPascal","appendSignature","tx","signFn","signatures","encodedTx","SignedTx","payloadTx","result","signatures2","tag","concat","signAndNotify","channel","method","data","signedTx","signed_tx","isError","key","error","handleUnexpectedMessage","_channel","message","state","reject","Object","assign","JSON","stringify","wsMessage","handler","channelOpen","awaitingCompletion","onSuccess","resolve","accepted","errorCode","params","error_code","errorMessage","error_msg","event","codes","map","d","code","includes","awaitingConnection","channelInfoStatus","nextStatus","awaitingChannelCreateTx","awaitingOpenConfirmation","_fsmId","fsm_id","payload","channelClosed","awaitingReestablish","awaitingChannelReestablished","_","message2","state2","awaitingReconnection","_options","role","sign","awaitingOnChainTx","awaitingBlockInclusion","info","type","_channelId","channel_id","awaitingChannelsUpdate","awaitingTxSignRequest","enter","_message$method$match","match","updates","awaitingUpdateConflict","awaitingShutdownTx","awaitingLeave","channelId","closeTx"],"sources":["../../src/channel/handlers.ts"],"sourcesContent":["/* eslint-disable consistent-return */\n/* eslint-disable default-case */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n ChannelState,\n changeStatus,\n changeState,\n notify,\n emit,\n disconnect,\n ChannelMessage,\n ChannelFsm,\n SignTx,\n ChannelStatus,\n ChannelEvents,\n} from './internal.js';\nimport { unpackTx, buildTx } from '../tx/builder/index.js';\nimport { decode, Encoded } from '../utils/encoder.js';\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError,\n ChannelError,\n} from '../utils/errors.js';\nimport type Channel from './Base.js';\nimport { Tag } from '../tx/builder/constants.js';\nimport { snakeToPascal } from '../utils/string.js';\n\nexport async function appendSignature(\n tx: Encoded.Transaction,\n signFn: SignTx,\n): Promise<Encoded.Transaction | number | null> {\n const { signatures, encodedTx } = unpackTx(tx, Tag.SignedTx);\n const payloadTx = buildTx(encodedTx);\n const result = await signFn(payloadTx);\n if (typeof result === 'string') {\n const { signatures: signatures2 } = unpackTx(result, Tag.SignedTx);\n return buildTx({\n tag: Tag.SignedTx,\n signatures: signatures.concat(signatures2),\n encodedTx: decode(payloadTx),\n });\n }\n return result;\n}\n\nexport async function signAndNotify(\n channel: Channel,\n method: string,\n data: {\n tx?: Encoded.Transaction;\n signed_tx?: Encoded.Transaction;\n },\n signFn: SignTx,\n): Promise<boolean> {\n let signedTx;\n if (data.tx != null) signedTx = await signFn(data.tx);\n else if (data.signed_tx != null) signedTx = await appendSignature(data.signed_tx, signFn);\n else throw new ChannelError(\"Can't find transaction in message\");\n const isError = typeof signedTx !== 'string';\n const key = data.tx != null ? 'tx' : 'signed_tx';\n notify(channel, method, isError ? { error: signedTx ?? 1 } : { [key]: signedTx });\n return isError;\n}\n\nexport function handleUnexpectedMessage(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n state?.reject?.(\n Object.assign(\n new UnexpectedChannelMessageError(\n `Unexpected message received:\\n\\n${JSON.stringify(message)}`,\n ),\n { wsMessage: message },\n ),\n );\n return { handler: channelOpen };\n}\n\nexport function awaitingCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n onSuccess?: typeof handleUnexpectedMessage,\n): ChannelFsm {\n if (onSuccess != null && message.method === 'channels.update') {\n return onSuccess(channel, message, state);\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n if (message.error != null) {\n const codes = message.error.data.map((d) => d.code);\n if (codes.includes(1001)) {\n state.reject(new InsufficientBalanceError('Insufficient balance'));\n } else if (codes.includes(1002)) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'));\n } else {\n state.reject(new ChannelConnectionError(message.error.message));\n }\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingConnection(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info') {\n const channelInfoStatus: string = message.params.data.event;\n\n let nextStatus: ChannelStatus | null = null;\n if (channelInfoStatus === 'channel_accept') nextStatus = 'accepted';\n if (channelInfoStatus === 'funding_created') nextStatus = 'halfSigned';\n if (nextStatus != null) {\n changeStatus(channel, nextStatus);\n return { handler: awaitingChannelCreateTx };\n }\n\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation };\n }\n if (message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n return { handler: awaitingConnection };\n }\n return { handler: awaitingConnection };\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message?.payload?.message));\n return { handler: channelClosed };\n }\n}\n\nexport async function awaitingReestablish(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.info' && message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n return {\n handler: function awaitingChannelReestablished(\n _: Channel,\n message2: ChannelMessage,\n state2: ChannelState,\n ): ChannelFsm | undefined {\n if (\n message2.method === 'channels.info' &&\n message2.params.data.event === 'channel_reestablished'\n )\n return { handler: awaitingOpenConfirmation };\n return handleUnexpectedMessage(channel, message2, state2);\n },\n };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingReconnection(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.info' && message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n const { signedTx } = await channel.state();\n changeState(channel, signedTx == null ? '' : buildTx(signedTx));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingChannelCreateTx(\n channel: Channel,\n message: ChannelMessage,\n): Promise<ChannelFsm | undefined> {\n const tag = channel._options.role === 'initiator' ? 'initiator_sign' : 'responder_sign';\n if (message.method === `channels.sign.${tag}`) {\n await signAndNotify(channel, `channels.${tag}`, message.params.data, async (tx) =>\n channel._options.sign(tag, tx),\n );\n return { handler: awaitingOnChainTx };\n }\n}\n\nexport function awaitingOnChainTx(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n function awaitingBlockInclusion(_: Channel, message2: ChannelMessage): ChannelFsm | undefined {\n if (message2.method === 'channels.info') {\n switch (message2.params.data.event) {\n case 'funding_created':\n case 'own_funding_locked':\n return { handler: awaitingBlockInclusion };\n case 'funding_locked':\n return { handler: awaitingOpenConfirmation };\n }\n }\n if (message2.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message2.params.data.tx, {\n info: message2.params.data.info,\n type: message2.params.data.type,\n });\n return { handler: awaitingBlockInclusion };\n }\n }\n\n if (message.method === 'channels.on_chain_tx') {\n const { info } = message.params.data;\n const { role } = channel._options;\n if (\n (info === 'funding_signed' && role === 'initiator') ||\n (info === 'funding_created' && role === 'responder')\n ) {\n return { handler: awaitingBlockInclusion };\n }\n }\n if (\n message.method === 'channels.info' &&\n message.params.data.event === 'funding_signed' &&\n channel._options.role === 'initiator'\n ) {\n channel._channelId = message.params.channel_id;\n changeStatus(channel, 'signed');\n return { handler: awaitingOnChainTx };\n }\n}\n\nfunction awaitingOpenConfirmation(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channel._channelId = message.params.channel_id;\n return {\n handler: function awaitingChannelsUpdate(\n _: Channel,\n message2: ChannelMessage,\n state2: ChannelState,\n ): ChannelFsm | undefined {\n if (message2.method === 'channels.update') {\n changeState(channel, message2.params.data.state);\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message2, state2);\n },\n };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function channelOpen(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest };\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, snakeToPascal(message.params.data.event) as keyof ChannelEvents);\n return { handler: channelOpen };\n case 'fsm_up':\n channel._fsmId = message.params.data.fsm_id;\n return { handler: channelOpen };\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen };\n case 'closing':\n changeStatus(channel, 'closing');\n return { handler: channelOpen };\n case 'closed_confirmed':\n changeStatus(channel, 'closed');\n return { handler: channelClosed };\n case 'died':\n changeStatus(channel, 'died');\n return { handler: channelClosed };\n case 'shutdown':\n return { handler: channelOpen };\n }\n break;\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n return { handler: channelOpen };\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen };\n case 'channels.update':\n changeState(channel, message.params.data.state);\n return { handler: channelOpen };\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state);\n }\n}\nchannelOpen.enter = (channel: Channel) => {\n changeStatus(channel, 'open');\n};\n\nasync function awaitingTxSignRequest(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) ?? [];\n if (tag == null) return handleUnexpectedMessage(channel, message, state);\n const isError = await signAndNotify(channel, `channels.${tag}`, message.params.data, async (tx) =>\n channel._options.sign(tag, tx, { updates: message.params.data.updates }),\n );\n\n function awaitingUpdateConflict(_: Channel, message2: ChannelMessage): ChannelFsm {\n if (message2.error != null) {\n return { handler: awaitingUpdateConflict, state };\n }\n if (message2.method === 'channels.conflict') {\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message2, state);\n }\n return isError ? { handler: awaitingUpdateConflict, state } : { handler: channelOpen };\n}\n\nexport async function awaitingShutdownTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method !== 'channels.sign.shutdown_sign') {\n return handleUnexpectedMessage(channel, message, state);\n }\n await signAndNotify(channel, 'channels.shutdown_sign', message.params.data, async (tx) =>\n state.sign(tx),\n );\n return {\n handler(_: Channel, message2: ChannelMessage): ChannelFsm {\n if (message2.method !== 'channels.on_chain_tx') {\n return handleUnexpectedMessage(channel, message2, state);\n }\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state };\n },\n state,\n };\n}\n\nexport function awaitingLeave(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state });\n disconnect(channel);\n return { handler: channelClosed };\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function channelClosed(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (state == null) return { handler: channelClosed };\n if (message.params.data.event === 'closing') return { handler: channelClosed, state };\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx;\n return { handler: channelClosed, state };\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx);\n return { handler: channelClosed };\n }\n return { handler: channelClosed, state };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAEEA,YAAY,EACZC,WAAW,EACXC,MAAM,EACNC,IAAI,EACJC,UAAU,QAML,eAAe;AACtB,SAASC,QAAQ,EAAEC,OAAO,QAAQ,wBAAwB;AAC1D,SAASC,MAAM,QAAiB,qBAAqB;AACrD,SACEC,oBAAoB,EACpBC,wBAAwB,EACxBC,sBAAsB,EACtBC,6BAA6B,EAC7BC,YAAY,QACP,oBAAoB;AAE3B,SAASC,GAAG,QAAQ,4BAA4B;AAChD,SAASC,aAAa,QAAQ,oBAAoB;AAElD,OAAO,eAAeC,eAAeA,CACnCC,EAAuB,EACvBC,MAAc,EACgC;EAC9C,MAAM;IAAEC,UAAU;IAAEC;EAAU,CAAC,GAAGd,QAAQ,CAACW,EAAE,EAAEH,GAAG,CAACO,QAAQ,CAAC;EAC5D,MAAMC,SAAS,GAAGf,OAAO,CAACa,SAAS,CAAC;EACpC,MAAMG,MAAM,GAAG,MAAML,MAAM,CAACI,SAAS,CAAC;EACtC,IAAI,OAAOC,MAAM,KAAK,QAAQ,EAAE;IAC9B,MAAM;MAAEJ,UAAU,EAAEK;IAAY,CAAC,GAAGlB,QAAQ,CAACiB,MAAM,EAAET,GAAG,CAACO,QAAQ,CAAC;IAClE,OAAOd,OAAO,CAAC;MACbkB,GAAG,EAAEX,GAAG,CAACO,QAAQ;MACjBF,UAAU,EAAEA,UAAU,CAACO,MAAM,CAACF,WAAW,CAAC;MAC1CJ,SAAS,EAAEZ,MAAM,CAACc,SAAS;IAC7B,CAAC,CAAC;EACJ;EACA,OAAOC,MAAM;AACf;AAEA,OAAO,eAAeI,aAAaA,CACjCC,OAAgB,EAChBC,MAAc,EACdC,IAGC,EACDZ,MAAc,EACI;EAClB,IAAIa,QAAQ;EACZ,IAAID,IAAI,CAACb,EAAE,IAAI,IAAI,EAAEc,QAAQ,GAAG,MAAMb,MAAM,CAACY,IAAI,CAACb,EAAE,CAAC,CAAC,KACjD,IAAIa,IAAI,CAACE,SAAS,IAAI,IAAI,EAAED,QAAQ,GAAG,MAAMf,eAAe,CAACc,IAAI,CAACE,SAAS,EAAEd,MAAM,CAAC,CAAC,KACrF,MAAM,IAAIL,YAAY,CAAC,mCAAmC,CAAC;EAChE,MAAMoB,OAAO,GAAG,OAAOF,QAAQ,KAAK,QAAQ;EAC5C,MAAMG,GAAG,GAAGJ,IAAI,CAACb,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,WAAW;EAChDd,MAAM,CAACyB,OAAO,EAAEC,MAAM,EAAEI,OAAO,GAAG;IAAEE,KAAK,EAAEJ,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI;EAAE,CAAC,GAAG;IAAE,CAACG,GAAG,GAAGH;EAAS,CAAC,CAAC;EACjF,OAAOE,OAAO;AAChB;AAEA,OAAO,SAASG,uBAAuBA,CACrCC,QAAiB,EACjBC,OAAuB,EACvBC,KAAmB,EACP;EACZA,KAAK,EAAEC,MAAM,GACXC,MAAM,CAACC,MAAM,CACX,IAAI9B,6BAA6B,CAC/B,mCAAmC+B,IAAI,CAACC,SAAS,CAACN,OAAO,CAAC,EAC5D,CAAC,EACD;IAAEO,SAAS,EAAEP;EAAQ,CACvB,CACF,CAAC;EACD,OAAO;IAAEQ,OAAO,EAAEC;EAAY,CAAC;AACjC;AAEA,OAAO,SAASC,kBAAkBA,CAChCpB,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACnBU,SAA0C,EAC9B;EACZ,IAAIA,SAAS,IAAI,IAAI,IAAIX,OAAO,CAACT,MAAM,KAAK,iBAAiB,EAAE;IAC7D,OAAOoB,SAAS,CAACrB,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;EAC3C;EACA,IAAID,OAAO,CAACT,MAAM,KAAK,mBAAmB,EAAE;IAC1CU,KAAK,CAACW,OAAO,CAAC;MACZC,QAAQ,EAAE,KAAK;MACfC,SAAS,EAAEd,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACwB,UAAU;MACzCC,YAAY,EAAEjB,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC0B;IACpC,CAAC,CAAC;IACF,OAAO;MAAEV,OAAO,EAAEC;IAAY,CAAC;EACjC;EACA,IAAIT,OAAO,CAACT,MAAM,KAAK,eAAe,EAAE;IACtC,IAAIS,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,gBAAgB,EAAE;MAClDlB,KAAK,CAACW,OAAO,CAAC;QAAEC,QAAQ,EAAE;MAAM,CAAC,CAAC;MAClC,OAAO;QAAEL,OAAO,EAAEC;MAAY,CAAC;IACjC;EACF;EACA,IAAIT,OAAO,CAACH,KAAK,IAAI,IAAI,EAAE;IACzB,MAAMuB,KAAK,GAAGpB,OAAO,CAACH,KAAK,CAACL,IAAI,CAAC6B,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,CAAC;IACnD,IAAIH,KAAK,CAACI,QAAQ,CAAC,IAAI,CAAC,EAAE;MACxBvB,KAAK,CAACC,MAAM,CAAC,IAAI9B,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IACpE,CAAC,MAAM,IAAIgD,KAAK,CAACI,QAAQ,CAAC,IAAI,CAAC,EAAE;MAC/BvB,KAAK,CAACC,MAAM,CAAC,IAAI/B,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACrE,CAAC,MAAM;MACL8B,KAAK,CAACC,MAAM,CAAC,IAAI7B,sBAAsB,CAAC2B,OAAO,CAACH,KAAK,CAACG,OAAO,CAAC,CAAC;IACjE;IACA,OAAO;MAAEQ,OAAO,EAAEC;IAAY,CAAC;EACjC;EACA,OAAOX,uBAAuB,CAACR,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;AACzD;AAEA,OAAO,SAASwB,kBAAkBA,CAChCnC,OAAgB,EAChBU,OAAuB,EACC;EACxB,IAAIA,OAAO,CAACT,MAAM,KAAK,eAAe,EAAE;IACtC,MAAMmC,iBAAyB,GAAG1B,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK;IAE3D,IAAIQ,UAAgC,GAAG,IAAI;IAC3C,IAAID,iBAAiB,KAAK,gBAAgB,EAAEC,UAAU,GAAG,UAAU;IACnE,IAAID,iBAAiB,KAAK,iBAAiB,EAAEC,UAAU,GAAG,YAAY;IACtE,IAAIA,UAAU,IAAI,IAAI,EAAE;MACtBhE,YAAY,CAAC2B,OAAO,EAAEqC,UAAU,CAAC;MACjC,OAAO;QAAEnB,OAAO,EAAEoB;MAAwB,CAAC;IAC7C;IAEA,IAAI5B,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,uBAAuB,EAAE;MACzD,OAAO;QAAEX,OAAO,EAAEqB;MAAyB,CAAC;IAC9C;IACA,IAAI7B,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,QAAQ,EAAE;MAC1C7B,OAAO,CAACwC,MAAM,GAAG9B,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACuC,MAAM;MAC3C,OAAO;QAAEvB,OAAO,EAAEiB;MAAmB,CAAC;IACxC;IACA,OAAO;MAAEjB,OAAO,EAAEiB;IAAmB,CAAC;EACxC;EACA,IAAIzB,OAAO,CAACT,MAAM,KAAK,gBAAgB,EAAE;IACvCzB,IAAI,CAACwB,OAAO,EAAE,OAAO,EAAE,IAAIjB,sBAAsB,CAAC2B,OAAO,EAAEgC,OAAO,EAAEhC,OAAO,CAAC,CAAC;IAC7E,OAAO;MAAEQ,OAAO,EAAEyB;IAAc,CAAC;EACnC;AACF;AAEA,OAAO,eAAeC,mBAAmBA,CACvC5C,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACE;EACrB,IAAID,OAAO,CAACT,MAAM,KAAK,eAAe,IAAIS,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,QAAQ,EAAE;IAChF7B,OAAO,CAACwC,MAAM,GAAG9B,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACuC,MAAM;IAC3C,OAAO;MACLvB,OAAO,EAAE,SAAS2B,4BAA4BA,CAC5CC,CAAU,EACVC,QAAwB,EACxBC,MAAoB,EACI;QACxB,IACED,QAAQ,CAAC9C,MAAM,KAAK,eAAe,IACnC8C,QAAQ,CAACtB,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,uBAAuB,EAEtD,OAAO;UAAEX,OAAO,EAAEqB;QAAyB,CAAC;QAC9C,OAAO/B,uBAAuB,CAACR,OAAO,EAAE+C,QAAQ,EAAEC,MAAM,CAAC;MAC3D;IACF,CAAC;EACH;EACA,OAAOxC,uBAAuB,CAACR,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;AACzD;AAEA,OAAO,eAAesC,oBAAoBA,CACxCjD,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACE;EACrB,IAAID,OAAO,CAACT,MAAM,KAAK,eAAe,IAAIS,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,QAAQ,EAAE;IAChF7B,OAAO,CAACwC,MAAM,GAAG9B,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACuC,MAAM;IAC3C,MAAM;MAAEtC;IAAS,CAAC,GAAG,MAAMH,OAAO,CAACW,KAAK,CAAC,CAAC;IAC1CrC,WAAW,CAAC0B,OAAO,EAAEG,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAGxB,OAAO,CAACwB,QAAQ,CAAC,CAAC;IAC/D,OAAO;MAAEe,OAAO,EAAEC;IAAY,CAAC;EACjC;EACA,OAAOX,uBAAuB,CAACR,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;AACzD;AAEA,OAAO,eAAe2B,uBAAuBA,CAC3CtC,OAAgB,EAChBU,OAAuB,EACU;EACjC,MAAMb,GAAG,GAAGG,OAAO,CAACkD,QAAQ,CAACC,IAAI,KAAK,WAAW,GAAG,gBAAgB,GAAG,gBAAgB;EACvF,IAAIzC,OAAO,CAACT,MAAM,KAAK,iBAAiBJ,GAAG,EAAE,EAAE;IAC7C,MAAME,aAAa,CAACC,OAAO,EAAE,YAAYH,GAAG,EAAE,EAAEa,OAAO,CAACe,MAAM,CAACvB,IAAI,EAAE,MAAOb,EAAE,IAC5EW,OAAO,CAACkD,QAAQ,CAACE,IAAI,CAACvD,GAAG,EAAER,EAAE,CAC/B,CAAC;IACD,OAAO;MAAE6B,OAAO,EAAEmC;IAAkB,CAAC;EACvC;AACF;AAEA,OAAO,SAASA,iBAAiBA,CAC/BrD,OAAgB,EAChBU,OAAuB,EACC;EACxB,SAAS4C,sBAAsBA,CAACR,CAAU,EAAEC,QAAwB,EAA0B;IAC5F,IAAIA,QAAQ,CAAC9C,MAAM,KAAK,eAAe,EAAE;MACvC,QAAQ8C,QAAQ,CAACtB,MAAM,CAACvB,IAAI,CAAC2B,KAAK;QAChC,KAAK,iBAAiB;QACtB,KAAK,oBAAoB;UACvB,OAAO;YAAEX,OAAO,EAAEoC;UAAuB,CAAC;QAC5C,KAAK,gBAAgB;UACnB,OAAO;YAAEpC,OAAO,EAAEqB;UAAyB,CAAC;MAChD;IACF;IACA,IAAIQ,QAAQ,CAAC9C,MAAM,KAAK,sBAAsB,EAAE;MAC9CzB,IAAI,CAACwB,OAAO,EAAE,WAAW,EAAE+C,QAAQ,CAACtB,MAAM,CAACvB,IAAI,CAACb,EAAE,EAAE;QAClDkE,IAAI,EAAER,QAAQ,CAACtB,MAAM,CAACvB,IAAI,CAACqD,IAAI;QAC/BC,IAAI,EAAET,QAAQ,CAACtB,MAAM,CAACvB,IAAI,CAACsD;MAC7B,CAAC,CAAC;MACF,OAAO;QAAEtC,OAAO,EAAEoC;MAAuB,CAAC;IAC5C;EACF;EAEA,IAAI5C,OAAO,CAACT,MAAM,KAAK,sBAAsB,EAAE;IAC7C,MAAM;MAAEsD;IAAK,CAAC,GAAG7C,OAAO,CAACe,MAAM,CAACvB,IAAI;IACpC,MAAM;MAAEiD;IAAK,CAAC,GAAGnD,OAAO,CAACkD,QAAQ;IACjC,IACGK,IAAI,KAAK,gBAAgB,IAAIJ,IAAI,KAAK,WAAW,IACjDI,IAAI,KAAK,iBAAiB,IAAIJ,IAAI,KAAK,WAAY,EACpD;MACA,OAAO;QAAEjC,OAAO,EAAEoC;MAAuB,CAAC;IAC5C;EACF;EACA,IACE5C,OAAO,CAACT,MAAM,KAAK,eAAe,IAClCS,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,gBAAgB,IAC9C7B,OAAO,CAACkD,QAAQ,CAACC,IAAI,KAAK,WAAW,EACrC;IACAnD,OAAO,CAACyD,UAAU,GAAG/C,OAAO,CAACe,MAAM,CAACiC,UAAU;IAC9CrF,YAAY,CAAC2B,OAAO,EAAE,QAAQ,CAAC;IAC/B,OAAO;MAAEkB,OAAO,EAAEmC;IAAkB,CAAC;EACvC;AACF;AAEA,SAASd,wBAAwBA,CAC/BvC,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACK;EACxB,IAAID,OAAO,CAACT,MAAM,KAAK,eAAe,IAAIS,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,MAAM,EAAE;IAC9E7B,OAAO,CAACyD,UAAU,GAAG/C,OAAO,CAACe,MAAM,CAACiC,UAAU;IAC9C,OAAO;MACLxC,OAAO,EAAE,SAASyC,sBAAsBA,CACtCb,CAAU,EACVC,QAAwB,EACxBC,MAAoB,EACI;QACxB,IAAID,QAAQ,CAAC9C,MAAM,KAAK,iBAAiB,EAAE;UACzC3B,WAAW,CAAC0B,OAAO,EAAE+C,QAAQ,CAACtB,MAAM,CAACvB,IAAI,CAACS,KAAK,CAAC;UAChD,OAAO;YAAEO,OAAO,EAAEC;UAAY,CAAC;QACjC;QACA,OAAOX,uBAAuB,CAACR,OAAO,EAAE+C,QAAQ,EAAEC,MAAM,CAAC;MAC3D;IACF,CAAC;EACH;EACA,OAAOxC,uBAAuB,CAACR,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;AACzD;AAEA,OAAO,eAAeQ,WAAWA,CAC/BnB,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACc;EACjC,QAAQD,OAAO,CAACT,MAAM;IACpB,KAAK,eAAe;MAClB,QAAQS,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK;QAC/B,KAAK,QAAQ;QACb,KAAK,kBAAkB;QACvB,KAAK,iBAAiB;UACpB,OAAO;YAAEX,OAAO,EAAE0C;UAAsB,CAAC;QAC3C,KAAK,qBAAqB;QAC1B,KAAK,iBAAiB;QACtB,KAAK,oBAAoB;QACzB,KAAK,gBAAgB;QACrB,KAAK,mBAAmB;QACxB,KAAK,uBAAuB;QAC5B,KAAK,MAAM;UACT;UACA;UACA;UACA;UACApF,IAAI,CAACwB,OAAO,EAAEb,aAAa,CAACuB,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,CAAwB,CAAC;UAC9E,OAAO;YAAEX,OAAO,EAAEC;UAAY,CAAC;QACjC,KAAK,QAAQ;UACXnB,OAAO,CAACwC,MAAM,GAAG9B,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACuC,MAAM;UAC3C,OAAO;YAAEvB,OAAO,EAAEC;UAAY,CAAC;QACjC,KAAK,SAAS;QACd,KAAK,cAAc;UACjB,OAAO;YAAED,OAAO,EAAEC;UAAY,CAAC;QACjC,KAAK,SAAS;UACZ9C,YAAY,CAAC2B,OAAO,EAAE,SAAS,CAAC;UAChC,OAAO;YAAEkB,OAAO,EAAEC;UAAY,CAAC;QACjC,KAAK,kBAAkB;UACrB9C,YAAY,CAAC2B,OAAO,EAAE,QAAQ,CAAC;UAC/B,OAAO;YAAEkB,OAAO,EAAEyB;UAAc,CAAC;QACnC,KAAK,MAAM;UACTtE,YAAY,CAAC2B,OAAO,EAAE,MAAM,CAAC;UAC7B,OAAO;YAAEkB,OAAO,EAAEyB;UAAc,CAAC;QACnC,KAAK,UAAU;UACb,OAAO;YAAEzB,OAAO,EAAEC;UAAY,CAAC;MACnC;MACA;IACF,KAAK,sBAAsB;MACzB3C,IAAI,CAACwB,OAAO,EAAE,WAAW,EAAEU,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACb,EAAE,EAAE;QACjDkE,IAAI,EAAE7C,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACqD,IAAI;QAC9BC,IAAI,EAAE9C,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACsD;MAC5B,CAAC,CAAC;MACF,OAAO;QAAEtC,OAAO,EAAEC;MAAY,CAAC;IACjC,KAAK,gBAAgB;MACnB;MACA,OAAO;QAAED,OAAO,EAAEC;MAAY,CAAC;IACjC,KAAK,iBAAiB;MACpB7C,WAAW,CAAC0B,OAAO,EAAEU,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACS,KAAK,CAAC;MAC/C,OAAO;QAAEO,OAAO,EAAEC;MAAY,CAAC;IACjC,KAAK,iCAAiC;MACpC,OAAOyC,qBAAqB,CAAC5D,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;EACzD;AACF;AACAQ,WAAW,CAAC0C,KAAK,GAAI7D,OAAgB,IAAK;EACxC3B,YAAY,CAAC2B,OAAO,EAAE,MAAM,CAAC;AAC/B,CAAC;AAED,eAAe4D,qBAAqBA,CAClC5D,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACE;EAAA,IAAAmD,qBAAA;EACrB,MAAM,GAAGjE,GAAG,CAAC,IAAAiE,qBAAA,GAAGpD,OAAO,CAACT,MAAM,CAAC8D,KAAK,CAAC,2BAA2B,CAAC,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EACvE,IAAIjE,GAAG,IAAI,IAAI,EAAE,OAAOW,uBAAuB,CAACR,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;EACxE,MAAMN,OAAO,GAAG,MAAMN,aAAa,CAACC,OAAO,EAAE,YAAYH,GAAG,EAAE,EAAEa,OAAO,CAACe,MAAM,CAACvB,IAAI,EAAE,MAAOb,EAAE,IAC5FW,OAAO,CAACkD,QAAQ,CAACE,IAAI,CAACvD,GAAG,EAAER,EAAE,EAAE;IAAE2E,OAAO,EAAEtD,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC8D;EAAQ,CAAC,CACzE,CAAC;EAED,SAASC,sBAAsBA,CAACnB,CAAU,EAAEC,QAAwB,EAAc;IAChF,IAAIA,QAAQ,CAACxC,KAAK,IAAI,IAAI,EAAE;MAC1B,OAAO;QAAEW,OAAO,EAAE+C,sBAAsB;QAAEtD;MAAM,CAAC;IACnD;IACA,IAAIoC,QAAQ,CAAC9C,MAAM,KAAK,mBAAmB,EAAE;MAC3C,OAAO;QAAEiB,OAAO,EAAEC;MAAY,CAAC;IACjC;IACA,OAAOX,uBAAuB,CAACR,OAAO,EAAE+C,QAAQ,EAAEpC,KAAK,CAAC;EAC1D;EACA,OAAON,OAAO,GAAG;IAAEa,OAAO,EAAE+C,sBAAsB;IAAEtD;EAAM,CAAC,GAAG;IAAEO,OAAO,EAAEC;EAAY,CAAC;AACxF;AAEA,OAAO,eAAe+C,kBAAkBA,CACtClE,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACE;EACrB,IAAID,OAAO,CAACT,MAAM,KAAK,6BAA6B,EAAE;IACpD,OAAOO,uBAAuB,CAACR,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;EACzD;EACA,MAAMZ,aAAa,CAACC,OAAO,EAAE,wBAAwB,EAAEU,OAAO,CAACe,MAAM,CAACvB,IAAI,EAAE,MAAOb,EAAE,IACnFsB,KAAK,CAACyC,IAAI,CAAC/D,EAAE,CACf,CAAC;EACD,OAAO;IACL6B,OAAOA,CAAC4B,CAAU,EAAEC,QAAwB,EAAc;MACxD,IAAIA,QAAQ,CAAC9C,MAAM,KAAK,sBAAsB,EAAE;QAC9C,OAAOO,uBAAuB,CAACR,OAAO,EAAE+C,QAAQ,EAAEpC,KAAK,CAAC;MAC1D;MACA;MACA,OAAO;QAAEO,OAAO,EAAEyB,aAAa;QAAEhC;MAAM,CAAC;IAC1C,CAAC;IACDA;EACF,CAAC;AACH;AAEA,OAAO,SAASwD,aAAaA,CAC3BnE,OAAgB,EAChBU,OAAuB,EACvBC,KAAmB,EACP;EACZ,IAAID,OAAO,CAACT,MAAM,KAAK,gBAAgB,EAAE;IACvCU,KAAK,CAACW,OAAO,CAAC;MAAE8C,SAAS,EAAE1D,OAAO,CAACe,MAAM,CAACiC,UAAU;MAAEvD,QAAQ,EAAEO,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACS;IAAM,CAAC,CAAC;IAC5FlC,UAAU,CAACuB,OAAO,CAAC;IACnB,OAAO;MAAEkB,OAAO,EAAEyB;IAAc,CAAC;EACnC;EACA,IAAIjC,OAAO,CAACT,MAAM,KAAK,gBAAgB,EAAE;IACvCU,KAAK,CAACC,MAAM,CAAC,IAAI7B,sBAAsB,CAAC2B,OAAO,CAACR,IAAI,CAACQ,OAAO,CAAC,CAAC;IAC9D,OAAO;MAAEQ,OAAO,EAAEC;IAAY,CAAC;EACjC;EACA,OAAOX,uBAAuB,CAACR,OAAO,EAAEU,OAAO,EAAEC,KAAK,CAAC;AACzD;AAEA,OAAO,SAASgC,aAAaA,CAC3BlC,QAAiB,EACjBC,OAAuB,EACvBC,KAAmB,EACP;EACZ,IAAIA,KAAK,IAAI,IAAI,EAAE,OAAO;IAAEO,OAAO,EAAEyB;EAAc,CAAC;EACpD,IAAIjC,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,SAAS,EAAE,OAAO;IAAEX,OAAO,EAAEyB,aAAa;IAAEhC;EAAM,CAAC;EACrF,IAAID,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACqD,IAAI,KAAK,gBAAgB,EAAE;IACjD5C,KAAK,CAAC0D,OAAO,GAAG3D,OAAO,CAACe,MAAM,CAACvB,IAAI,CAACb,EAAE;IACtC,OAAO;MAAE6B,OAAO,EAAEyB,aAAa;MAAEhC;IAAM,CAAC;EAC1C;EACA,IAAID,OAAO,CAACe,MAAM,CAACvB,IAAI,CAAC2B,KAAK,KAAK,kBAAkB,EAAE;IACpDlB,KAAK,CAACW,OAAO,CAACX,KAAK,CAAC0D,OAAO,CAAC;IAC5B,OAAO;MAAEnD,OAAO,EAAEyB;IAAc,CAAC;EACnC;EACA,OAAO;IAAEzB,OAAO,EAAEyB,aAAa;IAAEhC;EAAM,CAAC;AAC1C","ignoreList":[]}
1
+ {"version":3,"file":"handlers.js","names":["changeStatus","changeState","notify","emit","disconnect","unpackTx","buildTx","rebuildUnpackedTx","decode","IllegalArgumentError","InsufficientBalanceError","ChannelConnectionError","UnexpectedChannelMessageError","ChannelError","Tag","snakeToPascal","appendSignature","tx","signFn","signatures","encodedTx","SignedTx","payloadTx","result","signatures2","tag","concat","signAndNotify","channel","method","data","signedTx","signed_tx","isError","key","error","handleUnexpectedMessage","_channel","message","state","reject","Object","assign","JSON","stringify","wsMessage","handler","channelOpen","awaitingCompletion","onSuccess","resolve","accepted","errorCode","params","error_code","errorMessage","error_msg","event","codes","map","d","code","includes","awaitingConnection","channelInfoStatus","nextStatus","awaitingChannelCreateTx","awaitingOpenConfirmation","_fsmId","fsm_id","payload","channelClosed","awaitingReestablish","awaitingChannelReestablished","_","message2","state2","awaitingReconnection","_options","role","sign","awaitingOnChainTx","awaitingBlockInclusion","info","type","_channelId","channel_id","awaitingChannelsUpdate","awaitingTxSignRequest","enter","_message$method$match","match","updates","awaitingUpdateConflict","awaitingShutdownTx","awaitingLeave","channelId","closeTx"],"sources":["../../src/channel/handlers.ts"],"sourcesContent":["/* eslint-disable consistent-return */\n/* eslint-disable default-case */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n ChannelState,\n changeStatus,\n changeState,\n notify,\n emit,\n disconnect,\n ChannelMessage,\n ChannelFsm,\n SignTx,\n ChannelStatus,\n ChannelEvents,\n} from './internal.js';\nimport { unpackTx, buildTx, rebuildUnpackedTx } from '../tx/builder/index.js';\nimport { decode, Encoded } from '../utils/encoder.js';\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError,\n ChannelError,\n} from '../utils/errors.js';\nimport type Channel from './Base.js';\nimport { Tag } from '../tx/builder/constants.js';\nimport { snakeToPascal } from '../utils/string.js';\n\nexport async function appendSignature(\n tx: Encoded.Transaction,\n signFn: SignTx,\n): Promise<Encoded.Transaction | number | null> {\n const { signatures, encodedTx } = unpackTx(tx, Tag.SignedTx);\n const payloadTx = rebuildUnpackedTx(encodedTx);\n const result = await signFn(payloadTx);\n if (typeof result === 'string') {\n const { signatures: signatures2 } = unpackTx(result, Tag.SignedTx);\n return buildTx({\n tag: Tag.SignedTx,\n signatures: signatures.concat(signatures2),\n encodedTx: decode(payloadTx),\n });\n }\n return result;\n}\n\nexport async function signAndNotify(\n channel: Channel,\n method: string,\n data: {\n tx?: Encoded.Transaction;\n signed_tx?: Encoded.Transaction;\n },\n signFn: SignTx,\n): Promise<boolean> {\n let signedTx;\n if (data.tx != null) signedTx = await signFn(data.tx);\n else if (data.signed_tx != null) signedTx = await appendSignature(data.signed_tx, signFn);\n else throw new ChannelError(\"Can't find transaction in message\");\n const isError = typeof signedTx !== 'string';\n const key = data.tx != null ? 'tx' : 'signed_tx';\n notify(channel, method, isError ? { error: signedTx ?? 1 } : { [key]: signedTx });\n return isError;\n}\n\nexport function handleUnexpectedMessage(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n state?.reject?.(\n Object.assign(\n new UnexpectedChannelMessageError(\n `Unexpected message received:\\n\\n${JSON.stringify(message)}`,\n ),\n { wsMessage: message },\n ),\n );\n return { handler: channelOpen };\n}\n\nexport function awaitingCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n onSuccess?: typeof handleUnexpectedMessage,\n): ChannelFsm {\n if (onSuccess != null && message.method === 'channels.update') {\n return onSuccess(channel, message, state);\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n if (message.error != null) {\n const codes = message.error.data.map((d) => d.code);\n if (codes.includes(1001)) {\n state.reject(new InsufficientBalanceError('Insufficient balance'));\n } else if (codes.includes(1002)) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'));\n } else {\n state.reject(new ChannelConnectionError(message.error.message));\n }\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingConnection(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info') {\n const channelInfoStatus: string = message.params.data.event;\n\n let nextStatus: ChannelStatus | null = null;\n if (channelInfoStatus === 'channel_accept') nextStatus = 'accepted';\n if (channelInfoStatus === 'funding_created') nextStatus = 'halfSigned';\n if (nextStatus != null) {\n changeStatus(channel, nextStatus);\n return { handler: awaitingChannelCreateTx };\n }\n\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation };\n }\n if (message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n return { handler: awaitingConnection };\n }\n return { handler: awaitingConnection };\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message?.payload?.message));\n return { handler: channelClosed };\n }\n}\n\nexport async function awaitingReestablish(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.info' && message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n return {\n handler: function awaitingChannelReestablished(\n _: Channel,\n message2: ChannelMessage,\n state2: ChannelState,\n ): ChannelFsm | undefined {\n if (\n message2.method === 'channels.info' &&\n message2.params.data.event === 'channel_reestablished'\n )\n return { handler: awaitingOpenConfirmation };\n return handleUnexpectedMessage(channel, message2, state2);\n },\n };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingReconnection(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.info' && message.params.data.event === 'fsm_up') {\n channel._fsmId = message.params.data.fsm_id;\n const { signedTx } = await channel.state();\n changeState(channel, signedTx == null ? '' : rebuildUnpackedTx(signedTx));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingChannelCreateTx(\n channel: Channel,\n message: ChannelMessage,\n): Promise<ChannelFsm | undefined> {\n const tag = channel._options.role === 'initiator' ? 'initiator_sign' : 'responder_sign';\n if (message.method === `channels.sign.${tag}`) {\n await signAndNotify(channel, `channels.${tag}`, message.params.data, async (tx) =>\n channel._options.sign(tag, tx),\n );\n return { handler: awaitingOnChainTx };\n }\n}\n\nexport function awaitingOnChainTx(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n function awaitingBlockInclusion(_: Channel, message2: ChannelMessage): ChannelFsm | undefined {\n if (message2.method === 'channels.info') {\n switch (message2.params.data.event) {\n case 'funding_created':\n case 'own_funding_locked':\n return { handler: awaitingBlockInclusion };\n case 'funding_locked':\n return { handler: awaitingOpenConfirmation };\n }\n }\n if (message2.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message2.params.data.tx, {\n info: message2.params.data.info,\n type: message2.params.data.type,\n });\n return { handler: awaitingBlockInclusion };\n }\n }\n\n if (message.method === 'channels.on_chain_tx') {\n const { info } = message.params.data;\n const { role } = channel._options;\n if (\n (info === 'funding_signed' && role === 'initiator') ||\n (info === 'funding_created' && role === 'responder')\n ) {\n return { handler: awaitingBlockInclusion };\n }\n }\n if (\n message.method === 'channels.info' &&\n message.params.data.event === 'funding_signed' &&\n channel._options.role === 'initiator'\n ) {\n channel._channelId = message.params.channel_id;\n changeStatus(channel, 'signed');\n return { handler: awaitingOnChainTx };\n }\n}\n\nfunction awaitingOpenConfirmation(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channel._channelId = message.params.channel_id;\n return {\n handler: function awaitingChannelsUpdate(\n _: Channel,\n message2: ChannelMessage,\n state2: ChannelState,\n ): ChannelFsm | undefined {\n if (message2.method === 'channels.update') {\n changeState(channel, message2.params.data.state);\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message2, state2);\n },\n };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function channelOpen(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest };\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, snakeToPascal(message.params.data.event) as keyof ChannelEvents);\n return { handler: channelOpen };\n case 'fsm_up':\n channel._fsmId = message.params.data.fsm_id;\n return { handler: channelOpen };\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen };\n case 'closing':\n changeStatus(channel, 'closing');\n return { handler: channelOpen };\n case 'closed_confirmed':\n changeStatus(channel, 'closed');\n return { handler: channelClosed };\n case 'died':\n changeStatus(channel, 'died');\n return { handler: channelClosed };\n case 'shutdown':\n return { handler: channelOpen };\n }\n break;\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n return { handler: channelOpen };\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen };\n case 'channels.update':\n changeState(channel, message.params.data.state);\n return { handler: channelOpen };\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state);\n }\n}\nchannelOpen.enter = (channel: Channel) => {\n changeStatus(channel, 'open');\n};\n\nasync function awaitingTxSignRequest(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) ?? [];\n if (tag == null) return handleUnexpectedMessage(channel, message, state);\n const isError = await signAndNotify(channel, `channels.${tag}`, message.params.data, async (tx) =>\n channel._options.sign(tag, tx, { updates: message.params.data.updates }),\n );\n\n function awaitingUpdateConflict(_: Channel, message2: ChannelMessage): ChannelFsm {\n if (message2.error != null) {\n return { handler: awaitingUpdateConflict, state };\n }\n if (message2.method === 'channels.conflict') {\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message2, state);\n }\n return isError ? { handler: awaitingUpdateConflict, state } : { handler: channelOpen };\n}\n\nexport async function awaitingShutdownTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method !== 'channels.sign.shutdown_sign') {\n return handleUnexpectedMessage(channel, message, state);\n }\n await signAndNotify(channel, 'channels.shutdown_sign', message.params.data, async (tx) =>\n state.sign(tx),\n );\n return {\n handler(_: Channel, message2: ChannelMessage): ChannelFsm {\n if (message2.method !== 'channels.on_chain_tx') {\n return handleUnexpectedMessage(channel, message2, state);\n }\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state };\n },\n state,\n };\n}\n\nexport function awaitingLeave(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state });\n disconnect(channel);\n return { handler: channelClosed };\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function channelClosed(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (state == null) return { handler: channelClosed };\n if (message.params.data.event === 'closing') return { handler: channelClosed, state };\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx;\n return { handler: channelClosed, state };\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx);\n return { handler: channelClosed };\n }\n return { handler: channelClosed, state };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,11 +6,11 @@ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a),
6
6
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
7
7
  import { execFile } from 'child_process';
8
8
  import { tmpdir } from 'os';
9
- import { resolve, dirname, basename } from 'path';
9
+ import { resolve, dirname, basename, relative, isAbsolute } from 'path';
10
10
  import { mkdir, writeFile, rm } from 'fs/promises';
11
11
  import { fileURLToPath } from 'url';
12
12
  import CompilerBase from './Base.js';
13
- import { CompilerError, InternalError, UnsupportedVersionError } from '../../utils/errors.js';
13
+ import { CompilerError, IllegalArgumentError, InternalError, UnsupportedVersionError } from '../../utils/errors.js';
14
14
  import semverSatisfies from '../../utils/semver-satisfies.js';
15
15
  import { ensureError } from '../../utils/other.js';
16
16
  export const getPackagePath = () => {
@@ -159,6 +159,10 @@ async function _saveContractToTmpDir(sourceCode, fileSystem = {}) {
159
159
  await writeFile(sourceCodePath, sourceCode);
160
160
  await Promise.all(Object.entries(fileSystem).map(async ([name, src]) => {
161
161
  const p = resolve(path, name);
162
+ const rel = relative(path, p);
163
+ if (isAbsolute(rel) || rel.startsWith('..')) {
164
+ throw new IllegalArgumentError(`Path "${name}" is outside of the temp directory`);
165
+ }
162
166
  await mkdir(dirname(p), {
163
167
  recursive: true
164
168
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Cli.js","names":["execFile","tmpdir","resolve","dirname","basename","mkdir","writeFile","rm","fileURLToPath","CompilerBase","CompilerError","InternalError","UnsupportedVersionError","semverSatisfies","ensureError","getPackagePath","path","import","meta","url","_path","WeakMap","_ensureCompatibleVersion","_CompilerCli_brand","WeakSet","CompilerCli","constructor","compilerPath","ignoreVersion","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_classPrivateFieldSet","version","then","versions","error","console","warn","message","compile","_classPrivateFieldGet","compileRes","aci","Promise","all","_assertClassBrand","_runWithStderr","call","generateAci","bytecode","stdout","trimEnd","warnings","stderr","split","slice","map","warning","reg","match","pos","file","line","col","compileBySourceCode","sourceCode","fileSystem","tmp","_saveContractToTmpDir","recursive","JSON","parse","_run","generateAciBySourceCode","validate","includes","validateBySourceCode","verMessage","ver","parameters","pResolve","pReject","randomName","Math","random","toString","sourceCodePath","Object","entries","name","src","p"],"sources":["../../../src/contract/compiler/Cli.ts"],"sourcesContent":["import { execFile } from 'child_process';\nimport { tmpdir } from 'os';\nimport { resolve, dirname, basename } from 'path';\nimport { mkdir, writeFile, rm } from 'fs/promises';\nimport { fileURLToPath } from 'url';\nimport CompilerBase, { Aci, CompileResult } from './Base.js';\nimport { Encoded } from '../../utils/encoder.js';\nimport { CompilerError, InternalError, UnsupportedVersionError } from '../../utils/errors.js';\nimport semverSatisfies from '../../utils/semver-satisfies.js';\nimport { ensureError } from '../../utils/other.js';\n\nexport const getPackagePath = (): string => {\n const path = dirname(fileURLToPath(import.meta.url));\n if (basename(path) === 'dist') return resolve(path, '..');\n if (basename(path) === 'compiler') return resolve(path, '../../..');\n throw new InternalError(\"Can't get package path\");\n};\n\n/**\n * A wrapper around aesophia_cli, available only in Node.js.\n * Requires Erlang installed, assumes that `escript` is available in PATH.\n * @category contract\n */\nexport default class CompilerCli extends CompilerBase {\n readonly #path: string;\n\n readonly #ensureCompatibleVersion;\n\n /**\n * @param compilerPath - A path to aesophia_cli binary, by default uses the integrated one\n * @param options - Options\n * @param options.ignoreVersion - Print warning instead of throwing exception if compiler version\n * is not supported, use with caution\n */\n constructor(\n compilerPath = resolve(getPackagePath(), './bin/aesophia_cli'),\n { ignoreVersion = false }: { ignoreVersion?: boolean } = {},\n ) {\n super();\n this.#path = compilerPath;\n this.#ensureCompatibleVersion = this.version().then((version) => {\n const versions = [version, '8.0.0', '9.0.0'] as const;\n if (!semverSatisfies(...versions)) {\n const error = new UnsupportedVersionError('compiler', ...versions);\n if (ignoreVersion) console.warn(error.message);\n else throw error;\n }\n });\n }\n\n async #runWithStderr(...parameters: string[]): Promise<{ stderr: string; stdout: string }> {\n return new Promise((pResolve, pReject) => {\n execFile('escript', [this.#path, ...parameters], (error, stdout, stderr) => {\n if (error != null) pReject(error);\n else pResolve({ stdout, stderr });\n });\n });\n }\n\n async #run(...parameters: string[]): Promise<string> {\n const { stderr, stdout } = await this.#runWithStderr(...parameters);\n if (stderr !== '') throw new CompilerError(stderr);\n return stdout;\n }\n\n static async #saveContractToTmpDir(\n sourceCode: string,\n fileSystem: Record<string, string> = {},\n ): Promise<string> {\n const randomName = (): string => Math.random().toString(36).slice(2);\n const path = resolve(tmpdir(), `aepp-sdk-js-${randomName()}`);\n await mkdir(path);\n const sourceCodePath = resolve(path, `${randomName()}.aes`);\n await writeFile(sourceCodePath, sourceCode);\n await Promise.all(\n Object.entries(fileSystem).map(async ([name, src]) => {\n const p = resolve(path, name);\n await mkdir(dirname(p), { recursive: true });\n return writeFile(p, src);\n }),\n );\n return sourceCodePath;\n }\n\n async compile(path: string): CompileResult {\n await this.#ensureCompatibleVersion;\n try {\n const [compileRes, aci] = await Promise.all([\n this.#runWithStderr(path),\n this.generateAci(path),\n ]);\n return {\n bytecode: compileRes.stdout.trimEnd() as Encoded.ContractBytearray,\n aci,\n warnings: compileRes.stderr\n .split('Warning in ')\n .slice(1)\n .map((warning) => {\n const reg = /^'(.+)' at line (\\d+), col (\\d+):\\n(.+)$/s;\n const match = warning.match(reg);\n if (match == null) throw new InternalError(`Can't parse compiler output: \"${warning}\"`);\n return {\n message: match[4].trimEnd(),\n pos: {\n ...(match[1] !== path && { file: match[1] }),\n line: +match[2],\n col: +match[3],\n },\n };\n }),\n };\n } catch (error) {\n ensureError(error);\n throw new CompilerError(error.message);\n }\n }\n\n async compileBySourceCode(\n sourceCode: string,\n fileSystem?: Record<string, string>,\n ): CompileResult {\n const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);\n try {\n return await this.compile(tmp);\n } finally {\n await rm(dirname(tmp), { recursive: true });\n }\n }\n\n async generateAci(path: string): Promise<Aci> {\n await this.#ensureCompatibleVersion;\n try {\n return JSON.parse(await this.#run('--no_code', '--create_json_aci', path));\n } catch (error) {\n ensureError(error);\n throw new CompilerError(error.message);\n }\n }\n\n async generateAciBySourceCode(\n sourceCode: string,\n fileSystem?: Record<string, string>,\n ): Promise<Aci> {\n const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);\n try {\n return await this.generateAci(tmp);\n } finally {\n await rm(dirname(tmp), { recursive: true });\n }\n }\n\n async validate(bytecode: Encoded.ContractBytearray, path: string): Promise<boolean> {\n await this.#ensureCompatibleVersion;\n try {\n return (await this.#run(path, '--validate', bytecode)).includes('Validation successful.');\n } catch (error) {\n return false;\n }\n }\n\n async validateBySourceCode(\n bytecode: Encoded.ContractBytearray,\n sourceCode: string,\n fileSystem?: Record<string, string>,\n ): Promise<boolean> {\n const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);\n try {\n return await this.validate(bytecode, tmp);\n } finally {\n await rm(dirname(tmp), { recursive: true });\n }\n }\n\n async version(): Promise<string> {\n const verMessage = await this.#run('--version');\n const ver = verMessage.match(/Sophia compiler version ([\\d.]+.*)\\n/)?.[1];\n if (ver == null) throw new CompilerError(\"Can't get compiler version\");\n return ver;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Cli.js","names":["execFile","tmpdir","resolve","dirname","basename","relative","isAbsolute","mkdir","writeFile","rm","fileURLToPath","CompilerBase","CompilerError","IllegalArgumentError","InternalError","UnsupportedVersionError","semverSatisfies","ensureError","getPackagePath","path","import","meta","url","_path","WeakMap","_ensureCompatibleVersion","_CompilerCli_brand","WeakSet","CompilerCli","constructor","compilerPath","ignoreVersion","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_classPrivateFieldSet","version","then","versions","error","console","warn","message","compile","_classPrivateFieldGet","compileRes","aci","Promise","all","_assertClassBrand","_runWithStderr","call","generateAci","bytecode","stdout","trimEnd","warnings","stderr","split","slice","map","warning","reg","match","pos","file","line","col","compileBySourceCode","sourceCode","fileSystem","tmp","_saveContractToTmpDir","recursive","JSON","parse","_run","generateAciBySourceCode","validate","includes","validateBySourceCode","verMessage","ver","parameters","pResolve","pReject","randomName","Math","random","toString","sourceCodePath","Object","entries","name","src","p","rel","startsWith"],"sources":["../../../src/contract/compiler/Cli.ts"],"sourcesContent":["import { execFile } from 'child_process';\nimport { tmpdir } from 'os';\nimport { resolve, dirname, basename, relative, isAbsolute } from 'path';\nimport { mkdir, writeFile, rm } from 'fs/promises';\nimport { fileURLToPath } from 'url';\nimport CompilerBase, { Aci, CompileResult } from './Base.js';\nimport { Encoded } from '../../utils/encoder.js';\nimport {\n CompilerError,\n IllegalArgumentError,\n InternalError,\n UnsupportedVersionError,\n} from '../../utils/errors.js';\nimport semverSatisfies from '../../utils/semver-satisfies.js';\nimport { ensureError } from '../../utils/other.js';\n\nexport const getPackagePath = (): string => {\n const path = dirname(fileURLToPath(import.meta.url));\n if (basename(path) === 'dist') return resolve(path, '..');\n if (basename(path) === 'compiler') return resolve(path, '../../..');\n throw new InternalError(\"Can't get package path\");\n};\n\n/**\n * A wrapper around aesophia_cli, available only in Node.js.\n * Requires Erlang installed, assumes that `escript` is available in PATH.\n * @category contract\n */\nexport default class CompilerCli extends CompilerBase {\n readonly #path: string;\n\n readonly #ensureCompatibleVersion;\n\n /**\n * @param compilerPath - A path to aesophia_cli binary, by default uses the integrated one\n * @param options - Options\n * @param options.ignoreVersion - Print warning instead of throwing exception if compiler version\n * is not supported, use with caution\n */\n constructor(\n compilerPath = resolve(getPackagePath(), './bin/aesophia_cli'),\n { ignoreVersion = false }: { ignoreVersion?: boolean } = {},\n ) {\n super();\n this.#path = compilerPath;\n this.#ensureCompatibleVersion = this.version().then((version) => {\n const versions = [version, '8.0.0', '9.0.0'] as const;\n if (!semverSatisfies(...versions)) {\n const error = new UnsupportedVersionError('compiler', ...versions);\n if (ignoreVersion) console.warn(error.message);\n else throw error;\n }\n });\n }\n\n async #runWithStderr(...parameters: string[]): Promise<{ stderr: string; stdout: string }> {\n return new Promise((pResolve, pReject) => {\n execFile('escript', [this.#path, ...parameters], (error, stdout, stderr) => {\n if (error != null) pReject(error);\n else pResolve({ stdout, stderr });\n });\n });\n }\n\n async #run(...parameters: string[]): Promise<string> {\n const { stderr, stdout } = await this.#runWithStderr(...parameters);\n if (stderr !== '') throw new CompilerError(stderr);\n return stdout;\n }\n\n static async #saveContractToTmpDir(\n sourceCode: string,\n fileSystem: Record<string, string> = {},\n ): Promise<string> {\n const randomName = (): string => Math.random().toString(36).slice(2);\n const path = resolve(tmpdir(), `aepp-sdk-js-${randomName()}`);\n await mkdir(path);\n const sourceCodePath = resolve(path, `${randomName()}.aes`);\n await writeFile(sourceCodePath, sourceCode);\n await Promise.all(\n Object.entries(fileSystem).map(async ([name, src]) => {\n const p = resolve(path, name);\n const rel = relative(path, p);\n if (isAbsolute(rel) || rel.startsWith('..')) {\n throw new IllegalArgumentError(`Path \"${name}\" is outside of the temp directory`);\n }\n await mkdir(dirname(p), { recursive: true });\n return writeFile(p, src);\n }),\n );\n return sourceCodePath;\n }\n\n async compile(path: string): CompileResult {\n await this.#ensureCompatibleVersion;\n try {\n const [compileRes, aci] = await Promise.all([\n this.#runWithStderr(path),\n this.generateAci(path),\n ]);\n return {\n bytecode: compileRes.stdout.trimEnd() as Encoded.ContractBytearray,\n aci,\n warnings: compileRes.stderr\n .split('Warning in ')\n .slice(1)\n .map((warning) => {\n const reg = /^'(.+)' at line (\\d+), col (\\d+):\\n(.+)$/s;\n const match = warning.match(reg);\n if (match == null) throw new InternalError(`Can't parse compiler output: \"${warning}\"`);\n return {\n message: match[4].trimEnd(),\n pos: {\n ...(match[1] !== path && { file: match[1] }),\n line: +match[2],\n col: +match[3],\n },\n };\n }),\n };\n } catch (error) {\n ensureError(error);\n throw new CompilerError(error.message);\n }\n }\n\n async compileBySourceCode(\n sourceCode: string,\n fileSystem?: Record<string, string>,\n ): CompileResult {\n const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);\n try {\n return await this.compile(tmp);\n } finally {\n await rm(dirname(tmp), { recursive: true });\n }\n }\n\n async generateAci(path: string): Promise<Aci> {\n await this.#ensureCompatibleVersion;\n try {\n return JSON.parse(await this.#run('--no_code', '--create_json_aci', path));\n } catch (error) {\n ensureError(error);\n throw new CompilerError(error.message);\n }\n }\n\n async generateAciBySourceCode(\n sourceCode: string,\n fileSystem?: Record<string, string>,\n ): Promise<Aci> {\n const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);\n try {\n return await this.generateAci(tmp);\n } finally {\n await rm(dirname(tmp), { recursive: true });\n }\n }\n\n async validate(bytecode: Encoded.ContractBytearray, path: string): Promise<boolean> {\n await this.#ensureCompatibleVersion;\n try {\n return (await this.#run(path, '--validate', bytecode)).includes('Validation successful.');\n } catch (error) {\n return false;\n }\n }\n\n async validateBySourceCode(\n bytecode: Encoded.ContractBytearray,\n sourceCode: string,\n fileSystem?: Record<string, string>,\n ): Promise<boolean> {\n const tmp = await CompilerCli.#saveContractToTmpDir(sourceCode, fileSystem);\n try {\n return await this.validate(bytecode, tmp);\n } finally {\n await rm(dirname(tmp), { recursive: true });\n }\n }\n\n async version(): Promise<string> {\n const verMessage = await this.#run('--version');\n const ver = verMessage.match(/Sophia compiler version ([\\d.]+.*)\\n/)?.[1];\n if (ver == null) throw new CompilerError(\"Can't get compiler version\");\n return ver;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { Int, Tag } from '../tx/builder/constants.js';
5
5
  import { BuildTxOptions } from '../tx/builder/index.js';
6
+ import { ProtocolParametersOption } from '../tx/builder/protocol-parameters.js';
6
7
  import { Encoded } from '../utils/encoder.js';
7
8
  import Contract from './Contract.js';
8
9
  import Node from '../Node.js';
@@ -34,13 +35,15 @@ interface CreateGeneralizedAccountOptions extends BuildTxOptions<Tag.GaAttachTx,
34
35
  * @param options.fee - GaMetaTx fee, required in Ceres
35
36
  * @param options.gasPrice - GaMetaTx gasPrice, required in Ceres
36
37
  * @param options.onNode - Node to use
38
+ * @param options.protocolParameters - Consensus parameters the `gasPrice` belongs to, requested
39
+ * from node if not provided
37
40
  * @returns Transaction hash
38
41
  */
39
- export declare function buildAuthTxHash(transaction: Encoded.Transaction, { fee, gasPrice, onNode }: {
42
+ export declare function buildAuthTxHash(transaction: Encoded.Transaction, { fee, gasPrice, onNode, protocolParameters, }: {
40
43
  fee?: Int;
41
44
  gasPrice?: Int;
42
45
  onNode: Node;
43
- }): Promise<Buffer>;
46
+ } & ProtocolParametersOption): Promise<Buffer>;
44
47
  /**
45
48
  * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx
46
49
  * @category account generalized
package/es/contract/ga.js CHANGED
@@ -3,8 +3,9 @@ import { Buffer as _Buffer } from "buffer";
3
3
  * Generalized Account module - routines to use generalized account
4
4
  */
5
5
 
6
- import { ConsensusProtocolVersion, Tag } from '../tx/builder/constants.js';
7
- import { buildContractIdByContractTx, buildTx, buildTxAsync, unpackTx } from '../tx/builder/index.js';
6
+ import { Tag } from '../tx/builder/constants.js';
7
+ import { buildContractIdByContractTx, rebuildUnpackedTx, buildTxAsync, unpackTx } from '../tx/builder/index.js';
8
+ import { getCachedProtocolParameters } from '../tx/builder/protocol-parameters.js';
8
9
  import { hash } from '../utils/crypto.js';
9
10
  import { decode, encode, Encoding } from '../utils/encoder.js';
10
11
  import { ArgumentError, IllegalArgumentError } from '../utils/errors.js';
@@ -14,6 +15,7 @@ import { getAccount } from '../chain.js';
14
15
  import { sendTransaction } from '../send-transaction.js';
15
16
  import { packEntry } from '../tx/builder/entry/index.js';
16
17
  import { EntryTag } from '../tx/builder/entry/constants.js';
18
+ import { serializeAsIsParam } from '../tx/builder/field-types/interface.js';
17
19
 
18
20
  /**
19
21
  * Convert current account to GA
@@ -79,6 +81,40 @@ export async function createGeneralizedAccount(authFnName, args, {
79
81
  gaContractId: contractId
80
82
  });
81
83
  }
84
+ // the symbol isn't exported, so only `buildAuthTxHashByGaMetaTx` can set it — kept off the public
85
+ // `buildAuthTxHash` signature rather than advertising an option its callers can't provide
86
+ async function buildAuthTxHashInternal(transaction, {
87
+ fee,
88
+ gasPrice,
89
+ onNode,
90
+ protocolParameters,
91
+ ...options
92
+ }) {
93
+ const {
94
+ nodeNetworkId
95
+ } = await onNode.getNodeInfo();
96
+ let payload = hash(concatBuffers([_Buffer.from(nodeNetworkId), decode(transaction)]));
97
+ if (fee == null) throw new ArgumentError('fee', 'provided (in Ceres)', fee);
98
+ if (gasPrice == null) throw new ArgumentError('gasPrice', 'provided (in Ceres)', gasPrice);
99
+ // the entry checks `gasPrice` against the consensus minimum the same way a transaction does,
100
+ // so it needs the same parameters — without them a `gasPrice` correct for the network this
101
+ // node runs is rejected whenever that network runs a lower minimum than the SDK release.
102
+ // Not requested at all when there is nothing to check, so that re-deriving the hash of an
103
+ // existing transaction needs no round trip and works on a transaction of another network
104
+ payload = hash(decode(packEntry({
105
+ tag: EntryTag.GaMetaTxAuthData,
106
+ fee,
107
+ gasPrice,
108
+ txHash: encode(payload, Encoding.TxHash),
109
+ ...(options[serializeAsIsParam] === true ? {
110
+ [serializeAsIsParam]: true
111
+ } : {
112
+ protocolParameters: protocolParameters !== null && protocolParameters !== void 0 ? protocolParameters : await getCachedProtocolParameters(onNode)
113
+ })
114
+ })));
115
+ return payload;
116
+ }
117
+
82
118
  /**
83
119
  * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx payload
84
120
  * @category account generalized
@@ -87,29 +123,22 @@ export async function createGeneralizedAccount(authFnName, args, {
87
123
  * @param options.fee - GaMetaTx fee, required in Ceres
88
124
  * @param options.gasPrice - GaMetaTx gasPrice, required in Ceres
89
125
  * @param options.onNode - Node to use
126
+ * @param options.protocolParameters - Consensus parameters the `gasPrice` belongs to, requested
127
+ * from node if not provided
90
128
  * @returns Transaction hash
91
129
  */
92
130
  export async function buildAuthTxHash(transaction, {
93
131
  fee,
94
132
  gasPrice,
95
- onNode
133
+ onNode,
134
+ protocolParameters
96
135
  }) {
97
- const {
98
- nodeNetworkId,
99
- consensusProtocolVersion
100
- } = await onNode.getNodeInfo();
101
- let payload = hash(concatBuffers([_Buffer.from(nodeNetworkId), decode(transaction)]));
102
- if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {
103
- if (fee == null) throw new ArgumentError('fee', 'provided (in Ceres)', fee);
104
- if (gasPrice == null) throw new ArgumentError('gasPrice', 'provided (in Ceres)', gasPrice);
105
- payload = hash(decode(packEntry({
106
- tag: EntryTag.GaMetaTxAuthData,
107
- fee,
108
- gasPrice,
109
- txHash: encode(payload, Encoding.TxHash)
110
- })));
111
- }
112
- return payload;
136
+ return buildAuthTxHashInternal(transaction, {
137
+ fee,
138
+ gasPrice,
139
+ onNode,
140
+ protocolParameters
141
+ });
113
142
  }
114
143
 
115
144
  /**
@@ -127,10 +156,13 @@ export async function buildAuthTxHashByGaMetaTx(transaction, {
127
156
  if (txParams.encodedTx.tag !== Tag.GaMetaTx) {
128
157
  throw new ArgumentError('transaction', 'to include GaMetaTx', Tag[txParams.encodedTx.tag]);
129
158
  }
130
- return buildAuthTxHash(buildTx(txParams.encodedTx.tx.encodedTx), {
159
+ return buildAuthTxHashInternal(rebuildUnpackedTx(txParams.encodedTx.tx.encodedTx), {
131
160
  fee: txParams.encodedTx.fee,
132
161
  gasPrice: txParams.encodedTx.gasPrice,
133
- onNode
162
+ onNode,
163
+ // the `gasPrice` of a transaction that already exists, never checked and no parameters
164
+ // requested for it — see `serializeAsIsParam`
165
+ [serializeAsIsParam]: true
134
166
  });
135
167
  }
136
168
  //# sourceMappingURL=ga.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ga.js","names":["ConsensusProtocolVersion","Tag","buildContractIdByContractTx","buildTx","buildTxAsync","unpackTx","hash","decode","encode","Encoding","ArgumentError","IllegalArgumentError","concatBuffers","Contract","getAccount","sendTransaction","packEntry","EntryTag","createGeneralizedAccount","authFnName","args","onAccount","onCompiler","onNode","bytecode","aci","sourceCodePath","sourceCode","fileSystem","options","_options$gasLimit","ownerId","address","kind","contract","initialize","tx","_isInternalBuild","tag","GaAttachTx","code","$compile","gasLimit","_estimateGas","callData","_calldata","_name","authFun","transaction","rawTx","contractId","Object","freeze","owner","gaContractId","buildAuthTxHash","fee","gasPrice","nodeNetworkId","consensusProtocolVersion","getNodeInfo","payload","_Buffer","from","Ceres","GaMetaTxAuthData","txHash","TxHash","buildAuthTxHashByGaMetaTx","txParams","SignedTx","encodedTx","GaMetaTx"],"sources":["../../src/contract/ga.ts"],"sourcesContent":["/**\n * Generalized Account module - routines to use generalized account\n */\n\nimport { ConsensusProtocolVersion, Int, Tag } from '../tx/builder/constants.js';\nimport {\n buildContractIdByContractTx,\n buildTx,\n buildTxAsync,\n BuildTxOptions,\n unpackTx,\n} from '../tx/builder/index.js';\nimport { hash } from '../utils/crypto.js';\nimport { decode, encode, Encoded, Encoding } from '../utils/encoder.js';\nimport { ArgumentError, IllegalArgumentError } from '../utils/errors.js';\nimport { concatBuffers } from '../utils/other.js';\nimport Contract from './Contract.js';\nimport Node from '../Node.js';\nimport { getAccount } from '../chain.js';\nimport { sendTransaction, SendTransactionOptions } from '../send-transaction.js';\nimport CompilerBase from './compiler/Base.js';\nimport { packEntry } from '../tx/builder/entry/index.js';\nimport { EntryTag } from '../tx/builder/entry/constants.js';\n\n/**\n * Convert current account to GA\n * @category account generalized\n * @param authFnName - Authorization function name\n * @param args - init arguments\n * @param options - Options\n * @returns General Account Object\n */\nexport async function createGeneralizedAccount(\n authFnName: string,\n args: any[],\n {\n onAccount,\n onCompiler,\n onNode,\n bytecode,\n aci,\n sourceCodePath,\n sourceCode,\n fileSystem,\n ...options\n }: CreateGeneralizedAccountOptions,\n): Promise<\n Readonly<{\n owner: Encoded.AccountAddress;\n transaction: Encoded.TxHash;\n rawTx: Encoded.Transaction;\n gaContractId: Encoded.ContractAddress;\n }>\n> {\n const ownerId = onAccount.address;\n if ((await getAccount(ownerId, { onNode })).kind === 'generalized') {\n throw new IllegalArgumentError(`Account ${ownerId} is already GA`);\n }\n\n const contract = await Contract.initialize<{ init: (...a: any[]) => void }>({\n onAccount,\n onCompiler,\n onNode,\n bytecode,\n aci,\n sourceCodePath,\n sourceCode,\n fileSystem,\n });\n\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.GaAttachTx,\n onNode,\n code: await contract.$compile(),\n gasLimit: options.gasLimit ?? (await contract._estimateGas('init', args, options)),\n ownerId,\n callData: contract._calldata.encode(contract._name, 'init', args),\n authFun: hash(authFnName),\n });\n const { hash: transaction, rawTx } = await sendTransaction(tx, {\n onNode,\n onAccount,\n onCompiler,\n ...options,\n });\n const contractId = buildContractIdByContractTx(rawTx);\n\n return Object.freeze({\n owner: ownerId,\n transaction,\n rawTx,\n gaContractId: contractId,\n });\n}\n\ninterface CreateGeneralizedAccountOptions\n extends BuildTxOptions<\n Tag.GaAttachTx,\n 'authFun' | 'callData' | 'code' | 'ownerId' | 'gasLimit' | 'onNode'\n >,\n SendTransactionOptions,\n Pick<\n Parameters<typeof Contract.initialize>[0],\n 'bytecode' | 'aci' | 'sourceCodePath' | 'sourceCode' | 'fileSystem'\n > {\n onCompiler: CompilerBase;\n gasLimit?: number;\n}\n\n/**\n * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx payload\n * @category account generalized\n * @param transaction - tx-encoded transaction\n * @param options - Options\n * @param options.fee - GaMetaTx fee, required in Ceres\n * @param options.gasPrice - GaMetaTx gasPrice, required in Ceres\n * @param options.onNode - Node to use\n * @returns Transaction hash\n */\nexport async function buildAuthTxHash(\n transaction: Encoded.Transaction,\n { fee, gasPrice, onNode }: { fee?: Int; gasPrice?: Int; onNode: Node },\n): Promise<Buffer> {\n const { nodeNetworkId, consensusProtocolVersion } = await onNode.getNodeInfo();\n let payload = hash(concatBuffers([Buffer.from(nodeNetworkId), decode(transaction)]));\n if (consensusProtocolVersion === ConsensusProtocolVersion.Ceres) {\n if (fee == null) throw new ArgumentError('fee', 'provided (in Ceres)', fee);\n if (gasPrice == null) throw new ArgumentError('gasPrice', 'provided (in Ceres)', gasPrice);\n payload = hash(\n decode(\n packEntry({\n tag: EntryTag.GaMetaTxAuthData,\n fee,\n gasPrice,\n txHash: encode(payload, Encoding.TxHash),\n }),\n ),\n );\n }\n return payload;\n}\n\n/**\n * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx\n * @category account generalized\n * @param transaction - tx-encoded signed GaMeta transaction\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Transaction hash\n */\nexport async function buildAuthTxHashByGaMetaTx(\n transaction: Encoded.Transaction,\n { onNode }: { onNode: Node },\n): Promise<Buffer> {\n const txParams = unpackTx(transaction, Tag.SignedTx);\n if (txParams.encodedTx.tag !== Tag.GaMetaTx) {\n throw new ArgumentError('transaction', 'to include GaMetaTx', Tag[txParams.encodedTx.tag]);\n }\n return buildAuthTxHash(buildTx(txParams.encodedTx.tx.encodedTx), {\n fee: txParams.encodedTx.fee,\n gasPrice: txParams.encodedTx.gasPrice,\n onNode,\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ga.js","names":["Tag","buildContractIdByContractTx","rebuildUnpackedTx","buildTxAsync","unpackTx","getCachedProtocolParameters","hash","decode","encode","Encoding","ArgumentError","IllegalArgumentError","concatBuffers","Contract","getAccount","sendTransaction","packEntry","EntryTag","serializeAsIsParam","createGeneralizedAccount","authFnName","args","onAccount","onCompiler","onNode","bytecode","aci","sourceCodePath","sourceCode","fileSystem","options","_options$gasLimit","ownerId","address","kind","contract","initialize","tx","_isInternalBuild","tag","GaAttachTx","code","$compile","gasLimit","_estimateGas","callData","_calldata","_name","authFun","transaction","rawTx","contractId","Object","freeze","owner","gaContractId","buildAuthTxHashInternal","fee","gasPrice","protocolParameters","nodeNetworkId","getNodeInfo","payload","_Buffer","from","GaMetaTxAuthData","txHash","TxHash","buildAuthTxHash","buildAuthTxHashByGaMetaTx","txParams","SignedTx","encodedTx","GaMetaTx"],"sources":["../../src/contract/ga.ts"],"sourcesContent":["/**\n * Generalized Account module - routines to use generalized account\n */\n\nimport { Int, Tag } from '../tx/builder/constants.js';\nimport {\n buildContractIdByContractTx,\n rebuildUnpackedTx,\n buildTxAsync,\n BuildTxOptions,\n unpackTx,\n} from '../tx/builder/index.js';\nimport {\n getCachedProtocolParameters,\n ProtocolParametersOption,\n} from '../tx/builder/protocol-parameters.js';\nimport { hash } from '../utils/crypto.js';\nimport { decode, encode, Encoded, Encoding } from '../utils/encoder.js';\nimport { ArgumentError, IllegalArgumentError } from '../utils/errors.js';\nimport { concatBuffers } from '../utils/other.js';\nimport Contract from './Contract.js';\nimport Node from '../Node.js';\nimport { getAccount } from '../chain.js';\nimport { sendTransaction, SendTransactionOptions } from '../send-transaction.js';\nimport CompilerBase from './compiler/Base.js';\nimport { packEntry } from '../tx/builder/entry/index.js';\nimport { EntryTag } from '../tx/builder/entry/constants.js';\nimport { serializeAsIsParam, SerializeAsIsParams } from '../tx/builder/field-types/interface.js';\n\n/**\n * Convert current account to GA\n * @category account generalized\n * @param authFnName - Authorization function name\n * @param args - init arguments\n * @param options - Options\n * @returns General Account Object\n */\nexport async function createGeneralizedAccount(\n authFnName: string,\n args: any[],\n {\n onAccount,\n onCompiler,\n onNode,\n bytecode,\n aci,\n sourceCodePath,\n sourceCode,\n fileSystem,\n ...options\n }: CreateGeneralizedAccountOptions,\n): Promise<\n Readonly<{\n owner: Encoded.AccountAddress;\n transaction: Encoded.TxHash;\n rawTx: Encoded.Transaction;\n gaContractId: Encoded.ContractAddress;\n }>\n> {\n const ownerId = onAccount.address;\n if ((await getAccount(ownerId, { onNode })).kind === 'generalized') {\n throw new IllegalArgumentError(`Account ${ownerId} is already GA`);\n }\n\n const contract = await Contract.initialize<{ init: (...a: any[]) => void }>({\n onAccount,\n onCompiler,\n onNode,\n bytecode,\n aci,\n sourceCodePath,\n sourceCode,\n fileSystem,\n });\n\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...options,\n tag: Tag.GaAttachTx,\n onNode,\n code: await contract.$compile(),\n gasLimit: options.gasLimit ?? (await contract._estimateGas('init', args, options)),\n ownerId,\n callData: contract._calldata.encode(contract._name, 'init', args),\n authFun: hash(authFnName),\n });\n const { hash: transaction, rawTx } = await sendTransaction(tx, {\n onNode,\n onAccount,\n onCompiler,\n ...options,\n });\n const contractId = buildContractIdByContractTx(rawTx);\n\n return Object.freeze({\n owner: ownerId,\n transaction,\n rawTx,\n gaContractId: contractId,\n });\n}\n\ninterface CreateGeneralizedAccountOptions\n extends BuildTxOptions<\n Tag.GaAttachTx,\n 'authFun' | 'callData' | 'code' | 'ownerId' | 'gasLimit' | 'onNode'\n >,\n SendTransactionOptions,\n Pick<\n Parameters<typeof Contract.initialize>[0],\n 'bytecode' | 'aci' | 'sourceCodePath' | 'sourceCode' | 'fileSystem'\n > {\n onCompiler: CompilerBase;\n gasLimit?: number;\n}\n\n// the symbol isn't exported, so only `buildAuthTxHashByGaMetaTx` can set it — kept off the public\n// `buildAuthTxHash` signature rather than advertising an option its callers can't provide\nasync function buildAuthTxHashInternal(\n transaction: Encoded.Transaction,\n {\n fee,\n gasPrice,\n onNode,\n protocolParameters,\n ...options\n }: Parameters<typeof buildAuthTxHash>[1] & SerializeAsIsParams,\n): Promise<Buffer> {\n const { nodeNetworkId } = await onNode.getNodeInfo();\n let payload = hash(concatBuffers([Buffer.from(nodeNetworkId), decode(transaction)]));\n if (fee == null) throw new ArgumentError('fee', 'provided (in Ceres)', fee);\n if (gasPrice == null) throw new ArgumentError('gasPrice', 'provided (in Ceres)', gasPrice);\n // the entry checks `gasPrice` against the consensus minimum the same way a transaction does,\n // so it needs the same parameters — without them a `gasPrice` correct for the network this\n // node runs is rejected whenever that network runs a lower minimum than the SDK release.\n // Not requested at all when there is nothing to check, so that re-deriving the hash of an\n // existing transaction needs no round trip and works on a transaction of another network\n payload = hash(\n decode(\n packEntry({\n tag: EntryTag.GaMetaTxAuthData,\n fee,\n gasPrice,\n txHash: encode(payload, Encoding.TxHash),\n ...(options[serializeAsIsParam] === true\n ? { [serializeAsIsParam]: true }\n : {\n protocolParameters: protocolParameters ?? (await getCachedProtocolParameters(onNode)),\n }),\n }),\n ),\n );\n return payload;\n}\n\n/**\n * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx payload\n * @category account generalized\n * @param transaction - tx-encoded transaction\n * @param options - Options\n * @param options.fee - GaMetaTx fee, required in Ceres\n * @param options.gasPrice - GaMetaTx gasPrice, required in Ceres\n * @param options.onNode - Node to use\n * @param options.protocolParameters - Consensus parameters the `gasPrice` belongs to, requested\n * from node if not provided\n * @returns Transaction hash\n */\nexport async function buildAuthTxHash(\n transaction: Encoded.Transaction,\n {\n fee,\n gasPrice,\n onNode,\n protocolParameters,\n }: { fee?: Int; gasPrice?: Int; onNode: Node } & ProtocolParametersOption,\n): Promise<Buffer> {\n return buildAuthTxHashInternal(transaction, { fee, gasPrice, onNode, protocolParameters });\n}\n\n/**\n * Build a transaction hash the same as `Auth.tx_hash` by GaMetaTx\n * @category account generalized\n * @param transaction - tx-encoded signed GaMeta transaction\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Transaction hash\n */\nexport async function buildAuthTxHashByGaMetaTx(\n transaction: Encoded.Transaction,\n { onNode }: { onNode: Node },\n): Promise<Buffer> {\n const txParams = unpackTx(transaction, Tag.SignedTx);\n if (txParams.encodedTx.tag !== Tag.GaMetaTx) {\n throw new ArgumentError('transaction', 'to include GaMetaTx', Tag[txParams.encodedTx.tag]);\n }\n return buildAuthTxHashInternal(rebuildUnpackedTx(txParams.encodedTx.tx.encodedTx), {\n fee: txParams.encodedTx.fee,\n gasPrice: txParams.encodedTx.gasPrice,\n onNode,\n // the `gasPrice` of a transaction that already exists, never checked and no parameters\n // requested for it — see `serializeAsIsParam`\n [serializeAsIsParam]: true,\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -19,7 +19,7 @@ export { verifyMessageSignature as verifyMessage } from './utils/crypto.js';
19
19
  export { signJwt, unpackJwt, verifyJwt, isJwt, ensureJwt } from './utils/jwt.js';
20
20
  export type { Jwt } from './utils/jwt.js';
21
21
  export { toBytes } from './utils/bytes.js';
22
- export { buildTx, buildTxAsync, buildTxHash, unpackTx, buildContractIdByContractTx, } from './tx/builder/index.js';
22
+ export { buildTx, buildTxAsync, buildTxHash, rebuildUnpackedTx, unpackTx, buildContractIdByContractTx, } from './tx/builder/index.js';
23
23
  export { buildContractId, oracleQueryId, produceNameId, commitmentHash, readInt, isName, ensureName, getDefaultPointerKey, getMinimumNameFee, computeBidFee, computeAuctionEndBlock, isAuctionName, } from './tx/builder/helpers.js';
24
24
  /**
25
25
  * @category contract
@@ -33,6 +33,8 @@ export { buildContractId as encodeContractAddress } from './tx/builder/helpers.j
33
33
  export { isName as isNameValid } from './tx/builder/helpers.js';
34
34
  export { MAX_AUTH_FUN_GAS, MIN_GAS_PRICE, NAME_FEE_MULTIPLIER, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUT_BLOCKS, NAME_MAX_LENGTH_FEE, NAME_BID_RANGES, ConsensusProtocolVersion, VmVersion, AbiVersion, Tag, DRY_RUN_ACCOUNT, } from './tx/builder/constants.js';
35
35
  export type { Int, AensName } from './tx/builder/constants.js';
36
+ export { defaultProtocolParameters, getCachedProtocolParameters, } from './tx/builder/protocol-parameters.js';
37
+ export type { ProtocolParameters, ProtocolParametersOption, } from './tx/builder/protocol-parameters.js';
36
38
  export { ORACLE_TTL_TYPES } from './tx/builder/schema.js';
37
39
  export { DelegationTag } from './tx/builder/delegation/schema.js';
38
40
  export { packDelegation, unpackDelegation } from './tx/builder/delegation/index.js';
@@ -18,7 +18,7 @@ export { hashMessage as messageToHash } from './utils/crypto.js';
18
18
  export { verifyMessageSignature as verifyMessage } from './utils/crypto.js';
19
19
  export { signJwt, unpackJwt, verifyJwt, isJwt, ensureJwt } from './utils/jwt.js';
20
20
  export { toBytes } from './utils/bytes.js';
21
- export { buildTx, buildTxAsync, buildTxHash, unpackTx, buildContractIdByContractTx } from './tx/builder/index.js';
21
+ export { buildTx, buildTxAsync, buildTxHash, rebuildUnpackedTx, unpackTx, buildContractIdByContractTx } from './tx/builder/index.js';
22
22
  export { buildContractId, oracleQueryId, produceNameId, commitmentHash, readInt, isName, ensureName, getDefaultPointerKey, getMinimumNameFee, computeBidFee, computeAuctionEndBlock, isAuctionName } from './tx/builder/helpers.js';
23
23
  /**
24
24
  * @category contract
@@ -31,6 +31,7 @@ export { buildContractId as encodeContractAddress } from './tx/builder/helpers.j
31
31
  */
32
32
  export { isName as isNameValid } from './tx/builder/helpers.js';
33
33
  export { MAX_AUTH_FUN_GAS, MIN_GAS_PRICE, NAME_FEE_MULTIPLIER, NAME_FEE_BID_INCREMENT, NAME_BID_TIMEOUT_BLOCKS, NAME_MAX_LENGTH_FEE, NAME_BID_RANGES, ConsensusProtocolVersion, VmVersion, AbiVersion, Tag, DRY_RUN_ACCOUNT } from './tx/builder/constants.js';
34
+ export { defaultProtocolParameters, getCachedProtocolParameters } from './tx/builder/protocol-parameters.js';
34
35
  // TODO: move to constants
35
36
  export { ORACLE_TTL_TYPES } from './tx/builder/schema.js';
36
37
  export { DelegationTag } from './tx/builder/delegation/schema.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index-browser.js","names":["_getPollInterval","getHeight","poll","awaitHeight","waitForTxConfirm","getAccount","getBalance","getCurrentGeneration","getGeneration","getMicroBlockTransactions","getKeyBlock","getMicroBlockHeader","txDryRun","getContractByteCode","getContract","getName","resolveName","InvalidTxError","sendTransaction","isAddressValid","ensureEncoded","isEncoded","genSalt","encodeUnsigned","hash","verifySignature","hashMessage","verifyMessageSignature","verify","messageToHash","verifyMessage","signJwt","unpackJwt","verifyJwt","isJwt","ensureJwt","toBytes","buildTx","buildTxAsync","buildTxHash","unpackTx","buildContractIdByContractTx","buildContractId","oracleQueryId","produceNameId","commitmentHash","readInt","isName","ensureName","getDefaultPointerKey","getMinimumNameFee","computeBidFee","computeAuctionEndBlock","isAuctionName","encodeContractAddress","isNameValid","MAX_AUTH_FUN_GAS","MIN_GAS_PRICE","NAME_FEE_MULTIPLIER","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","NAME_BID_RANGES","ConsensusProtocolVersion","VmVersion","AbiVersion","Tag","DRY_RUN_ACCOUNT","ORACLE_TTL_TYPES","DelegationTag","packDelegation","unpackDelegation","EntryTag","CallReturnType","packEntry","unpackEntry","getExecutionCost","getExecutionCostBySignedTx","getExecutionCostUsingNode","default","getTransactionSignerAddress","AE_AMOUNT_FORMATS","formatAmount","toAe","toAettos","prefixedAmount","encode","decode","Encoding","Encoded","hashTypedData","hashDomain","hashJson","Name","Contract","Oracle","OracleClient","spend","transferFunds","payForTransaction","createGeneralizedAccount","buildAuthTxHash","buildAuthTxHashByGaMetaTx","AeSdkMethods","AeSdkBase","AeSdk","AeSdkAepp","WalletConnectorFrame","WalletConnectorFrameWithNode","AeSdkWallet","Node","verifyTransaction","AccountBase","AccountMemory","MemoryAccount","AccountMnemonicFactory","AccountGeneralized","AccountLedger","AccountLedgerFactory","AccountMetamask","AccountMetamaskFactory","CompilerBase","CompilerHttp","Channel","MiddlewareSubscriber","MiddlewareSubscriberError","MiddlewareSubscriberDisconnected","Middleware","MiddlewarePageMissed","connectionProxy","MESSAGE_DIRECTION","WALLET_TYPE","SUBSCRIPTION_TYPES","METHODS","RPC_STATUS","RpcError","RpcInvalidTransactionError","RpcRejectedByUserError","RpcUnsupportedProtocolError","RpcConnectionDenyError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcInternalError","RpcMethodNotFoundError","RpcNoNetworkById","walletDetector","BrowserRuntimeConnection","BrowserWindowMessageConnection","BaseError","AccountError","AensError","AeppError","ChannelError","CompilerError","ContractError","CryptographyError","NodeError","TransactionError","WalletError","ArgumentError","IllegalArgumentError","ArgumentCountMismatchError","InsufficientBalanceError","MissingParamError","NoSerializerFoundError","RequestTimedOutError","TxTimedOutError","TypeError","UnsupportedPlatformError","UnsupportedProtocolError","NotImplementedError","UnsupportedVersionError","LogicError","InternalError","UnexpectedTsError","UnavailableAccountError","AensPointerContextError","InsufficientNameFeeError","InvalidAensNameError","InvalidRpcMessageError","MissingCallbackError","UnAuthorizedAccountError","UnknownRpcClientError","UnsubscribedAccountError","ChannelCallError","ChannelConnectionError","ChannelPingTimedOutError","UnexpectedChannelMessageError","ChannelIncomingMessageError","UnknownChannelStateError","InvalidAuthDataError","BytecodeMismatchError","DuplicateContractError","InactiveContractError","InvalidMethodInvocationError","MissingContractAddressError","MissingContractDefError","MissingFunctionNameError","NodeInvocationError","NoSuchContractFunctionError","NotPayableFunctionError","MissingEventDefinitionError","AmbiguousEventDefinitionError","InvalidChecksumError","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnknownNodeLengthError","UnknownPathNibbleError","DuplicateNodeError","NodeNotFoundError","DecodeError","PayloadLengthError","DryRunError","IllegalBidFeeError","InvalidSignatureError","PrefixNotFoundError","SchemaNotFoundError","TagNotFoundError","TxNotInChainError","AlreadyConnectedError","NoWalletConnectedError","RpcConnectionError"],"sources":["../src/index-browser.ts"],"sourcesContent":["export {\n _getPollInterval,\n getHeight,\n poll,\n awaitHeight,\n waitForTxConfirm,\n getAccount,\n getBalance,\n getCurrentGeneration,\n getGeneration,\n getMicroBlockTransactions,\n getKeyBlock,\n getMicroBlockHeader,\n txDryRun,\n getContractByteCode,\n getContract,\n getName,\n resolveName,\n} from './chain.js';\nexport { InvalidTxError, sendTransaction } from './send-transaction.js';\nexport {\n isAddressValid,\n ensureEncoded,\n isEncoded,\n genSalt,\n encodeUnsigned,\n hash,\n verifySignature,\n hashMessage,\n verifyMessageSignature,\n} from './utils/crypto.js';\n/**\n * @category utils\n * @deprecated use {@link verifySignature} instead\n */\nexport { verifySignature as verify } from './utils/crypto.js';\n/**\n * @deprecated use {@link hashMessage} instead\n * @category utils\n */\nexport { hashMessage as messageToHash } from './utils/crypto.js';\n/**\n * @deprecated use {@link verifyMessageSignature} instead\n * @category utils\n */\nexport { verifyMessageSignature as verifyMessage } from './utils/crypto.js';\nexport { signJwt, unpackJwt, verifyJwt, isJwt, ensureJwt } from './utils/jwt.js';\nexport type { Jwt } from './utils/jwt.js';\nexport { toBytes } from './utils/bytes.js';\nexport {\n buildTx,\n buildTxAsync,\n buildTxHash,\n unpackTx,\n buildContractIdByContractTx,\n} from './tx/builder/index.js';\nexport {\n buildContractId,\n oracleQueryId,\n produceNameId,\n commitmentHash,\n readInt,\n isName,\n ensureName,\n getDefaultPointerKey,\n getMinimumNameFee,\n computeBidFee,\n computeAuctionEndBlock,\n isAuctionName,\n} from './tx/builder/helpers.js';\n/**\n * @category contract\n * @deprecated use {@link buildContractId} instead\n */\nexport { buildContractId as encodeContractAddress } from './tx/builder/helpers.js';\n/**\n * @category AENS\n * @deprecated use {@link isName} instead\n */\nexport { isName as isNameValid } from './tx/builder/helpers.js';\nexport {\n MAX_AUTH_FUN_GAS,\n MIN_GAS_PRICE,\n NAME_FEE_MULTIPLIER,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_MAX_LENGTH_FEE,\n NAME_BID_RANGES,\n ConsensusProtocolVersion,\n VmVersion,\n AbiVersion,\n Tag,\n DRY_RUN_ACCOUNT,\n} from './tx/builder/constants.js';\nexport type { Int, AensName } from './tx/builder/constants.js';\n// TODO: move to constants\nexport { ORACLE_TTL_TYPES } from './tx/builder/schema.js';\nexport { DelegationTag } from './tx/builder/delegation/schema.js';\nexport { packDelegation, unpackDelegation } from './tx/builder/delegation/index.js';\nexport { EntryTag, CallReturnType } from './tx/builder/entry/constants.js';\nexport { packEntry, unpackEntry } from './tx/builder/entry/index.js';\nexport {\n getExecutionCost,\n getExecutionCostBySignedTx,\n getExecutionCostUsingNode,\n} from './tx/execution-cost.js';\nexport { default as getTransactionSignerAddress } from './tx/transaction-signer.js';\nexport {\n AE_AMOUNT_FORMATS,\n formatAmount,\n toAe,\n toAettos,\n prefixedAmount,\n} from './utils/amount-formatter.js';\nexport { encode, decode, Encoding, Encoded } from './utils/encoder.js';\nexport { hashTypedData, hashDomain, hashJson } from './utils/typed-data.js';\nexport { default as Name } from './aens.js';\nexport { default as Contract } from './contract/Contract.js';\nexport type { ContractMethodsBase } from './contract/Contract.js';\nexport { default as Oracle } from './oracle/Oracle.js';\nexport { default as OracleClient } from './oracle/OracleClient.js';\nexport { spend, transferFunds, payForTransaction } from './spend.js';\nexport {\n createGeneralizedAccount,\n buildAuthTxHash,\n buildAuthTxHashByGaMetaTx,\n} from './contract/ga.js';\n\nexport { default as AeSdkMethods } from './AeSdkMethods.js';\nexport { default as AeSdkBase } from './AeSdkBase.js';\nexport { default as AeSdk } from './AeSdk.js';\nexport { default as AeSdkAepp } from './AeSdkAepp.js';\nexport { default as WalletConnectorFrame } from './aepp-wallet-communication/WalletConnectorFrame.js';\nexport { default as WalletConnectorFrameWithNode } from './aepp-wallet-communication/WalletConnectorFrameWithNode.js';\nexport { default as AeSdkWallet } from './AeSdkWallet.js';\nexport { default as Node } from './Node.js';\nexport { default as verifyTransaction } from './tx/validator.js';\nexport { default as AccountBase } from './account/Base.js';\nexport { default as AccountMemory } from './account/Memory.js';\n/**\n * @deprecated Use {@link AccountMemory} instead\n * @category account\n */\nexport { default as MemoryAccount } from './account/Memory.js';\nexport { default as AccountMnemonicFactory } from './account/MnemonicFactory.js';\nexport { default as AccountGeneralized } from './account/Generalized.js';\nexport { default as AccountLedger } from './account/Ledger.js';\nexport { default as AccountLedgerFactory } from './account/LedgerFactory.js';\nexport { default as AccountMetamask } from './account/Metamask.js';\nexport { default as AccountMetamaskFactory } from './account/MetamaskFactory.js';\nexport { default as CompilerBase } from './contract/compiler/Base.js';\nexport { default as CompilerHttp } from './contract/compiler/Http.js';\nexport { default as Channel } from './channel/Contract.js';\nexport {\n default as MiddlewareSubscriber,\n MiddlewareSubscriberError,\n MiddlewareSubscriberDisconnected,\n} from './MiddlewareSubscriber.js';\nexport { default as Middleware } from './Middleware.js';\nexport { MiddlewarePageMissed } from './utils/MiddlewarePage.js';\n\nexport { default as connectionProxy } from './aepp-wallet-communication/connection-proxy.js';\nexport {\n MESSAGE_DIRECTION,\n WALLET_TYPE,\n SUBSCRIPTION_TYPES,\n METHODS,\n RPC_STATUS,\n RpcError,\n RpcInvalidTransactionError,\n RpcRejectedByUserError,\n RpcUnsupportedProtocolError,\n RpcConnectionDenyError,\n RpcNotAuthorizeError,\n RpcPermissionDenyError,\n RpcInternalError,\n RpcMethodNotFoundError,\n RpcNoNetworkById,\n} from './aepp-wallet-communication/schema.js';\nexport { default as walletDetector } from './aepp-wallet-communication/wallet-detector.js';\nexport { default as BrowserRuntimeConnection } from './aepp-wallet-communication/connection/BrowserRuntime.js';\nexport { default as BrowserWindowMessageConnection } from './aepp-wallet-communication/connection/BrowserWindowMessage.js';\nexport {\n BaseError,\n AccountError,\n AensError,\n AeppError,\n ChannelError,\n CompilerError,\n ContractError,\n CryptographyError,\n NodeError,\n TransactionError,\n WalletError,\n ArgumentError,\n IllegalArgumentError,\n ArgumentCountMismatchError,\n InsufficientBalanceError,\n MissingParamError,\n NoSerializerFoundError,\n RequestTimedOutError,\n TxTimedOutError,\n TypeError,\n UnsupportedPlatformError,\n UnsupportedProtocolError,\n NotImplementedError,\n UnsupportedVersionError,\n LogicError,\n InternalError,\n UnexpectedTsError,\n UnavailableAccountError,\n AensPointerContextError,\n InsufficientNameFeeError,\n InvalidAensNameError,\n InvalidRpcMessageError,\n MissingCallbackError,\n UnAuthorizedAccountError,\n UnknownRpcClientError,\n UnsubscribedAccountError,\n ChannelCallError,\n ChannelConnectionError,\n ChannelPingTimedOutError,\n UnexpectedChannelMessageError,\n ChannelIncomingMessageError,\n UnknownChannelStateError,\n InvalidAuthDataError,\n BytecodeMismatchError,\n DuplicateContractError,\n InactiveContractError,\n InvalidMethodInvocationError,\n MissingContractAddressError,\n MissingContractDefError,\n MissingFunctionNameError,\n NodeInvocationError,\n NoSuchContractFunctionError,\n NotPayableFunctionError,\n MissingEventDefinitionError,\n AmbiguousEventDefinitionError,\n InvalidChecksumError,\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownNodeLengthError,\n UnknownPathNibbleError,\n DuplicateNodeError,\n NodeNotFoundError,\n DecodeError,\n PayloadLengthError,\n DryRunError,\n IllegalBidFeeError,\n InvalidSignatureError,\n PrefixNotFoundError,\n SchemaNotFoundError,\n TagNotFoundError,\n TxNotInChainError,\n AlreadyConnectedError,\n NoWalletConnectedError,\n RpcConnectionError,\n} from './utils/errors.js';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index-browser.js","names":["_getPollInterval","getHeight","poll","awaitHeight","waitForTxConfirm","getAccount","getBalance","getCurrentGeneration","getGeneration","getMicroBlockTransactions","getKeyBlock","getMicroBlockHeader","txDryRun","getContractByteCode","getContract","getName","resolveName","InvalidTxError","sendTransaction","isAddressValid","ensureEncoded","isEncoded","genSalt","encodeUnsigned","hash","verifySignature","hashMessage","verifyMessageSignature","verify","messageToHash","verifyMessage","signJwt","unpackJwt","verifyJwt","isJwt","ensureJwt","toBytes","buildTx","buildTxAsync","buildTxHash","rebuildUnpackedTx","unpackTx","buildContractIdByContractTx","buildContractId","oracleQueryId","produceNameId","commitmentHash","readInt","isName","ensureName","getDefaultPointerKey","getMinimumNameFee","computeBidFee","computeAuctionEndBlock","isAuctionName","encodeContractAddress","isNameValid","MAX_AUTH_FUN_GAS","MIN_GAS_PRICE","NAME_FEE_MULTIPLIER","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","NAME_BID_RANGES","ConsensusProtocolVersion","VmVersion","AbiVersion","Tag","DRY_RUN_ACCOUNT","defaultProtocolParameters","getCachedProtocolParameters","ORACLE_TTL_TYPES","DelegationTag","packDelegation","unpackDelegation","EntryTag","CallReturnType","packEntry","unpackEntry","getExecutionCost","getExecutionCostBySignedTx","getExecutionCostUsingNode","default","getTransactionSignerAddress","AE_AMOUNT_FORMATS","formatAmount","toAe","toAettos","prefixedAmount","encode","decode","Encoding","Encoded","hashTypedData","hashDomain","hashJson","Name","Contract","Oracle","OracleClient","spend","transferFunds","payForTransaction","createGeneralizedAccount","buildAuthTxHash","buildAuthTxHashByGaMetaTx","AeSdkMethods","AeSdkBase","AeSdk","AeSdkAepp","WalletConnectorFrame","WalletConnectorFrameWithNode","AeSdkWallet","Node","verifyTransaction","AccountBase","AccountMemory","MemoryAccount","AccountMnemonicFactory","AccountGeneralized","AccountLedger","AccountLedgerFactory","AccountMetamask","AccountMetamaskFactory","CompilerBase","CompilerHttp","Channel","MiddlewareSubscriber","MiddlewareSubscriberError","MiddlewareSubscriberDisconnected","Middleware","MiddlewarePageMissed","connectionProxy","MESSAGE_DIRECTION","WALLET_TYPE","SUBSCRIPTION_TYPES","METHODS","RPC_STATUS","RpcError","RpcInvalidTransactionError","RpcRejectedByUserError","RpcUnsupportedProtocolError","RpcConnectionDenyError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcInternalError","RpcMethodNotFoundError","RpcNoNetworkById","walletDetector","BrowserRuntimeConnection","BrowserWindowMessageConnection","BaseError","AccountError","AensError","AeppError","ChannelError","CompilerError","ContractError","CryptographyError","NodeError","TransactionError","WalletError","ArgumentError","IllegalArgumentError","ArgumentCountMismatchError","InsufficientBalanceError","MissingParamError","NoSerializerFoundError","RequestTimedOutError","TxTimedOutError","TypeError","UnsupportedPlatformError","UnsupportedProtocolError","NotImplementedError","UnsupportedVersionError","LogicError","InternalError","UnexpectedTsError","UnavailableAccountError","AensPointerContextError","InsufficientNameFeeError","InvalidAensNameError","InvalidRpcMessageError","MissingCallbackError","UnAuthorizedAccountError","UnknownRpcClientError","UnsubscribedAccountError","ChannelCallError","ChannelConnectionError","ChannelPingTimedOutError","UnexpectedChannelMessageError","ChannelIncomingMessageError","UnknownChannelStateError","InvalidAuthDataError","BytecodeMismatchError","DuplicateContractError","InactiveContractError","InvalidMethodInvocationError","MissingContractAddressError","MissingContractDefError","MissingFunctionNameError","NodeInvocationError","NoSuchContractFunctionError","NotPayableFunctionError","MissingEventDefinitionError","AmbiguousEventDefinitionError","InvalidChecksumError","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnknownNodeLengthError","UnknownPathNibbleError","DuplicateNodeError","NodeNotFoundError","DecodeError","PayloadLengthError","DryRunError","IllegalBidFeeError","InvalidSignatureError","PrefixNotFoundError","SchemaNotFoundError","TagNotFoundError","TxNotInChainError","AlreadyConnectedError","NoWalletConnectedError","RpcConnectionError"],"sources":["../src/index-browser.ts"],"sourcesContent":["export {\n _getPollInterval,\n getHeight,\n poll,\n awaitHeight,\n waitForTxConfirm,\n getAccount,\n getBalance,\n getCurrentGeneration,\n getGeneration,\n getMicroBlockTransactions,\n getKeyBlock,\n getMicroBlockHeader,\n txDryRun,\n getContractByteCode,\n getContract,\n getName,\n resolveName,\n} from './chain.js';\nexport { InvalidTxError, sendTransaction } from './send-transaction.js';\nexport {\n isAddressValid,\n ensureEncoded,\n isEncoded,\n genSalt,\n encodeUnsigned,\n hash,\n verifySignature,\n hashMessage,\n verifyMessageSignature,\n} from './utils/crypto.js';\n/**\n * @category utils\n * @deprecated use {@link verifySignature} instead\n */\nexport { verifySignature as verify } from './utils/crypto.js';\n/**\n * @deprecated use {@link hashMessage} instead\n * @category utils\n */\nexport { hashMessage as messageToHash } from './utils/crypto.js';\n/**\n * @deprecated use {@link verifyMessageSignature} instead\n * @category utils\n */\nexport { verifyMessageSignature as verifyMessage } from './utils/crypto.js';\nexport { signJwt, unpackJwt, verifyJwt, isJwt, ensureJwt } from './utils/jwt.js';\nexport type { Jwt } from './utils/jwt.js';\nexport { toBytes } from './utils/bytes.js';\nexport {\n buildTx,\n buildTxAsync,\n buildTxHash,\n rebuildUnpackedTx,\n unpackTx,\n buildContractIdByContractTx,\n} from './tx/builder/index.js';\nexport {\n buildContractId,\n oracleQueryId,\n produceNameId,\n commitmentHash,\n readInt,\n isName,\n ensureName,\n getDefaultPointerKey,\n getMinimumNameFee,\n computeBidFee,\n computeAuctionEndBlock,\n isAuctionName,\n} from './tx/builder/helpers.js';\n/**\n * @category contract\n * @deprecated use {@link buildContractId} instead\n */\nexport { buildContractId as encodeContractAddress } from './tx/builder/helpers.js';\n/**\n * @category AENS\n * @deprecated use {@link isName} instead\n */\nexport { isName as isNameValid } from './tx/builder/helpers.js';\nexport {\n MAX_AUTH_FUN_GAS,\n MIN_GAS_PRICE,\n NAME_FEE_MULTIPLIER,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_MAX_LENGTH_FEE,\n NAME_BID_RANGES,\n ConsensusProtocolVersion,\n VmVersion,\n AbiVersion,\n Tag,\n DRY_RUN_ACCOUNT,\n} from './tx/builder/constants.js';\nexport type { Int, AensName } from './tx/builder/constants.js';\nexport {\n defaultProtocolParameters,\n getCachedProtocolParameters,\n} from './tx/builder/protocol-parameters.js';\nexport type {\n ProtocolParameters,\n ProtocolParametersOption,\n} from './tx/builder/protocol-parameters.js';\n// TODO: move to constants\nexport { ORACLE_TTL_TYPES } from './tx/builder/schema.js';\nexport { DelegationTag } from './tx/builder/delegation/schema.js';\nexport { packDelegation, unpackDelegation } from './tx/builder/delegation/index.js';\nexport { EntryTag, CallReturnType } from './tx/builder/entry/constants.js';\nexport { packEntry, unpackEntry } from './tx/builder/entry/index.js';\nexport {\n getExecutionCost,\n getExecutionCostBySignedTx,\n getExecutionCostUsingNode,\n} from './tx/execution-cost.js';\nexport { default as getTransactionSignerAddress } from './tx/transaction-signer.js';\nexport {\n AE_AMOUNT_FORMATS,\n formatAmount,\n toAe,\n toAettos,\n prefixedAmount,\n} from './utils/amount-formatter.js';\nexport { encode, decode, Encoding, Encoded } from './utils/encoder.js';\nexport { hashTypedData, hashDomain, hashJson } from './utils/typed-data.js';\nexport { default as Name } from './aens.js';\nexport { default as Contract } from './contract/Contract.js';\nexport type { ContractMethodsBase } from './contract/Contract.js';\nexport { default as Oracle } from './oracle/Oracle.js';\nexport { default as OracleClient } from './oracle/OracleClient.js';\nexport { spend, transferFunds, payForTransaction } from './spend.js';\nexport {\n createGeneralizedAccount,\n buildAuthTxHash,\n buildAuthTxHashByGaMetaTx,\n} from './contract/ga.js';\n\nexport { default as AeSdkMethods } from './AeSdkMethods.js';\nexport { default as AeSdkBase } from './AeSdkBase.js';\nexport { default as AeSdk } from './AeSdk.js';\nexport { default as AeSdkAepp } from './AeSdkAepp.js';\nexport { default as WalletConnectorFrame } from './aepp-wallet-communication/WalletConnectorFrame.js';\nexport { default as WalletConnectorFrameWithNode } from './aepp-wallet-communication/WalletConnectorFrameWithNode.js';\nexport { default as AeSdkWallet } from './AeSdkWallet.js';\nexport { default as Node } from './Node.js';\nexport { default as verifyTransaction } from './tx/validator.js';\nexport { default as AccountBase } from './account/Base.js';\nexport { default as AccountMemory } from './account/Memory.js';\n/**\n * @deprecated Use {@link AccountMemory} instead\n * @category account\n */\nexport { default as MemoryAccount } from './account/Memory.js';\nexport { default as AccountMnemonicFactory } from './account/MnemonicFactory.js';\nexport { default as AccountGeneralized } from './account/Generalized.js';\nexport { default as AccountLedger } from './account/Ledger.js';\nexport { default as AccountLedgerFactory } from './account/LedgerFactory.js';\nexport { default as AccountMetamask } from './account/Metamask.js';\nexport { default as AccountMetamaskFactory } from './account/MetamaskFactory.js';\nexport { default as CompilerBase } from './contract/compiler/Base.js';\nexport { default as CompilerHttp } from './contract/compiler/Http.js';\nexport { default as Channel } from './channel/Contract.js';\nexport {\n default as MiddlewareSubscriber,\n MiddlewareSubscriberError,\n MiddlewareSubscriberDisconnected,\n} from './MiddlewareSubscriber.js';\nexport { default as Middleware } from './Middleware.js';\nexport { MiddlewarePageMissed } from './utils/MiddlewarePage.js';\n\nexport { default as connectionProxy } from './aepp-wallet-communication/connection-proxy.js';\nexport {\n MESSAGE_DIRECTION,\n WALLET_TYPE,\n SUBSCRIPTION_TYPES,\n METHODS,\n RPC_STATUS,\n RpcError,\n RpcInvalidTransactionError,\n RpcRejectedByUserError,\n RpcUnsupportedProtocolError,\n RpcConnectionDenyError,\n RpcNotAuthorizeError,\n RpcPermissionDenyError,\n RpcInternalError,\n RpcMethodNotFoundError,\n RpcNoNetworkById,\n} from './aepp-wallet-communication/schema.js';\nexport { default as walletDetector } from './aepp-wallet-communication/wallet-detector.js';\nexport { default as BrowserRuntimeConnection } from './aepp-wallet-communication/connection/BrowserRuntime.js';\nexport { default as BrowserWindowMessageConnection } from './aepp-wallet-communication/connection/BrowserWindowMessage.js';\nexport {\n BaseError,\n AccountError,\n AensError,\n AeppError,\n ChannelError,\n CompilerError,\n ContractError,\n CryptographyError,\n NodeError,\n TransactionError,\n WalletError,\n ArgumentError,\n IllegalArgumentError,\n ArgumentCountMismatchError,\n InsufficientBalanceError,\n MissingParamError,\n NoSerializerFoundError,\n RequestTimedOutError,\n TxTimedOutError,\n TypeError,\n UnsupportedPlatformError,\n UnsupportedProtocolError,\n NotImplementedError,\n UnsupportedVersionError,\n LogicError,\n InternalError,\n UnexpectedTsError,\n UnavailableAccountError,\n AensPointerContextError,\n InsufficientNameFeeError,\n InvalidAensNameError,\n InvalidRpcMessageError,\n MissingCallbackError,\n UnAuthorizedAccountError,\n UnknownRpcClientError,\n UnsubscribedAccountError,\n ChannelCallError,\n ChannelConnectionError,\n ChannelPingTimedOutError,\n UnexpectedChannelMessageError,\n ChannelIncomingMessageError,\n UnknownChannelStateError,\n InvalidAuthDataError,\n BytecodeMismatchError,\n DuplicateContractError,\n InactiveContractError,\n InvalidMethodInvocationError,\n MissingContractAddressError,\n MissingContractDefError,\n MissingFunctionNameError,\n NodeInvocationError,\n NoSuchContractFunctionError,\n NotPayableFunctionError,\n MissingEventDefinitionError,\n AmbiguousEventDefinitionError,\n InvalidChecksumError,\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownNodeLengthError,\n UnknownPathNibbleError,\n DuplicateNodeError,\n NodeNotFoundError,\n DecodeError,\n PayloadLengthError,\n DryRunError,\n IllegalBidFeeError,\n InvalidSignatureError,\n PrefixNotFoundError,\n SchemaNotFoundError,\n TagNotFoundError,\n TxNotInChainError,\n AlreadyConnectedError,\n NoWalletConnectedError,\n RpcConnectionError,\n} from './utils/errors.js';\n"],"mappings":"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","ignoreList":[]}
@@ -7,8 +7,13 @@ export declare const DRY_RUN_ACCOUNT: {
7
7
  readonly amount: 100000000000000000000000000000000000n;
8
8
  };
9
9
  /**
10
+ * The maximum gas of a generalized account authentication function as it was at the moment of the
11
+ * SDK release. It is a node policy setting rather than a consensus parameter.
10
12
  * @category account generalized
11
- * @deprecated transaction builder will ensure that gas doesn't exceed the maximum value by itself
13
+ * @deprecated the transaction builder ensures that gas doesn't exceed the maximum by itself, and a
14
+ * node may accept another maximum than this constant. Use
15
+ * `(await getCachedProtocolParameters(node)).maxAuthFunGas` for the value the connected node
16
+ * reports, or `defaultProtocolParameters.maxAuthFunGas` for this one.
12
17
  */
13
18
  export declare const MAX_AUTH_FUN_GAS = 50000;
14
19
  /**
@@ -20,7 +25,11 @@ export type Int = number | string | BigNumber;
20
25
  */
21
26
  export type AensName = `${string}.chain`;
22
27
  /**
28
+ * The consensus minimum gas price as it was at the moment of the SDK release.
23
29
  * @category transaction builder
30
+ * @deprecated a node may run another minimum gas price, and this constant is wrong on it. Use
31
+ * `(await getCachedProtocolParameters(node)).minGasPrice` for the value the connected node
32
+ * reports, or `defaultProtocolParameters.minGasPrice` for this one.
24
33
  */
25
34
  export declare const MIN_GAS_PRICE = 1000000000;
26
35
  /**
@@ -61,7 +70,8 @@ export declare const NAME_BID_RANGES: {
61
70
  * @category chain
62
71
  */
63
72
  export declare enum ConsensusProtocolVersion {
64
- Ceres = 6
73
+ Ceres = 6,
74
+ Arcus = 7
65
75
  }
66
76
  /**
67
77
  * @category contract