@haneullabs/haneul 2.4.0 → 2.5.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 (82) hide show
  1. package/dist/bcs/bcs.mjs +1 -1
  2. package/dist/bcs/bcs.mjs.map +1 -1
  3. package/dist/bcs/index.d.mts +4 -4
  4. package/dist/client/core-resolver.mjs +2 -2
  5. package/dist/client/core-resolver.mjs.map +1 -1
  6. package/dist/client/core.mjs +1 -1
  7. package/dist/client/core.mjs.map +1 -1
  8. package/dist/cryptography/keypair.d.mts +1 -1
  9. package/dist/cryptography/keypair.mjs +3 -3
  10. package/dist/cryptography/keypair.mjs.map +1 -1
  11. package/dist/cryptography/publickey.d.mts +1 -1
  12. package/dist/cryptography/publickey.mjs +2 -2
  13. package/dist/cryptography/publickey.mjs.map +1 -1
  14. package/dist/cryptography/signature.d.mts +6 -6
  15. package/dist/grpc/proto/haneul/rpc/v2/ledger_service.client.d.mts +4 -4
  16. package/dist/grpc/proto/haneul/rpc/v2/move_package_service.client.d.mts +4 -4
  17. package/dist/grpc/proto/haneul/rpc/v2/state_service.client.d.mts +4 -4
  18. package/dist/grpc/proto/haneul/rpc/v2/subscription_service.client.d.mts +4 -4
  19. package/dist/grpc/proto/haneul/rpc/v2/system_state.d.mts +2 -2
  20. package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs +1 -1
  21. package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs.map +1 -1
  22. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.client.d.mts +4 -4
  23. package/dist/jsonRpc/client.d.mts +5 -5
  24. package/dist/jsonRpc/client.d.mts.map +1 -1
  25. package/dist/jsonRpc/client.mjs +56 -56
  26. package/dist/jsonRpc/client.mjs.map +1 -1
  27. package/dist/jsonRpc/core.mjs +6 -6
  28. package/dist/jsonRpc/core.mjs.map +1 -1
  29. package/dist/jsonRpc/index.d.mts +4 -4
  30. package/dist/jsonRpc/index.mjs +2 -2
  31. package/dist/jsonRpc/types/generated.d.mts +14 -14
  32. package/dist/jsonRpc/types/generated.d.mts.map +1 -1
  33. package/dist/jsonRpc/types/index.d.mts +2 -2
  34. package/dist/jsonRpc/types/params.d.mts +8 -8
  35. package/dist/jsonRpc/types/params.d.mts.map +1 -1
  36. package/dist/multisig/publickey.d.mts +1 -1
  37. package/dist/multisig/publickey.mjs +1 -1
  38. package/dist/multisig/publickey.mjs.map +1 -1
  39. package/dist/multisig/signer.mjs +2 -2
  40. package/dist/multisig/signer.mjs.map +1 -1
  41. package/dist/transactions/Commands.mjs +3 -3
  42. package/dist/transactions/Commands.mjs.map +1 -1
  43. package/dist/transactions/executor/caching.mjs +1 -1
  44. package/dist/transactions/executor/caching.mjs.map +1 -1
  45. package/dist/transactions/executor/parallel.mjs +3 -3
  46. package/dist/transactions/executor/parallel.mjs.map +1 -1
  47. package/dist/transactions/executor/serial.mjs +1 -1
  48. package/dist/transactions/executor/serial.mjs.map +1 -1
  49. package/dist/utils/haneul-types.d.mts +2 -2
  50. package/dist/utils/haneul-types.d.mts.map +1 -1
  51. package/dist/utils/haneul-types.mjs +2 -2
  52. package/dist/utils/haneul-types.mjs.map +1 -1
  53. package/dist/utils/index.d.mts +2 -2
  54. package/dist/utils/index.mjs +2 -2
  55. package/dist/verify/verify.mjs +1 -1
  56. package/dist/verify/verify.mjs.map +1 -1
  57. package/dist/zklogin/publickey.d.mts +1 -1
  58. package/dist/zklogin/publickey.d.mts.map +1 -1
  59. package/dist/zklogin/publickey.mjs +9 -9
  60. package/dist/zklogin/publickey.mjs.map +1 -1
  61. package/package.json +199 -199
  62. package/src/bcs/bcs.ts +1 -1
  63. package/src/client/core-resolver.ts +2 -2
  64. package/src/client/core.ts +1 -1
  65. package/src/cryptography/keypair.ts +3 -3
  66. package/src/cryptography/publickey.ts +2 -2
  67. package/src/grpc/proto/haneul/rpc/v2/system_state.ts +3 -3
  68. package/src/jsonRpc/client.ts +57 -57
  69. package/src/jsonRpc/core.ts +7 -7
  70. package/src/jsonRpc/index.ts +1 -1
  71. package/src/jsonRpc/types/generated.ts +13 -13
  72. package/src/jsonRpc/types/params.ts +7 -7
  73. package/src/multisig/publickey.ts +1 -1
  74. package/src/multisig/signer.ts +2 -2
  75. package/src/transactions/Commands.ts +3 -3
  76. package/src/transactions/executor/caching.ts +1 -1
  77. package/src/transactions/executor/parallel.ts +3 -3
  78. package/src/transactions/executor/serial.ts +1 -1
  79. package/src/utils/haneul-types.ts +1 -1
  80. package/src/utils/index.ts +1 -1
  81. package/src/verify/verify.ts +1 -1
  82. package/src/zklogin/publickey.ts +9 -9
package/dist/bcs/bcs.mjs CHANGED
@@ -251,7 +251,7 @@ const PasskeyAuthenticator = bcs.struct("PasskeyAuthenticator", {
251
251
  const MoveObjectType = bcs.enum("MoveObjectType", {
252
252
  Other: StructTag,
253
253
  GasCoin: null,
254
- StakedSui: null,
254
+ StakedHaneul: null,
255
255
  Coin: TypeTag,
256
256
  AccumulatorBalanceWrapper: null
257
257
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bcs.mjs","names":[],"sources":["../../src/bcs/bcs.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType, BcsTypeOptions } from '@haneullabs/bcs';\nimport { bcs, fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from '@haneullabs/bcs';\n\nimport { isValidHaneulAddress, normalizeHaneulAddress, HANEUL_ADDRESS_LENGTH } from '../utils/haneul-types.js';\nimport { TypeTagSerializer } from './type-tag-serializer.js';\nimport type { TypeTag as TypeTagType } from './types.js';\n\nfunction unsafe_u64(options?: BcsTypeOptions<number>) {\n\treturn bcs\n\t\t.u64({\n\t\t\tname: 'unsafe_u64',\n\t\t\t...(options as object),\n\t\t})\n\t\t.transform({\n\t\t\tinput: (val: number | string) => val,\n\t\t\toutput: (val) => Number(val),\n\t\t});\n}\n\nfunction optionEnum<T extends BcsType<any, any>>(type: T) {\n\treturn bcs.enum('Option', {\n\t\tNone: null,\n\t\tSome: type,\n\t});\n}\n\nexport const Address = bcs.bytes(HANEUL_ADDRESS_LENGTH).transform({\n\tvalidate: (val) => {\n\t\tconst address = typeof val === 'string' ? val : toHex(val);\n\t\tif (!address || !isValidHaneulAddress(normalizeHaneulAddress(address))) {\n\t\t\tthrow new Error(`Invalid Haneul address ${address}`);\n\t\t}\n\t},\n\tinput: (val: string | Uint8Array) =>\n\t\ttypeof val === 'string' ? fromHex(normalizeHaneulAddress(val)) : val,\n\toutput: (val) => normalizeHaneulAddress(toHex(val)),\n});\n\nexport const ObjectDigest = bcs.byteVector().transform({\n\tname: 'ObjectDigest',\n\tinput: (value: string) => fromBase58(value),\n\toutput: (value) => toBase58(new Uint8Array(value)),\n\tvalidate: (value) => {\n\t\tif (fromBase58(value).length !== 32) {\n\t\t\tthrow new Error('ObjectDigest must be 32 bytes');\n\t\t}\n\t},\n});\n\nexport const HaneulObjectRef = bcs.struct('HaneulObjectRef', {\n\tobjectId: Address,\n\tversion: bcs.u64(),\n\tdigest: ObjectDigest,\n});\n\nexport const SharedObjectRef = bcs.struct('SharedObjectRef', {\n\tobjectId: Address,\n\tinitialSharedVersion: bcs.u64(),\n\tmutable: bcs.bool(),\n});\n\nexport const ObjectArg = bcs.enum('ObjectArg', {\n\tImmOrOwnedObject: HaneulObjectRef,\n\tSharedObject: SharedObjectRef,\n\tReceiving: HaneulObjectRef,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const Owner = bcs.enum('Owner', {\n\tAddressOwner: Address,\n\tObjectOwner: Address,\n\tShared: bcs.struct('Shared', {\n\t\tinitialSharedVersion: bcs.u64(),\n\t}),\n\tImmutable: null,\n\tConsensusAddressOwner: bcs.struct('ConsensusAddressOwner', {\n\t\tstartVersion: bcs.u64(),\n\t\towner: Address,\n\t}),\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const Reservation = bcs.enum('Reservation', {\n\tMaxAmountU64: bcs.u64(),\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const WithdrawalType = bcs.enum('WithdrawalType', {\n\tBalance: bcs.lazy(() => TypeTag),\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const WithdrawFrom = bcs.enum('WithdrawFrom', {\n\tSender: null,\n\tSponsor: null,\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const FundsWithdrawal = bcs.struct('FundsWithdrawal', {\n\treservation: Reservation,\n\ttypeArg: WithdrawalType,\n\twithdrawFrom: WithdrawFrom,\n});\n\nexport const CallArg = bcs.enum('CallArg', {\n\tPure: bcs.struct('Pure', {\n\t\tbytes: bcs.byteVector().transform({\n\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t}),\n\t}),\n\tObject: ObjectArg,\n\tFundsWithdrawal: FundsWithdrawal,\n});\n\nconst InnerTypeTag: BcsType<TypeTagType, TypeTagType> = bcs.enum('TypeTag', {\n\tbool: null,\n\tu8: null,\n\tu64: null,\n\tu128: null,\n\taddress: null,\n\tsigner: null,\n\tvector: bcs.lazy(() => InnerTypeTag),\n\tstruct: bcs.lazy(() => StructTag),\n\tu16: null,\n\tu32: null,\n\tu256: null,\n}) as BcsType<TypeTagType>;\n\nexport const TypeTag = InnerTypeTag.transform({\n\tinput: (typeTag: string | TypeTagType) =>\n\t\ttypeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag, true) : typeTag,\n\toutput: (typeTag: TypeTagType) => TypeTagSerializer.tagToString(typeTag),\n});\n\nexport const Argument = bcs.enum('Argument', {\n\tGasCoin: null,\n\tInput: bcs.u16(),\n\tResult: bcs.u16(),\n\tNestedResult: bcs.tuple([bcs.u16(), bcs.u16()]),\n});\n\nexport const ProgrammableMoveCall = bcs.struct('ProgrammableMoveCall', {\n\tpackage: Address,\n\tmodule: bcs.string(),\n\tfunction: bcs.string(),\n\ttypeArguments: bcs.vector(TypeTag),\n\targuments: bcs.vector(Argument),\n});\n\nexport const Command = bcs.enum('Command', {\n\t/**\n\t * A Move Call - any public Move function can be called via\n\t * this transaction. The results can be used that instant to pass\n\t * into the next transaction.\n\t */\n\tMoveCall: ProgrammableMoveCall,\n\t/**\n\t * Transfer vector of objects to a receiver.\n\t */\n\tTransferObjects: bcs.struct('TransferObjects', {\n\t\tobjects: bcs.vector(Argument),\n\t\taddress: Argument,\n\t}),\n\t// /**\n\t// * Split `amount` from a `coin`.\n\t// */\n\tSplitCoins: bcs.struct('SplitCoins', {\n\t\tcoin: Argument,\n\t\tamounts: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Merge Vector of Coins (`sources`) into a `destination`.\n\t// */\n\tMergeCoins: bcs.struct('MergeCoins', {\n\t\tdestination: Argument,\n\t\tsources: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Publish a Move module.\n\t// */\n\tPublish: bcs.struct('Publish', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t}),\n\t// /**\n\t// * Build a vector of objects using the input arguments.\n\t// * It is impossible to export construct a `vector<T: key>` otherwise,\n\t// * so this call serves a utility function.\n\t// */\n\tMakeMoveVec: bcs.struct('MakeMoveVec', {\n\t\ttype: optionEnum(TypeTag).transform({\n\t\t\tinput: (val: string | null) =>\n\t\t\t\tval === null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tNone: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tSome: val,\n\t\t\t\t\t\t},\n\t\t\toutput: (val) => val.Some ?? null,\n\t\t}),\n\t\telements: bcs.vector(Argument),\n\t}),\n\tUpgrade: bcs.struct('Upgrade', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t\tpackage: Address,\n\t\tticket: Argument,\n\t}),\n});\n\nexport const ProgrammableTransaction = bcs.struct('ProgrammableTransaction', {\n\tinputs: bcs.vector(CallArg),\n\tcommands: bcs.vector(Command),\n});\n\nexport const TransactionKind = bcs.enum('TransactionKind', {\n\tProgrammableTransaction: ProgrammableTransaction,\n\tChangeEpoch: null,\n\tGenesis: null,\n\tConsensusCommitPrologue: null,\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const ValidDuring = bcs.struct('ValidDuring', {\n\tminEpoch: bcs.option(bcs.u64()),\n\tmaxEpoch: bcs.option(bcs.u64()),\n\tminTimestamp: bcs.option(bcs.u64()),\n\tmaxTimestamp: bcs.option(bcs.u64()),\n\tchain: ObjectDigest,\n\tnonce: bcs.u32(),\n});\n\nexport const TransactionExpiration = bcs.enum('TransactionExpiration', {\n\tNone: null,\n\tEpoch: unsafe_u64(),\n\tValidDuring: ValidDuring,\n});\n\nexport const StructTag = bcs.struct('StructTag', {\n\taddress: Address,\n\tmodule: bcs.string(),\n\tname: bcs.string(),\n\ttypeParams: bcs.vector(InnerTypeTag),\n});\n\nexport const GasData = bcs.struct('GasData', {\n\tpayment: bcs.vector(HaneulObjectRef),\n\towner: Address,\n\tprice: bcs.u64(),\n\tbudget: bcs.u64(),\n});\n\nexport const TransactionDataV1 = bcs.struct('TransactionDataV1', {\n\tkind: TransactionKind,\n\tsender: Address,\n\tgasData: GasData,\n\texpiration: TransactionExpiration,\n});\n\nexport const TransactionData = bcs.enum('TransactionData', {\n\tV1: TransactionDataV1,\n});\n\nexport const IntentScope = bcs.enum('IntentScope', {\n\tTransactionData: null,\n\tTransactionEffects: null,\n\tCheckpointSummary: null,\n\tPersonalMessage: null,\n});\n\nexport const IntentVersion = bcs.enum('IntentVersion', {\n\tV0: null,\n});\n\nexport const AppId = bcs.enum('AppId', {\n\tHaneul: null,\n});\n\nexport const Intent = bcs.struct('Intent', {\n\tscope: IntentScope,\n\tversion: IntentVersion,\n\tappId: AppId,\n});\n\nexport function IntentMessage<T extends BcsType<any>>(T: T) {\n\treturn bcs.struct(`IntentMessage<${T.name}>`, {\n\t\tintent: Intent,\n\t\tvalue: T,\n\t});\n}\n\nexport const CompressedSignature = bcs.enum('CompressedSignature', {\n\tED25519: bcs.bytes(64),\n\tSecp256k1: bcs.bytes(64),\n\tSecp256r1: bcs.bytes(64),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.byteVector(),\n});\n\nexport const PublicKey = bcs.enum('PublicKey', {\n\tED25519: bcs.bytes(32),\n\tSecp256k1: bcs.bytes(33),\n\tSecp256r1: bcs.bytes(33),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.bytes(33),\n});\n\nexport const MultiSigPkMap = bcs.struct('MultiSigPkMap', {\n\tpubKey: PublicKey,\n\tweight: bcs.u8(),\n});\n\nexport const MultiSigPublicKey = bcs.struct('MultiSigPublicKey', {\n\tpk_map: bcs.vector(MultiSigPkMap),\n\tthreshold: bcs.u16(),\n});\n\nexport const MultiSig = bcs.struct('MultiSig', {\n\tsigs: bcs.vector(CompressedSignature),\n\tbitmap: bcs.u16(),\n\tmultisig_pk: MultiSigPublicKey,\n});\n\nexport const base64String = bcs.byteVector().transform({\n\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\toutput: (val) => toBase64(new Uint8Array(val)),\n});\n\nexport const SenderSignedTransaction = bcs.struct('SenderSignedTransaction', {\n\tintentMessage: IntentMessage(TransactionData),\n\ttxSignatures: bcs.vector(base64String),\n});\n\nexport const SenderSignedData = bcs.vector(SenderSignedTransaction, {\n\tname: 'SenderSignedData',\n});\n\nexport const PasskeyAuthenticator = bcs.struct('PasskeyAuthenticator', {\n\tauthenticatorData: bcs.byteVector(),\n\tclientDataJson: bcs.string(),\n\tuserSignature: bcs.byteVector(),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const MoveObjectType = bcs.enum('MoveObjectType', {\n\tOther: StructTag,\n\tGasCoin: null,\n\tStakedSui: null,\n\tCoin: TypeTag,\n\tAccumulatorBalanceWrapper: null,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const TypeOrigin = bcs.struct('TypeOrigin', {\n\tmoduleName: bcs.string(),\n\tdatatypeName: bcs.string(),\n\tpackage: Address,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const UpgradeInfo = bcs.struct('UpgradeInfo', {\n\tupgradedId: Address,\n\tupgradedVersion: bcs.u64(),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const MovePackage = bcs.struct('MovePackage', {\n\tid: Address,\n\tversion: bcs.u64(),\n\tmoduleMap: bcs.map(bcs.string(), bcs.byteVector()),\n\ttypeOriginTable: bcs.vector(TypeOrigin),\n\tlinkageTable: bcs.map(Address, UpgradeInfo),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const MoveObject = bcs.struct('MoveObject', {\n\ttype: MoveObjectType,\n\thasPublicTransfer: bcs.bool(),\n\tversion: bcs.u64(),\n\tcontents: bcs.byteVector(),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const Data = bcs.enum('Data', {\n\tMove: MoveObject,\n\tPackage: MovePackage,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const ObjectInner = bcs.struct('ObjectInner', {\n\tdata: Data,\n\towner: Owner,\n\tpreviousTransaction: ObjectDigest,\n\tstorageRebate: bcs.u64(),\n});\n"],"mappings":";;;;;AAUA,SAAS,WAAW,SAAkC;AACrD,QAAO,IACL,IAAI;EACJ,MAAM;EACN,GAAI;EACJ,CAAC,CACD,UAAU;EACV,QAAQ,QAAyB;EACjC,SAAS,QAAQ,OAAO,IAAI;EAC5B,CAAC;;AAGJ,SAAS,WAAwC,MAAS;AACzD,QAAO,IAAI,KAAK,UAAU;EACzB,MAAM;EACN,MAAM;EACN,CAAC;;AAGH,MAAa,UAAU,IAAI,MAAM,sBAAsB,CAAC,UAAU;CACjE,WAAW,QAAQ;EAClB,MAAM,UAAU,OAAO,QAAQ,WAAW,MAAM,MAAM,IAAI;AAC1D,MAAI,CAAC,WAAW,CAAC,qBAAqB,uBAAuB,QAAQ,CAAC,CACrE,OAAM,IAAI,MAAM,0BAA0B,UAAU;;CAGtD,QAAQ,QACP,OAAO,QAAQ,WAAW,QAAQ,uBAAuB,IAAI,CAAC,GAAG;CAClE,SAAS,QAAQ,uBAAuB,MAAM,IAAI,CAAC;CACnD,CAAC;AAEF,MAAa,eAAe,IAAI,YAAY,CAAC,UAAU;CACtD,MAAM;CACN,QAAQ,UAAkB,WAAW,MAAM;CAC3C,SAAS,UAAU,SAAS,IAAI,WAAW,MAAM,CAAC;CAClD,WAAW,UAAU;AACpB,MAAI,WAAW,MAAM,CAAC,WAAW,GAChC,OAAM,IAAI,MAAM,gCAAgC;;CAGlD,CAAC;AAEF,MAAa,kBAAkB,IAAI,OAAO,mBAAmB;CAC5D,UAAU;CACV,SAAS,IAAI,KAAK;CAClB,QAAQ;CACR,CAAC;AAEF,MAAa,kBAAkB,IAAI,OAAO,mBAAmB;CAC5D,UAAU;CACV,sBAAsB,IAAI,KAAK;CAC/B,SAAS,IAAI,MAAM;CACnB,CAAC;AAEF,MAAa,YAAY,IAAI,KAAK,aAAa;CAC9C,kBAAkB;CAClB,cAAc;CACd,WAAW;CACX,CAAC;AAGF,MAAa,QAAQ,IAAI,KAAK,SAAS;CACtC,cAAc;CACd,aAAa;CACb,QAAQ,IAAI,OAAO,UAAU,EAC5B,sBAAsB,IAAI,KAAK,EAC/B,CAAC;CACF,WAAW;CACX,uBAAuB,IAAI,OAAO,yBAAyB;EAC1D,cAAc,IAAI,KAAK;EACvB,OAAO;EACP,CAAC;CACF,CAAC;AAGF,MAAa,cAAc,IAAI,KAAK,eAAe,EAClD,cAAc,IAAI,KAAK,EACvB,CAAC;AAGF,MAAa,iBAAiB,IAAI,KAAK,kBAAkB,EACxD,SAAS,IAAI,WAAW,QAAQ,EAChC,CAAC;AAGF,MAAa,eAAe,IAAI,KAAK,gBAAgB;CACpD,QAAQ;CACR,SAAS;CACT,CAAC;AAGF,MAAa,kBAAkB,IAAI,OAAO,mBAAmB;CAC5D,aAAa;CACb,SAAS;CACT,cAAc;CACd,CAAC;AAEF,MAAa,UAAU,IAAI,KAAK,WAAW;CAC1C,MAAM,IAAI,OAAO,QAAQ,EACxB,OAAO,IAAI,YAAY,CAAC,UAAU;EACjC,QAAQ,QAA8B,OAAO,QAAQ,WAAW,WAAW,IAAI,GAAG;EAClF,SAAS,QAAQ,SAAS,IAAI,WAAW,IAAI,CAAC;EAC9C,CAAC,EACF,CAAC;CACF,QAAQ;CACS;CACjB,CAAC;AAEF,MAAM,eAAkD,IAAI,KAAK,WAAW;CAC3E,MAAM;CACN,IAAI;CACJ,KAAK;CACL,MAAM;CACN,SAAS;CACT,QAAQ;CACR,QAAQ,IAAI,WAAW,aAAa;CACpC,QAAQ,IAAI,WAAW,UAAU;CACjC,KAAK;CACL,KAAK;CACL,MAAM;CACN,CAAC;AAEF,MAAa,UAAU,aAAa,UAAU;CAC7C,QAAQ,YACP,OAAO,YAAY,WAAW,kBAAkB,aAAa,SAAS,KAAK,GAAG;CAC/E,SAAS,YAAyB,kBAAkB,YAAY,QAAQ;CACxE,CAAC;AAEF,MAAa,WAAW,IAAI,KAAK,YAAY;CAC5C,SAAS;CACT,OAAO,IAAI,KAAK;CAChB,QAAQ,IAAI,KAAK;CACjB,cAAc,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAa,uBAAuB,IAAI,OAAO,wBAAwB;CACtE,SAAS;CACT,QAAQ,IAAI,QAAQ;CACpB,UAAU,IAAI,QAAQ;CACtB,eAAe,IAAI,OAAO,QAAQ;CAClC,WAAW,IAAI,OAAO,SAAS;CAC/B,CAAC;AAEF,MAAa,UAAU,IAAI,KAAK,WAAW;CAM1C,UAAU;CAIV,iBAAiB,IAAI,OAAO,mBAAmB;EAC9C,SAAS,IAAI,OAAO,SAAS;EAC7B,SAAS;EACT,CAAC;CAIF,YAAY,IAAI,OAAO,cAAc;EACpC,MAAM;EACN,SAAS,IAAI,OAAO,SAAS;EAC7B,CAAC;CAIF,YAAY,IAAI,OAAO,cAAc;EACpC,aAAa;EACb,SAAS,IAAI,OAAO,SAAS;EAC7B,CAAC;CAIF,SAAS,IAAI,OAAO,WAAW;EAC9B,SAAS,IAAI,OACZ,IAAI,YAAY,CAAC,UAAU;GAC1B,QAAQ,QAA8B,OAAO,QAAQ,WAAW,WAAW,IAAI,GAAG;GAClF,SAAS,QAAQ,SAAS,IAAI,WAAW,IAAI,CAAC;GAC9C,CAAC,CACF;EACD,cAAc,IAAI,OAAO,QAAQ;EACjC,CAAC;CAMF,aAAa,IAAI,OAAO,eAAe;EACtC,MAAM,WAAW,QAAQ,CAAC,UAAU;GACnC,QAAQ,QACP,QAAQ,OACL,EACA,MAAM,MACN,GACA,EACA,MAAM,KACN;GACJ,SAAS,QAAQ,IAAI,QAAQ;GAC7B,CAAC;EACF,UAAU,IAAI,OAAO,SAAS;EAC9B,CAAC;CACF,SAAS,IAAI,OAAO,WAAW;EAC9B,SAAS,IAAI,OACZ,IAAI,YAAY,CAAC,UAAU;GAC1B,QAAQ,QAA8B,OAAO,QAAQ,WAAW,WAAW,IAAI,GAAG;GAClF,SAAS,QAAQ,SAAS,IAAI,WAAW,IAAI,CAAC;GAC9C,CAAC,CACF;EACD,cAAc,IAAI,OAAO,QAAQ;EACjC,SAAS;EACT,QAAQ;EACR,CAAC;CACF,CAAC;AAEF,MAAa,0BAA0B,IAAI,OAAO,2BAA2B;CAC5E,QAAQ,IAAI,OAAO,QAAQ;CAC3B,UAAU,IAAI,OAAO,QAAQ;CAC7B,CAAC;AAEF,MAAa,kBAAkB,IAAI,KAAK,mBAAmB;CACjC;CACzB,aAAa;CACb,SAAS;CACT,yBAAyB;CACzB,CAAC;AAGF,MAAa,cAAc,IAAI,OAAO,eAAe;CACpD,UAAU,IAAI,OAAO,IAAI,KAAK,CAAC;CAC/B,UAAU,IAAI,OAAO,IAAI,KAAK,CAAC;CAC/B,cAAc,IAAI,OAAO,IAAI,KAAK,CAAC;CACnC,cAAc,IAAI,OAAO,IAAI,KAAK,CAAC;CACnC,OAAO;CACP,OAAO,IAAI,KAAK;CAChB,CAAC;AAEF,MAAa,wBAAwB,IAAI,KAAK,yBAAyB;CACtE,MAAM;CACN,OAAO,YAAY;CACN;CACb,CAAC;AAEF,MAAa,YAAY,IAAI,OAAO,aAAa;CAChD,SAAS;CACT,QAAQ,IAAI,QAAQ;CACpB,MAAM,IAAI,QAAQ;CAClB,YAAY,IAAI,OAAO,aAAa;CACpC,CAAC;AAEF,MAAa,UAAU,IAAI,OAAO,WAAW;CAC5C,SAAS,IAAI,OAAO,gBAAgB;CACpC,OAAO;CACP,OAAO,IAAI,KAAK;CAChB,QAAQ,IAAI,KAAK;CACjB,CAAC;AAEF,MAAa,oBAAoB,IAAI,OAAO,qBAAqB;CAChE,MAAM;CACN,QAAQ;CACR,SAAS;CACT,YAAY;CACZ,CAAC;AAEF,MAAa,kBAAkB,IAAI,KAAK,mBAAmB,EAC1D,IAAI,mBACJ,CAAC;AAEF,MAAa,cAAc,IAAI,KAAK,eAAe;CAClD,iBAAiB;CACjB,oBAAoB;CACpB,mBAAmB;CACnB,iBAAiB;CACjB,CAAC;AAEF,MAAa,gBAAgB,IAAI,KAAK,iBAAiB,EACtD,IAAI,MACJ,CAAC;AAEF,MAAa,QAAQ,IAAI,KAAK,SAAS,EACtC,QAAQ,MACR,CAAC;AAEF,MAAa,SAAS,IAAI,OAAO,UAAU;CAC1C,OAAO;CACP,SAAS;CACT,OAAO;CACP,CAAC;AAEF,SAAgB,cAAsC,GAAM;AAC3D,QAAO,IAAI,OAAO,iBAAiB,EAAE,KAAK,IAAI;EAC7C,QAAQ;EACR,OAAO;EACP,CAAC;;AAGH,MAAa,sBAAsB,IAAI,KAAK,uBAAuB;CAClE,SAAS,IAAI,MAAM,GAAG;CACtB,WAAW,IAAI,MAAM,GAAG;CACxB,WAAW,IAAI,MAAM,GAAG;CACxB,SAAS,IAAI,YAAY;CACzB,SAAS,IAAI,YAAY;CACzB,CAAC;AAEF,MAAa,YAAY,IAAI,KAAK,aAAa;CAC9C,SAAS,IAAI,MAAM,GAAG;CACtB,WAAW,IAAI,MAAM,GAAG;CACxB,WAAW,IAAI,MAAM,GAAG;CACxB,SAAS,IAAI,YAAY;CACzB,SAAS,IAAI,MAAM,GAAG;CACtB,CAAC;AAEF,MAAa,gBAAgB,IAAI,OAAO,iBAAiB;CACxD,QAAQ;CACR,QAAQ,IAAI,IAAI;CAChB,CAAC;AAEF,MAAa,oBAAoB,IAAI,OAAO,qBAAqB;CAChE,QAAQ,IAAI,OAAO,cAAc;CACjC,WAAW,IAAI,KAAK;CACpB,CAAC;AAEF,MAAa,WAAW,IAAI,OAAO,YAAY;CAC9C,MAAM,IAAI,OAAO,oBAAoB;CACrC,QAAQ,IAAI,KAAK;CACjB,aAAa;CACb,CAAC;AAEF,MAAa,eAAe,IAAI,YAAY,CAAC,UAAU;CACtD,QAAQ,QAA8B,OAAO,QAAQ,WAAW,WAAW,IAAI,GAAG;CAClF,SAAS,QAAQ,SAAS,IAAI,WAAW,IAAI,CAAC;CAC9C,CAAC;AAEF,MAAa,0BAA0B,IAAI,OAAO,2BAA2B;CAC5E,eAAe,cAAc,gBAAgB;CAC7C,cAAc,IAAI,OAAO,aAAa;CACtC,CAAC;AAEF,MAAa,mBAAmB,IAAI,OAAO,yBAAyB,EACnE,MAAM,oBACN,CAAC;AAEF,MAAa,uBAAuB,IAAI,OAAO,wBAAwB;CACtE,mBAAmB,IAAI,YAAY;CACnC,gBAAgB,IAAI,QAAQ;CAC5B,eAAe,IAAI,YAAY;CAC/B,CAAC;AAGF,MAAa,iBAAiB,IAAI,KAAK,kBAAkB;CACxD,OAAO;CACP,SAAS;CACT,WAAW;CACX,MAAM;CACN,2BAA2B;CAC3B,CAAC;AAGF,MAAa,aAAa,IAAI,OAAO,cAAc;CAClD,YAAY,IAAI,QAAQ;CACxB,cAAc,IAAI,QAAQ;CAC1B,SAAS;CACT,CAAC;AAGF,MAAa,cAAc,IAAI,OAAO,eAAe;CACpD,YAAY;CACZ,iBAAiB,IAAI,KAAK;CAC1B,CAAC;AAGF,MAAa,cAAc,IAAI,OAAO,eAAe;CACpD,IAAI;CACJ,SAAS,IAAI,KAAK;CAClB,WAAW,IAAI,IAAI,IAAI,QAAQ,EAAE,IAAI,YAAY,CAAC;CAClD,iBAAiB,IAAI,OAAO,WAAW;CACvC,cAAc,IAAI,IAAI,SAAS,YAAY;CAC3C,CAAC;AAGF,MAAa,aAAa,IAAI,OAAO,cAAc;CAClD,MAAM;CACN,mBAAmB,IAAI,MAAM;CAC7B,SAAS,IAAI,KAAK;CAClB,UAAU,IAAI,YAAY;CAC1B,CAAC;AAGF,MAAa,OAAO,IAAI,KAAK,QAAQ;CACpC,MAAM;CACN,SAAS;CACT,CAAC;AAGF,MAAa,cAAc,IAAI,OAAO,eAAe;CACpD,MAAM;CACN,OAAO;CACP,qBAAqB;CACrB,eAAe,IAAI,KAAK;CACxB,CAAC"}
1
+ {"version":3,"file":"bcs.mjs","names":[],"sources":["../../src/bcs/bcs.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType, BcsTypeOptions } from '@haneullabs/bcs';\nimport { bcs, fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from '@haneullabs/bcs';\n\nimport { isValidHaneulAddress, normalizeHaneulAddress, HANEUL_ADDRESS_LENGTH } from '../utils/haneul-types.js';\nimport { TypeTagSerializer } from './type-tag-serializer.js';\nimport type { TypeTag as TypeTagType } from './types.js';\n\nfunction unsafe_u64(options?: BcsTypeOptions<number>) {\n\treturn bcs\n\t\t.u64({\n\t\t\tname: 'unsafe_u64',\n\t\t\t...(options as object),\n\t\t})\n\t\t.transform({\n\t\t\tinput: (val: number | string) => val,\n\t\t\toutput: (val) => Number(val),\n\t\t});\n}\n\nfunction optionEnum<T extends BcsType<any, any>>(type: T) {\n\treturn bcs.enum('Option', {\n\t\tNone: null,\n\t\tSome: type,\n\t});\n}\n\nexport const Address = bcs.bytes(HANEUL_ADDRESS_LENGTH).transform({\n\tvalidate: (val) => {\n\t\tconst address = typeof val === 'string' ? val : toHex(val);\n\t\tif (!address || !isValidHaneulAddress(normalizeHaneulAddress(address))) {\n\t\t\tthrow new Error(`Invalid Haneul address ${address}`);\n\t\t}\n\t},\n\tinput: (val: string | Uint8Array) =>\n\t\ttypeof val === 'string' ? fromHex(normalizeHaneulAddress(val)) : val,\n\toutput: (val) => normalizeHaneulAddress(toHex(val)),\n});\n\nexport const ObjectDigest = bcs.byteVector().transform({\n\tname: 'ObjectDigest',\n\tinput: (value: string) => fromBase58(value),\n\toutput: (value) => toBase58(new Uint8Array(value)),\n\tvalidate: (value) => {\n\t\tif (fromBase58(value).length !== 32) {\n\t\t\tthrow new Error('ObjectDigest must be 32 bytes');\n\t\t}\n\t},\n});\n\nexport const HaneulObjectRef = bcs.struct('HaneulObjectRef', {\n\tobjectId: Address,\n\tversion: bcs.u64(),\n\tdigest: ObjectDigest,\n});\n\nexport const SharedObjectRef = bcs.struct('SharedObjectRef', {\n\tobjectId: Address,\n\tinitialSharedVersion: bcs.u64(),\n\tmutable: bcs.bool(),\n});\n\nexport const ObjectArg = bcs.enum('ObjectArg', {\n\tImmOrOwnedObject: HaneulObjectRef,\n\tSharedObject: SharedObjectRef,\n\tReceiving: HaneulObjectRef,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const Owner = bcs.enum('Owner', {\n\tAddressOwner: Address,\n\tObjectOwner: Address,\n\tShared: bcs.struct('Shared', {\n\t\tinitialSharedVersion: bcs.u64(),\n\t}),\n\tImmutable: null,\n\tConsensusAddressOwner: bcs.struct('ConsensusAddressOwner', {\n\t\tstartVersion: bcs.u64(),\n\t\towner: Address,\n\t}),\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const Reservation = bcs.enum('Reservation', {\n\tMaxAmountU64: bcs.u64(),\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const WithdrawalType = bcs.enum('WithdrawalType', {\n\tBalance: bcs.lazy(() => TypeTag),\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const WithdrawFrom = bcs.enum('WithdrawFrom', {\n\tSender: null,\n\tSponsor: null,\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const FundsWithdrawal = bcs.struct('FundsWithdrawal', {\n\treservation: Reservation,\n\ttypeArg: WithdrawalType,\n\twithdrawFrom: WithdrawFrom,\n});\n\nexport const CallArg = bcs.enum('CallArg', {\n\tPure: bcs.struct('Pure', {\n\t\tbytes: bcs.byteVector().transform({\n\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t}),\n\t}),\n\tObject: ObjectArg,\n\tFundsWithdrawal: FundsWithdrawal,\n});\n\nconst InnerTypeTag: BcsType<TypeTagType, TypeTagType> = bcs.enum('TypeTag', {\n\tbool: null,\n\tu8: null,\n\tu64: null,\n\tu128: null,\n\taddress: null,\n\tsigner: null,\n\tvector: bcs.lazy(() => InnerTypeTag),\n\tstruct: bcs.lazy(() => StructTag),\n\tu16: null,\n\tu32: null,\n\tu256: null,\n}) as BcsType<TypeTagType>;\n\nexport const TypeTag = InnerTypeTag.transform({\n\tinput: (typeTag: string | TypeTagType) =>\n\t\ttypeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag, true) : typeTag,\n\toutput: (typeTag: TypeTagType) => TypeTagSerializer.tagToString(typeTag),\n});\n\nexport const Argument = bcs.enum('Argument', {\n\tGasCoin: null,\n\tInput: bcs.u16(),\n\tResult: bcs.u16(),\n\tNestedResult: bcs.tuple([bcs.u16(), bcs.u16()]),\n});\n\nexport const ProgrammableMoveCall = bcs.struct('ProgrammableMoveCall', {\n\tpackage: Address,\n\tmodule: bcs.string(),\n\tfunction: bcs.string(),\n\ttypeArguments: bcs.vector(TypeTag),\n\targuments: bcs.vector(Argument),\n});\n\nexport const Command = bcs.enum('Command', {\n\t/**\n\t * A Move Call - any public Move function can be called via\n\t * this transaction. The results can be used that instant to pass\n\t * into the next transaction.\n\t */\n\tMoveCall: ProgrammableMoveCall,\n\t/**\n\t * Transfer vector of objects to a receiver.\n\t */\n\tTransferObjects: bcs.struct('TransferObjects', {\n\t\tobjects: bcs.vector(Argument),\n\t\taddress: Argument,\n\t}),\n\t// /**\n\t// * Split `amount` from a `coin`.\n\t// */\n\tSplitCoins: bcs.struct('SplitCoins', {\n\t\tcoin: Argument,\n\t\tamounts: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Merge Vector of Coins (`sources`) into a `destination`.\n\t// */\n\tMergeCoins: bcs.struct('MergeCoins', {\n\t\tdestination: Argument,\n\t\tsources: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Publish a Move module.\n\t// */\n\tPublish: bcs.struct('Publish', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t}),\n\t// /**\n\t// * Build a vector of objects using the input arguments.\n\t// * It is impossible to export construct a `vector<T: key>` otherwise,\n\t// * so this call serves a utility function.\n\t// */\n\tMakeMoveVec: bcs.struct('MakeMoveVec', {\n\t\ttype: optionEnum(TypeTag).transform({\n\t\t\tinput: (val: string | null) =>\n\t\t\t\tval === null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tNone: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tSome: val,\n\t\t\t\t\t\t},\n\t\t\toutput: (val) => val.Some ?? null,\n\t\t}),\n\t\telements: bcs.vector(Argument),\n\t}),\n\tUpgrade: bcs.struct('Upgrade', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t\tpackage: Address,\n\t\tticket: Argument,\n\t}),\n});\n\nexport const ProgrammableTransaction = bcs.struct('ProgrammableTransaction', {\n\tinputs: bcs.vector(CallArg),\n\tcommands: bcs.vector(Command),\n});\n\nexport const TransactionKind = bcs.enum('TransactionKind', {\n\tProgrammableTransaction: ProgrammableTransaction,\n\tChangeEpoch: null,\n\tGenesis: null,\n\tConsensusCommitPrologue: null,\n});\n\n// Rust: crate./haneul-types/src/transaction.rs\nexport const ValidDuring = bcs.struct('ValidDuring', {\n\tminEpoch: bcs.option(bcs.u64()),\n\tmaxEpoch: bcs.option(bcs.u64()),\n\tminTimestamp: bcs.option(bcs.u64()),\n\tmaxTimestamp: bcs.option(bcs.u64()),\n\tchain: ObjectDigest,\n\tnonce: bcs.u32(),\n});\n\nexport const TransactionExpiration = bcs.enum('TransactionExpiration', {\n\tNone: null,\n\tEpoch: unsafe_u64(),\n\tValidDuring: ValidDuring,\n});\n\nexport const StructTag = bcs.struct('StructTag', {\n\taddress: Address,\n\tmodule: bcs.string(),\n\tname: bcs.string(),\n\ttypeParams: bcs.vector(InnerTypeTag),\n});\n\nexport const GasData = bcs.struct('GasData', {\n\tpayment: bcs.vector(HaneulObjectRef),\n\towner: Address,\n\tprice: bcs.u64(),\n\tbudget: bcs.u64(),\n});\n\nexport const TransactionDataV1 = bcs.struct('TransactionDataV1', {\n\tkind: TransactionKind,\n\tsender: Address,\n\tgasData: GasData,\n\texpiration: TransactionExpiration,\n});\n\nexport const TransactionData = bcs.enum('TransactionData', {\n\tV1: TransactionDataV1,\n});\n\nexport const IntentScope = bcs.enum('IntentScope', {\n\tTransactionData: null,\n\tTransactionEffects: null,\n\tCheckpointSummary: null,\n\tPersonalMessage: null,\n});\n\nexport const IntentVersion = bcs.enum('IntentVersion', {\n\tV0: null,\n});\n\nexport const AppId = bcs.enum('AppId', {\n\tHaneul: null,\n});\n\nexport const Intent = bcs.struct('Intent', {\n\tscope: IntentScope,\n\tversion: IntentVersion,\n\tappId: AppId,\n});\n\nexport function IntentMessage<T extends BcsType<any>>(T: T) {\n\treturn bcs.struct(`IntentMessage<${T.name}>`, {\n\t\tintent: Intent,\n\t\tvalue: T,\n\t});\n}\n\nexport const CompressedSignature = bcs.enum('CompressedSignature', {\n\tED25519: bcs.bytes(64),\n\tSecp256k1: bcs.bytes(64),\n\tSecp256r1: bcs.bytes(64),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.byteVector(),\n});\n\nexport const PublicKey = bcs.enum('PublicKey', {\n\tED25519: bcs.bytes(32),\n\tSecp256k1: bcs.bytes(33),\n\tSecp256r1: bcs.bytes(33),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.bytes(33),\n});\n\nexport const MultiSigPkMap = bcs.struct('MultiSigPkMap', {\n\tpubKey: PublicKey,\n\tweight: bcs.u8(),\n});\n\nexport const MultiSigPublicKey = bcs.struct('MultiSigPublicKey', {\n\tpk_map: bcs.vector(MultiSigPkMap),\n\tthreshold: bcs.u16(),\n});\n\nexport const MultiSig = bcs.struct('MultiSig', {\n\tsigs: bcs.vector(CompressedSignature),\n\tbitmap: bcs.u16(),\n\tmultisig_pk: MultiSigPublicKey,\n});\n\nexport const base64String = bcs.byteVector().transform({\n\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\toutput: (val) => toBase64(new Uint8Array(val)),\n});\n\nexport const SenderSignedTransaction = bcs.struct('SenderSignedTransaction', {\n\tintentMessage: IntentMessage(TransactionData),\n\ttxSignatures: bcs.vector(base64String),\n});\n\nexport const SenderSignedData = bcs.vector(SenderSignedTransaction, {\n\tname: 'SenderSignedData',\n});\n\nexport const PasskeyAuthenticator = bcs.struct('PasskeyAuthenticator', {\n\tauthenticatorData: bcs.byteVector(),\n\tclientDataJson: bcs.string(),\n\tuserSignature: bcs.byteVector(),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const MoveObjectType = bcs.enum('MoveObjectType', {\n\tOther: StructTag,\n\tGasCoin: null,\n\tStakedHaneul: null,\n\tCoin: TypeTag,\n\tAccumulatorBalanceWrapper: null,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const TypeOrigin = bcs.struct('TypeOrigin', {\n\tmoduleName: bcs.string(),\n\tdatatypeName: bcs.string(),\n\tpackage: Address,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const UpgradeInfo = bcs.struct('UpgradeInfo', {\n\tupgradedId: Address,\n\tupgradedVersion: bcs.u64(),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const MovePackage = bcs.struct('MovePackage', {\n\tid: Address,\n\tversion: bcs.u64(),\n\tmoduleMap: bcs.map(bcs.string(), bcs.byteVector()),\n\ttypeOriginTable: bcs.vector(TypeOrigin),\n\tlinkageTable: bcs.map(Address, UpgradeInfo),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const MoveObject = bcs.struct('MoveObject', {\n\ttype: MoveObjectType,\n\thasPublicTransfer: bcs.bool(),\n\tversion: bcs.u64(),\n\tcontents: bcs.byteVector(),\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const Data = bcs.enum('Data', {\n\tMove: MoveObject,\n\tPackage: MovePackage,\n});\n\n// Rust: crate./haneul-types/src/object.rs\nexport const ObjectInner = bcs.struct('ObjectInner', {\n\tdata: Data,\n\towner: Owner,\n\tpreviousTransaction: ObjectDigest,\n\tstorageRebate: bcs.u64(),\n});\n"],"mappings":"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"}
@@ -204,7 +204,7 @@ declare const suiBcs: {
204
204
  }, string>;
205
205
  }, string>;
206
206
  GasCoin: null;
207
- StakedSui: null;
207
+ StakedHaneul: null;
208
208
  Coin: _haneullabs_bcs0.BcsType<string, string | TypeTag, string>;
209
209
  AccumulatorBalanceWrapper: null;
210
210
  }, "MoveObjectType">;
@@ -287,7 +287,7 @@ declare const suiBcs: {
287
287
  }, string>;
288
288
  }, string>;
289
289
  GasCoin: null;
290
- StakedSui: null;
290
+ StakedHaneul: null;
291
291
  Coin: _haneullabs_bcs0.BcsType<string, string | TypeTag, string>;
292
292
  AccumulatorBalanceWrapper: null;
293
293
  }, "MoveObjectType">;
@@ -305,7 +305,7 @@ declare const suiBcs: {
305
305
  }, string>;
306
306
  }, string>;
307
307
  GasCoin: null;
308
- StakedSui: null;
308
+ StakedHaneul: null;
309
309
  Coin: _haneullabs_bcs0.BcsType<string, string | TypeTag, string>;
310
310
  AccumulatorBalanceWrapper: null;
311
311
  }, "MoveObjectType">;
@@ -421,7 +421,7 @@ declare const suiBcs: {
421
421
  }, string>;
422
422
  }, string>;
423
423
  GasCoin: null;
424
- StakedSui: null;
424
+ StakedHaneul: null;
425
425
  Coin: _haneullabs_bcs0.BcsType<string, string | TypeTag, string>;
426
426
  AccumulatorBalanceWrapper: null;
427
427
  }, "MoveObjectType">;
@@ -1,4 +1,4 @@
1
- import { normalizeHaneulAddress, normalizeSuiObjectId } from "../utils/haneul-types.mjs";
1
+ import { normalizeHaneulAddress, normalizeHaneulObjectId } from "../utils/haneul-types.mjs";
2
2
  import { ObjectRefSchema } from "../transactions/data/internal.mjs";
3
3
  import { SimulationError } from "./errors.mjs";
4
4
  import { HANEUL_TYPE_ARG } from "../utils/constants.mjs";
@@ -112,7 +112,7 @@ async function resolveObjectReferences(transactionData, client) {
112
112
  const objectsToResolve = transactionData.inputs.filter((input) => {
113
113
  return input.UnresolvedObject && !(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion);
114
114
  });
115
- const dedupedIds = [...new Set(objectsToResolve.map((input) => normalizeSuiObjectId(input.UnresolvedObject.objectId)))];
115
+ const dedupedIds = [...new Set(objectsToResolve.map((input) => normalizeHaneulObjectId(input.UnresolvedObject.objectId)))];
116
116
  const objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];
117
117
  const resolved = (await Promise.all(objectChunks.map((chunkIds) => client.core.getObjects({ objectIds: chunkIds })))).flatMap((result) => result.objects);
118
118
  const responsesById = new Map(dedupedIds.map((id, index) => {
@@ -1 +1 @@
1
- {"version":3,"file":"core-resolver.mjs","names":["object"],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { parse } from 'valibot';\n\nimport { normalizeHaneulAddress, normalizeSuiObjectId, HANEUL_TYPE_ARG } from '../utils/index.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport { ObjectRefSchema } from '../transactions/data/internal.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { HaneulClientTypes } from './types.js';\nimport { SimulationError } from './errors.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@haneullabs/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No haneul client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\n\tawait normalizeInputs(transactionData, client);\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tawait setGasData(transactionData, client);\n\t}\n\n\treturn await next();\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setGasData(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tlet systemState: SystemStateData | null = null;\n\n\tif (!transactionData.gasData.price) {\n\t\tconst response = await client.core.getCurrentSystemState();\n\t\tsystemState = response.systemState;\n\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t}\n\n\tawait setGasBudget(transactionData, client);\n\tawait setGasPayment(transactionData, client);\n\n\tif (!transactionData.expiration) {\n\t\tawait setExpiration(transactionData, client, systemState);\n\t}\n}\n\nasync function setGasBudget(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t});\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst executionError = simulateResult.FailedTransaction.status.error ?? undefined;\n\t\tconst errorMessage = executionError?.message ?? 'Unknown error';\n\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\tcause: simulateResult,\n\t\t\texecutionError,\n\t\t});\n\t}\n\n\tconst gasUsed = simulateResult.Transaction.effects!.gasUsed;\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(transactionData.gasData.price || 1n);\n\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\n\ttransactionData.gasData.budget = String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\n// The current default is just picking _all_ coins we can which may not be ideal.\nasync function setGasPayment(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (!transactionData.gasData.payment) {\n\t\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender!;\n\t\tlet usesGasCoin = false;\n\t\tlet withdrawals = 0n;\n\n\t\ttransactionData.mapArguments((arg) => {\n\t\t\tif (arg.$kind === 'GasCoin') {\n\t\t\t\tusesGasCoin = true;\n\t\t\t} else if (arg.$kind === 'Input') {\n\t\t\t\tconst input = transactionData.inputs[arg.Input];\n\n\t\t\t\tif (input.$kind === 'FundsWithdrawal') {\n\t\t\t\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t\t\t\t? transactionData.sender\n\t\t\t\t\t\t: gasPayer;\n\n\t\t\t\t\tif (withdrawalOwner === gasPayer) {\n\t\t\t\t\t\tif (input.FundsWithdrawal.reservation.$kind === 'MaxAmountU64') {\n\t\t\t\t\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arg;\n\t\t});\n\n\t\tconst [suiBalance, coins] = await Promise.all([\n\t\t\tusesGasCoin || !transactionData.gasData.owner\n\t\t\t\t? null\n\t\t\t\t: client.core.getBalance({\n\t\t\t\t\t\towner: transactionData.gasData.owner,\n\t\t\t\t\t}),\n\t\t\tclient.core.listCoins({\n\t\t\t\towner: transactionData.gasData.owner || transactionData.sender!,\n\t\t\t\tcoinType: HANEUL_TYPE_ARG,\n\t\t\t}),\n\t\t]);\n\n\t\tif (\n\t\t\tsuiBalance?.balance.addressBalance &&\n\t\t\tBigInt(suiBalance.balance.addressBalance) >=\n\t\t\t\tBigInt(transactionData.gasData.budget || '0') + withdrawals\n\t\t) {\n\t\t\ttransactionData.gasData.payment = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst paymentCoins = coins.objects\n\t\t\t// Filter out coins that are also used as input:\n\t\t\t.filter((coin) => {\n\t\t\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t\treturn !matchingInput;\n\t\t\t})\n\t\t\t.map((coin) =>\n\t\t\t\tparse(ObjectRefSchema, {\n\t\t\t\t\tobjectId: coin.objectId,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t}),\n\t\t\t);\n\n\t\tif (!paymentCoins.length) {\n\t\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t\t}\n\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\texistingSystemState: SystemStateData | null,\n) {\n\tconst [systemState, { chainIdentifier }] = await Promise.all([\n\t\texistingSystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t\tclient.core.getChainIdentifier(),\n\t]);\n\tconst currentEpoch = BigInt(systemState.epoch);\n\n\ttransactionData.expiration = {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeSuiObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeHaneulAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, HaneulClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: HaneulClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core-resolver.mjs","names":["object"],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { parse } from 'valibot';\n\nimport { normalizeHaneulAddress, normalizeHaneulObjectId, HANEUL_TYPE_ARG } from '../utils/index.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport { ObjectRefSchema } from '../transactions/data/internal.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { HaneulClientTypes } from './types.js';\nimport { SimulationError } from './errors.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@haneullabs/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No haneul client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\n\tawait normalizeInputs(transactionData, client);\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tawait setGasData(transactionData, client);\n\t}\n\n\treturn await next();\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setGasData(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tlet systemState: SystemStateData | null = null;\n\n\tif (!transactionData.gasData.price) {\n\t\tconst response = await client.core.getCurrentSystemState();\n\t\tsystemState = response.systemState;\n\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t}\n\n\tawait setGasBudget(transactionData, client);\n\tawait setGasPayment(transactionData, client);\n\n\tif (!transactionData.expiration) {\n\t\tawait setExpiration(transactionData, client, systemState);\n\t}\n}\n\nasync function setGasBudget(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t});\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst executionError = simulateResult.FailedTransaction.status.error ?? undefined;\n\t\tconst errorMessage = executionError?.message ?? 'Unknown error';\n\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\tcause: simulateResult,\n\t\t\texecutionError,\n\t\t});\n\t}\n\n\tconst gasUsed = simulateResult.Transaction.effects!.gasUsed;\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(transactionData.gasData.price || 1n);\n\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\n\ttransactionData.gasData.budget = String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\n// The current default is just picking _all_ coins we can which may not be ideal.\nasync function setGasPayment(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (!transactionData.gasData.payment) {\n\t\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender!;\n\t\tlet usesGasCoin = false;\n\t\tlet withdrawals = 0n;\n\n\t\ttransactionData.mapArguments((arg) => {\n\t\t\tif (arg.$kind === 'GasCoin') {\n\t\t\t\tusesGasCoin = true;\n\t\t\t} else if (arg.$kind === 'Input') {\n\t\t\t\tconst input = transactionData.inputs[arg.Input];\n\n\t\t\t\tif (input.$kind === 'FundsWithdrawal') {\n\t\t\t\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t\t\t\t? transactionData.sender\n\t\t\t\t\t\t: gasPayer;\n\n\t\t\t\t\tif (withdrawalOwner === gasPayer) {\n\t\t\t\t\t\tif (input.FundsWithdrawal.reservation.$kind === 'MaxAmountU64') {\n\t\t\t\t\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arg;\n\t\t});\n\n\t\tconst [suiBalance, coins] = await Promise.all([\n\t\t\tusesGasCoin || !transactionData.gasData.owner\n\t\t\t\t? null\n\t\t\t\t: client.core.getBalance({\n\t\t\t\t\t\towner: transactionData.gasData.owner,\n\t\t\t\t\t}),\n\t\t\tclient.core.listCoins({\n\t\t\t\towner: transactionData.gasData.owner || transactionData.sender!,\n\t\t\t\tcoinType: HANEUL_TYPE_ARG,\n\t\t\t}),\n\t\t]);\n\n\t\tif (\n\t\t\tsuiBalance?.balance.addressBalance &&\n\t\t\tBigInt(suiBalance.balance.addressBalance) >=\n\t\t\t\tBigInt(transactionData.gasData.budget || '0') + withdrawals\n\t\t) {\n\t\t\ttransactionData.gasData.payment = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst paymentCoins = coins.objects\n\t\t\t// Filter out coins that are also used as input:\n\t\t\t.filter((coin) => {\n\t\t\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t\treturn !matchingInput;\n\t\t\t})\n\t\t\t.map((coin) =>\n\t\t\t\tparse(ObjectRefSchema, {\n\t\t\t\t\tobjectId: coin.objectId,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t}),\n\t\t\t);\n\n\t\tif (!paymentCoins.length) {\n\t\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t\t}\n\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\texistingSystemState: SystemStateData | null,\n) {\n\tconst [systemState, { chainIdentifier }] = await Promise.all([\n\t\texistingSystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t\tclient.core.getChainIdentifier(),\n\t]);\n\tconst currentEpoch = BigInt(systemState.epoch);\n\n\ttransactionData.expiration = {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeHaneulObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeHaneulAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, HaneulClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: HaneulClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":"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"}
@@ -103,7 +103,7 @@ var CoreClient = class extends BaseClient {
103
103
  let transactionBytes;
104
104
  if (transaction instanceof Uint8Array) transactionBytes = transaction;
105
105
  else {
106
- transaction.setSenderIfNotSet(signer.toSuiAddress());
106
+ transaction.setSenderIfNotSet(signer.toHaneulAddress());
107
107
  transactionBytes = await transaction.build({ client: this });
108
108
  }
109
109
  const { signature } = await signer.signTransaction(transactionBytes);
@@ -1 +1 @@
1
- {"version":3,"file":"core.mjs","names":["bcs"],"sources":["../../src/client/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { TypeTagSerializer } from '../bcs/type-tag-serializer.js';\nimport type { TransactionPlugin } from '../transactions/index.js';\nimport { deriveDynamicFieldID } from '../utils/dynamic-fields.js';\nimport { normalizeStructTag, parseStructTag, HANEUL_ADDRESS_LENGTH } from '../utils/haneul-types.js';\nimport { BaseClient } from './client.js';\nimport type { ClientWithExtensions, HaneulClientTypes } from './types.js';\nimport { MvrClient } from './mvr.js';\nimport { bcs } from '../bcs/index.js';\n\nexport type ClientWithCoreApi = ClientWithExtensions<{\n\tcore: CoreClient;\n}>;\n\nexport interface CoreClientOptions extends HaneulClientTypes.HaneulClientOptions {\n\tbase: BaseClient;\n\tmvr?: HaneulClientTypes.MvrOptions;\n}\n\nconst DEFAULT_MVR_URLS: Record<string, string> = {\n\tmainnet: 'https://mainnet.mvr.haneul-labs.com',\n\ttestnet: 'https://testnet.mvr.haneul-labs.com',\n};\n\nexport abstract class CoreClient extends BaseClient implements HaneulClientTypes.TransportMethods {\n\tcore = this;\n\tmvr: HaneulClientTypes.MvrMethods;\n\n\tconstructor(options: CoreClientOptions) {\n\t\tsuper(options);\n\n\t\tthis.mvr = new MvrClient({\n\t\t\tcache: this.cache.scope('core.mvr'),\n\t\t\turl: options.mvr?.url ?? DEFAULT_MVR_URLS[this.network],\n\t\t\tpageSize: options.mvr?.pageSize,\n\t\t\toverrides: options.mvr?.overrides,\n\t\t});\n\t}\n\n\tabstract getObjects<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.GetObjectsOptions<Include>,\n\t): Promise<HaneulClientTypes.GetObjectsResponse<Include>>;\n\n\tasync getObject<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.GetObjectOptions<Include>,\n\t): Promise<HaneulClientTypes.GetObjectResponse<Include>> {\n\t\tconst { objectId } = options;\n\t\tconst {\n\t\t\tobjects: [result],\n\t\t} = await this.getObjects({\n\t\t\tobjectIds: [objectId],\n\t\t\tsignal: options.signal,\n\t\t\tinclude: options.include,\n\t\t});\n\t\tif (result instanceof Error) {\n\t\t\tthrow result;\n\t\t}\n\t\treturn { object: result };\n\t}\n\n\tabstract listCoins(\n\t\toptions: HaneulClientTypes.ListCoinsOptions,\n\t): Promise<HaneulClientTypes.ListCoinsResponse>;\n\n\tabstract listOwnedObjects<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.ListOwnedObjectsOptions<Include>,\n\t): Promise<HaneulClientTypes.ListOwnedObjectsResponse<Include>>;\n\n\tabstract getBalance(\n\t\toptions: HaneulClientTypes.GetBalanceOptions,\n\t): Promise<HaneulClientTypes.GetBalanceResponse>;\n\n\tabstract listBalances(\n\t\toptions: HaneulClientTypes.ListBalancesOptions,\n\t): Promise<HaneulClientTypes.ListBalancesResponse>;\n\n\tabstract getCoinMetadata(\n\t\toptions: HaneulClientTypes.GetCoinMetadataOptions,\n\t): Promise<HaneulClientTypes.GetCoinMetadataResponse>;\n\n\tabstract getTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(\n\t\toptions: HaneulClientTypes.GetTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.TransactionResult<Include>>;\n\n\tabstract executeTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(\n\t\toptions: HaneulClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.TransactionResult<Include>>;\n\n\tabstract simulateTransaction<Include extends HaneulClientTypes.SimulateTransactionInclude = object>(\n\t\toptions: HaneulClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.SimulateTransactionResult<Include>>;\n\n\tabstract getReferenceGasPrice(\n\t\toptions?: HaneulClientTypes.GetReferenceGasPriceOptions,\n\t): Promise<HaneulClientTypes.GetReferenceGasPriceResponse>;\n\n\tabstract getCurrentSystemState(\n\t\toptions?: HaneulClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<HaneulClientTypes.GetCurrentSystemStateResponse>;\n\n\tabstract getChainIdentifier(\n\t\toptions?: HaneulClientTypes.GetChainIdentifierOptions,\n\t): Promise<HaneulClientTypes.GetChainIdentifierResponse>;\n\n\tabstract listDynamicFields(\n\t\toptions: HaneulClientTypes.ListDynamicFieldsOptions,\n\t): Promise<HaneulClientTypes.ListDynamicFieldsResponse>;\n\n\tabstract resolveTransactionPlugin(): TransactionPlugin;\n\n\tabstract verifyZkLoginSignature(\n\t\toptions: HaneulClientTypes.VerifyZkLoginSignatureOptions,\n\t): Promise<HaneulClientTypes.ZkLoginVerifyResponse>;\n\n\tabstract getMoveFunction(\n\t\toptions: HaneulClientTypes.GetMoveFunctionOptions,\n\t): Promise<HaneulClientTypes.GetMoveFunctionResponse>;\n\n\tabstract defaultNameServiceName(\n\t\toptions: HaneulClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<HaneulClientTypes.DefaultNameServiceNameResponse>;\n\n\tasync getDynamicField(\n\t\toptions: HaneulClientTypes.GetDynamicFieldOptions,\n\t): Promise<HaneulClientTypes.GetDynamicFieldResponse> {\n\t\tconst normalizedNameType = TypeTagSerializer.parseFromStr(\n\t\t\t(\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: options.name.type,\n\t\t\t\t})\n\t\t\t).type,\n\t\t);\n\t\tconst fieldId = deriveDynamicFieldID(options.parentId, normalizedNameType, options.name.bcs);\n\t\tconst {\n\t\t\tobjects: [fieldObject],\n\t\t} = await this.getObjects({\n\t\t\tobjectIds: [fieldId],\n\t\t\tsignal: options.signal,\n\t\t\tinclude: {\n\t\t\t\tpreviousTransaction: true,\n\t\t\t\tcontent: true,\n\t\t\t},\n\t\t});\n\n\t\tif (fieldObject instanceof Error) {\n\t\t\tthrow fieldObject;\n\t\t}\n\n\t\tconst fieldType = parseStructTag(fieldObject.type);\n\t\tconst content = await fieldObject.content;\n\n\t\treturn {\n\t\t\tdynamicField: {\n\t\t\t\tfieldId: fieldObject.objectId,\n\t\t\t\tdigest: fieldObject.digest,\n\t\t\t\tversion: fieldObject.version,\n\t\t\t\ttype: fieldObject.type,\n\t\t\t\tpreviousTransaction: fieldObject.previousTransaction,\n\t\t\t\tname: {\n\t\t\t\t\ttype:\n\t\t\t\t\t\ttypeof fieldType.typeParams[0] === 'string'\n\t\t\t\t\t\t\t? fieldType.typeParams[0]\n\t\t\t\t\t\t\t: normalizeStructTag(fieldType.typeParams[0]),\n\t\t\t\t\tbcs: options.name.bcs,\n\t\t\t\t},\n\t\t\t\tvalue: {\n\t\t\t\t\ttype:\n\t\t\t\t\t\ttypeof fieldType.typeParams[1] === 'string'\n\t\t\t\t\t\t\t? fieldType.typeParams[1]\n\t\t\t\t\t\t\t: normalizeStructTag(fieldType.typeParams[1]),\n\t\t\t\t\tbcs: content.slice(HANEUL_ADDRESS_LENGTH + options.name.bcs.length),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getDynamicObjectField<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.GetDynamicObjectFieldOptions<Include>,\n\t): Promise<HaneulClientTypes.GetDynamicObjectFieldResponse<Include>> {\n\t\tconst resolvedNameType = (\n\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\ttype: options.name.type,\n\t\t\t})\n\t\t).type;\n\t\tconst wrappedType = `0x2::dynamic_object_field::Wrapper<${resolvedNameType}>`;\n\n\t\tconst { dynamicField } = await this.getDynamicField({\n\t\t\tparentId: options.parentId,\n\t\t\tname: {\n\t\t\t\ttype: wrappedType,\n\t\t\t\tbcs: options.name.bcs,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tconst { object } = await this.getObject({\n\t\t\tobjectId: bcs.Address.parse(dynamicField.value.bcs),\n\t\t\tsignal: options.signal,\n\t\t\tinclude: options.include,\n\t\t});\n\n\t\treturn { object };\n\t}\n\n\tasync waitForTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(\n\t\toptions: HaneulClientTypes.WaitForTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.TransactionResult<Include>> {\n\t\tconst { signal, timeout = 60 * 1000, include } = options;\n\n\t\tconst digest =\n\t\t\t'result' in options && options.result\n\t\t\t\t? (options.result.Transaction ?? options.result.FailedTransaction)!.digest\n\t\t\t\t: options.digest;\n\n\t\tconst abortSignal = signal\n\t\t\t? AbortSignal.any([AbortSignal.timeout(timeout), signal])\n\t\t\t: AbortSignal.timeout(timeout);\n\n\t\tconst abortPromise = new Promise((_, reject) => {\n\t\t\tabortSignal.addEventListener('abort', () => reject(abortSignal.reason));\n\t\t});\n\n\t\tabortPromise.catch(() => {\n\t\t\t// Swallow unhandled rejections that might be thrown after early return\n\t\t});\n\n\t\twhile (true) {\n\t\t\tabortSignal.throwIfAborted();\n\t\t\ttry {\n\t\t\t\treturn await this.getTransaction({\n\t\t\t\t\tdigest,\n\t\t\t\t\tinclude,\n\t\t\t\t\tsignal: abortSignal,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\tawait Promise.race([new Promise((resolve) => setTimeout(resolve, 2_000)), abortPromise]);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync signAndExecuteTransaction<Include extends HaneulClientTypes.TransactionInclude = {}>({\n\t\ttransaction,\n\t\tsigner,\n\t\tadditionalSignatures = [],\n\t\t...input\n\t}: HaneulClientTypes.SignAndExecuteTransactionOptions<Include>): Promise<\n\t\tHaneulClientTypes.TransactionResult<Include>\n\t> {\n\t\tlet transactionBytes;\n\n\t\tif (transaction instanceof Uint8Array) {\n\t\t\ttransactionBytes = transaction;\n\t\t} else {\n\t\t\ttransaction.setSenderIfNotSet(signer.toSuiAddress());\n\t\t\ttransactionBytes = await transaction.build({ client: this });\n\t\t}\n\n\t\tconst { signature } = await signer.signTransaction(transactionBytes);\n\n\t\treturn this.executeTransaction({\n\t\t\ttransaction: transactionBytes,\n\t\t\tsignatures: [signature, ...additionalSignatures],\n\t\t\t...input,\n\t\t});\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core.mjs","names":["bcs"],"sources":["../../src/client/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { TypeTagSerializer } from '../bcs/type-tag-serializer.js';\nimport type { TransactionPlugin } from '../transactions/index.js';\nimport { deriveDynamicFieldID } from '../utils/dynamic-fields.js';\nimport { normalizeStructTag, parseStructTag, HANEUL_ADDRESS_LENGTH } from '../utils/haneul-types.js';\nimport { BaseClient } from './client.js';\nimport type { ClientWithExtensions, HaneulClientTypes } from './types.js';\nimport { MvrClient } from './mvr.js';\nimport { bcs } from '../bcs/index.js';\n\nexport type ClientWithCoreApi = ClientWithExtensions<{\n\tcore: CoreClient;\n}>;\n\nexport interface CoreClientOptions extends HaneulClientTypes.HaneulClientOptions {\n\tbase: BaseClient;\n\tmvr?: HaneulClientTypes.MvrOptions;\n}\n\nconst DEFAULT_MVR_URLS: Record<string, string> = {\n\tmainnet: 'https://mainnet.mvr.haneul-labs.com',\n\ttestnet: 'https://testnet.mvr.haneul-labs.com',\n};\n\nexport abstract class CoreClient extends BaseClient implements HaneulClientTypes.TransportMethods {\n\tcore = this;\n\tmvr: HaneulClientTypes.MvrMethods;\n\n\tconstructor(options: CoreClientOptions) {\n\t\tsuper(options);\n\n\t\tthis.mvr = new MvrClient({\n\t\t\tcache: this.cache.scope('core.mvr'),\n\t\t\turl: options.mvr?.url ?? DEFAULT_MVR_URLS[this.network],\n\t\t\tpageSize: options.mvr?.pageSize,\n\t\t\toverrides: options.mvr?.overrides,\n\t\t});\n\t}\n\n\tabstract getObjects<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.GetObjectsOptions<Include>,\n\t): Promise<HaneulClientTypes.GetObjectsResponse<Include>>;\n\n\tasync getObject<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.GetObjectOptions<Include>,\n\t): Promise<HaneulClientTypes.GetObjectResponse<Include>> {\n\t\tconst { objectId } = options;\n\t\tconst {\n\t\t\tobjects: [result],\n\t\t} = await this.getObjects({\n\t\t\tobjectIds: [objectId],\n\t\t\tsignal: options.signal,\n\t\t\tinclude: options.include,\n\t\t});\n\t\tif (result instanceof Error) {\n\t\t\tthrow result;\n\t\t}\n\t\treturn { object: result };\n\t}\n\n\tabstract listCoins(\n\t\toptions: HaneulClientTypes.ListCoinsOptions,\n\t): Promise<HaneulClientTypes.ListCoinsResponse>;\n\n\tabstract listOwnedObjects<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.ListOwnedObjectsOptions<Include>,\n\t): Promise<HaneulClientTypes.ListOwnedObjectsResponse<Include>>;\n\n\tabstract getBalance(\n\t\toptions: HaneulClientTypes.GetBalanceOptions,\n\t): Promise<HaneulClientTypes.GetBalanceResponse>;\n\n\tabstract listBalances(\n\t\toptions: HaneulClientTypes.ListBalancesOptions,\n\t): Promise<HaneulClientTypes.ListBalancesResponse>;\n\n\tabstract getCoinMetadata(\n\t\toptions: HaneulClientTypes.GetCoinMetadataOptions,\n\t): Promise<HaneulClientTypes.GetCoinMetadataResponse>;\n\n\tabstract getTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(\n\t\toptions: HaneulClientTypes.GetTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.TransactionResult<Include>>;\n\n\tabstract executeTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(\n\t\toptions: HaneulClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.TransactionResult<Include>>;\n\n\tabstract simulateTransaction<Include extends HaneulClientTypes.SimulateTransactionInclude = object>(\n\t\toptions: HaneulClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.SimulateTransactionResult<Include>>;\n\n\tabstract getReferenceGasPrice(\n\t\toptions?: HaneulClientTypes.GetReferenceGasPriceOptions,\n\t): Promise<HaneulClientTypes.GetReferenceGasPriceResponse>;\n\n\tabstract getCurrentSystemState(\n\t\toptions?: HaneulClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<HaneulClientTypes.GetCurrentSystemStateResponse>;\n\n\tabstract getChainIdentifier(\n\t\toptions?: HaneulClientTypes.GetChainIdentifierOptions,\n\t): Promise<HaneulClientTypes.GetChainIdentifierResponse>;\n\n\tabstract listDynamicFields(\n\t\toptions: HaneulClientTypes.ListDynamicFieldsOptions,\n\t): Promise<HaneulClientTypes.ListDynamicFieldsResponse>;\n\n\tabstract resolveTransactionPlugin(): TransactionPlugin;\n\n\tabstract verifyZkLoginSignature(\n\t\toptions: HaneulClientTypes.VerifyZkLoginSignatureOptions,\n\t): Promise<HaneulClientTypes.ZkLoginVerifyResponse>;\n\n\tabstract getMoveFunction(\n\t\toptions: HaneulClientTypes.GetMoveFunctionOptions,\n\t): Promise<HaneulClientTypes.GetMoveFunctionResponse>;\n\n\tabstract defaultNameServiceName(\n\t\toptions: HaneulClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<HaneulClientTypes.DefaultNameServiceNameResponse>;\n\n\tasync getDynamicField(\n\t\toptions: HaneulClientTypes.GetDynamicFieldOptions,\n\t): Promise<HaneulClientTypes.GetDynamicFieldResponse> {\n\t\tconst normalizedNameType = TypeTagSerializer.parseFromStr(\n\t\t\t(\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: options.name.type,\n\t\t\t\t})\n\t\t\t).type,\n\t\t);\n\t\tconst fieldId = deriveDynamicFieldID(options.parentId, normalizedNameType, options.name.bcs);\n\t\tconst {\n\t\t\tobjects: [fieldObject],\n\t\t} = await this.getObjects({\n\t\t\tobjectIds: [fieldId],\n\t\t\tsignal: options.signal,\n\t\t\tinclude: {\n\t\t\t\tpreviousTransaction: true,\n\t\t\t\tcontent: true,\n\t\t\t},\n\t\t});\n\n\t\tif (fieldObject instanceof Error) {\n\t\t\tthrow fieldObject;\n\t\t}\n\n\t\tconst fieldType = parseStructTag(fieldObject.type);\n\t\tconst content = await fieldObject.content;\n\n\t\treturn {\n\t\t\tdynamicField: {\n\t\t\t\tfieldId: fieldObject.objectId,\n\t\t\t\tdigest: fieldObject.digest,\n\t\t\t\tversion: fieldObject.version,\n\t\t\t\ttype: fieldObject.type,\n\t\t\t\tpreviousTransaction: fieldObject.previousTransaction,\n\t\t\t\tname: {\n\t\t\t\t\ttype:\n\t\t\t\t\t\ttypeof fieldType.typeParams[0] === 'string'\n\t\t\t\t\t\t\t? fieldType.typeParams[0]\n\t\t\t\t\t\t\t: normalizeStructTag(fieldType.typeParams[0]),\n\t\t\t\t\tbcs: options.name.bcs,\n\t\t\t\t},\n\t\t\t\tvalue: {\n\t\t\t\t\ttype:\n\t\t\t\t\t\ttypeof fieldType.typeParams[1] === 'string'\n\t\t\t\t\t\t\t? fieldType.typeParams[1]\n\t\t\t\t\t\t\t: normalizeStructTag(fieldType.typeParams[1]),\n\t\t\t\t\tbcs: content.slice(HANEUL_ADDRESS_LENGTH + options.name.bcs.length),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getDynamicObjectField<Include extends HaneulClientTypes.ObjectInclude = object>(\n\t\toptions: HaneulClientTypes.GetDynamicObjectFieldOptions<Include>,\n\t): Promise<HaneulClientTypes.GetDynamicObjectFieldResponse<Include>> {\n\t\tconst resolvedNameType = (\n\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\ttype: options.name.type,\n\t\t\t})\n\t\t).type;\n\t\tconst wrappedType = `0x2::dynamic_object_field::Wrapper<${resolvedNameType}>`;\n\n\t\tconst { dynamicField } = await this.getDynamicField({\n\t\t\tparentId: options.parentId,\n\t\t\tname: {\n\t\t\t\ttype: wrappedType,\n\t\t\t\tbcs: options.name.bcs,\n\t\t\t},\n\t\t\tsignal: options.signal,\n\t\t});\n\n\t\tconst { object } = await this.getObject({\n\t\t\tobjectId: bcs.Address.parse(dynamicField.value.bcs),\n\t\t\tsignal: options.signal,\n\t\t\tinclude: options.include,\n\t\t});\n\n\t\treturn { object };\n\t}\n\n\tasync waitForTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(\n\t\toptions: HaneulClientTypes.WaitForTransactionOptions<Include>,\n\t): Promise<HaneulClientTypes.TransactionResult<Include>> {\n\t\tconst { signal, timeout = 60 * 1000, include } = options;\n\n\t\tconst digest =\n\t\t\t'result' in options && options.result\n\t\t\t\t? (options.result.Transaction ?? options.result.FailedTransaction)!.digest\n\t\t\t\t: options.digest;\n\n\t\tconst abortSignal = signal\n\t\t\t? AbortSignal.any([AbortSignal.timeout(timeout), signal])\n\t\t\t: AbortSignal.timeout(timeout);\n\n\t\tconst abortPromise = new Promise((_, reject) => {\n\t\t\tabortSignal.addEventListener('abort', () => reject(abortSignal.reason));\n\t\t});\n\n\t\tabortPromise.catch(() => {\n\t\t\t// Swallow unhandled rejections that might be thrown after early return\n\t\t});\n\n\t\twhile (true) {\n\t\t\tabortSignal.throwIfAborted();\n\t\t\ttry {\n\t\t\t\treturn await this.getTransaction({\n\t\t\t\t\tdigest,\n\t\t\t\t\tinclude,\n\t\t\t\t\tsignal: abortSignal,\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\tawait Promise.race([new Promise((resolve) => setTimeout(resolve, 2_000)), abortPromise]);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync signAndExecuteTransaction<Include extends HaneulClientTypes.TransactionInclude = {}>({\n\t\ttransaction,\n\t\tsigner,\n\t\tadditionalSignatures = [],\n\t\t...input\n\t}: HaneulClientTypes.SignAndExecuteTransactionOptions<Include>): Promise<\n\t\tHaneulClientTypes.TransactionResult<Include>\n\t> {\n\t\tlet transactionBytes;\n\n\t\tif (transaction instanceof Uint8Array) {\n\t\t\ttransactionBytes = transaction;\n\t\t} else {\n\t\t\ttransaction.setSenderIfNotSet(signer.toHaneulAddress());\n\t\t\ttransactionBytes = await transaction.build({ client: this });\n\t\t}\n\n\t\tconst { signature } = await signer.signTransaction(transactionBytes);\n\n\t\treturn this.executeTransaction({\n\t\t\ttransaction: transactionBytes,\n\t\t\tsignatures: [signature, ...additionalSignatures],\n\t\t\t...input,\n\t\t});\n\t}\n}\n"],"mappings":"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"}
@@ -50,7 +50,7 @@ declare abstract class Signer {
50
50
  transaction: true;
51
51
  effects: true;
52
52
  }>>;
53
- toSuiAddress(): string;
53
+ toHaneulAddress(): string;
54
54
  /**
55
55
  * Get the key scheme of the keypair: Secp256k1 or ED25519
56
56
  */
@@ -45,7 +45,7 @@ var Signer = class {
45
45
  };
46
46
  }
47
47
  async signAndExecuteTransaction({ transaction, client }) {
48
- transaction.setSenderIfNotSet(this.toSuiAddress());
48
+ transaction.setSenderIfNotSet(this.toHaneulAddress());
49
49
  const bytes = await transaction.build({ client });
50
50
  const { signature } = await this.signTransaction(bytes);
51
51
  return client.core.executeTransaction({
@@ -57,8 +57,8 @@ var Signer = class {
57
57
  }
58
58
  });
59
59
  }
60
- toSuiAddress() {
61
- return this.getPublicKey().toSuiAddress();
60
+ toHaneulAddress() {
61
+ return this.getPublicKey().toHaneulAddress();
62
62
  }
63
63
  };
64
64
  var Keypair = class extends Signer {};
@@ -1 +1 @@
1
- {"version":3,"file":"keypair.mjs","names":[],"sources":["../../src/cryptography/keypair.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs, toBase64 } from '@haneullabs/bcs';\nimport { blake2b } from '@noble/hashes/blake2.js';\nimport { bech32 } from '@scure/base';\n\nimport type { IntentScope } from './intent.js';\nimport { messageWithIntent } from './intent.js';\nimport type { PublicKey } from './publickey.js';\nimport { SIGNATURE_FLAG_TO_SCHEME, SIGNATURE_SCHEME_TO_FLAG } from './signature-scheme.js';\nimport type { SignatureScheme } from './signature-scheme.js';\nimport { toSerializedSignature } from './signature.js';\nimport type { Transaction } from '../transactions/Transaction.js';\nimport type { ClientWithCoreApi, HaneulClientTypes } from '../client/index.js';\n\nexport const PRIVATE_KEY_SIZE = 32;\nexport const LEGACY_PRIVATE_KEY_SIZE = 64;\nexport const HANEUL_PRIVATE_KEY_PREFIX = 'haneulprivkey';\n\nexport type ParsedKeypair = {\n\tscheme: SignatureScheme;\n\tsecretKey: Uint8Array;\n};\n\nexport interface SignatureWithBytes {\n\tbytes: string;\n\tsignature: string;\n}\n\nexport interface SignAndExecuteOptions {\n\ttransaction: Transaction;\n\tclient: ClientWithCoreApi;\n}\n\n/**\n * TODO: Document\n */\nexport abstract class Signer {\n\tabstract sign(bytes: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;\n\t/**\n\t * Sign messages with a specific intent. By combining the message bytes with the intent before hashing and signing,\n\t * it ensures that a signed message is tied to a specific purpose and domain separator is provided\n\t */\n\tasync signWithIntent(bytes: Uint8Array, intent: IntentScope): Promise<SignatureWithBytes> {\n\t\tconst intentMessage = messageWithIntent(intent, bytes);\n\t\tconst digest = blake2b(intentMessage, { dkLen: 32 });\n\n\t\tconst signature = toSerializedSignature({\n\t\t\tsignature: await this.sign(digest),\n\t\t\tsignatureScheme: this.getKeyScheme(),\n\t\t\tpublicKey: this.getPublicKey(),\n\t\t});\n\n\t\treturn {\n\t\t\tsignature,\n\t\t\tbytes: toBase64(bytes),\n\t\t};\n\t}\n\t/**\n\t * Signs provided transaction by calling `signWithIntent()` with a `TransactionData` provided as intent scope\n\t */\n\tasync signTransaction(bytes: Uint8Array) {\n\t\treturn this.signWithIntent(bytes, 'TransactionData');\n\t}\n\t/**\n\t * Signs provided personal message by calling `signWithIntent()` with a `PersonalMessage` provided as intent scope\n\t */\n\tasync signPersonalMessage(bytes: Uint8Array) {\n\t\tconst { signature } = await this.signWithIntent(\n\t\t\tbcs.byteVector().serialize(bytes).toBytes(),\n\t\t\t'PersonalMessage',\n\t\t);\n\n\t\treturn {\n\t\t\tbytes: toBase64(bytes),\n\t\t\tsignature,\n\t\t};\n\t}\n\n\tasync signAndExecuteTransaction({\n\t\ttransaction,\n\t\tclient,\n\t}: SignAndExecuteOptions): Promise<\n\t\tHaneulClientTypes.TransactionResult<{ transaction: true; effects: true }>\n\t> {\n\t\ttransaction.setSenderIfNotSet(this.toSuiAddress());\n\t\tconst bytes = await transaction.build({ client });\n\t\tconst { signature } = await this.signTransaction(bytes);\n\n\t\treturn client.core.executeTransaction({\n\t\t\ttransaction: bytes,\n\t\t\tsignatures: [signature],\n\t\t\tinclude: { transaction: true, effects: true },\n\t\t});\n\t}\n\n\ttoSuiAddress(): string {\n\t\treturn this.getPublicKey().toSuiAddress();\n\t}\n\n\t/**\n\t * Get the key scheme of the keypair: Secp256k1 or ED25519\n\t */\n\tabstract getKeyScheme(): SignatureScheme;\n\n\t/**\n\t * The public key for this keypair\n\t */\n\tabstract getPublicKey(): PublicKey;\n}\n\nexport abstract class Keypair extends Signer {\n\t/**\n\t * This returns the Bech32 secret key string for this keypair.\n\t */\n\tabstract getSecretKey(): string;\n}\n\n/**\n * This returns an ParsedKeypair object based by validating the\n * 33-byte Bech32 encoded string starting with `haneulprivkey`, and\n * parse out the signature scheme and the private key in bytes.\n */\nexport function decodeSuiPrivateKey(value: string): ParsedKeypair {\n\tconst { prefix, words } = bech32.decode(value as `${string}1${string}`);\n\tif (prefix !== HANEUL_PRIVATE_KEY_PREFIX) {\n\t\tthrow new Error('invalid private key prefix');\n\t}\n\tconst extendedSecretKey = new Uint8Array(bech32.fromWords(words));\n\tconst secretKey = extendedSecretKey.slice(1);\n\tconst signatureScheme =\n\t\tSIGNATURE_FLAG_TO_SCHEME[extendedSecretKey[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME];\n\n\treturn {\n\t\tscheme: signatureScheme,\n\t\tsecretKey: secretKey,\n\t};\n}\n\n/**\n * This returns a Bech32 encoded string starting with `haneulprivkey`,\n * encoding 33-byte `flag || bytes` for the given the 32-byte private\n * key and its signature scheme.\n */\nexport function encodeSuiPrivateKey(bytes: Uint8Array, scheme: SignatureScheme): string {\n\tif (bytes.length !== PRIVATE_KEY_SIZE) {\n\t\tthrow new Error('Invalid bytes length');\n\t}\n\tconst flag = SIGNATURE_SCHEME_TO_FLAG[scheme];\n\tconst privKeyBytes = new Uint8Array(bytes.length + 1);\n\tprivKeyBytes.set([flag]);\n\tprivKeyBytes.set(bytes, 1);\n\treturn bech32.encode(HANEUL_PRIVATE_KEY_PREFIX, bech32.toWords(privKeyBytes));\n}\n"],"mappings":";;;;;;;;AAgBA,MAAa,mBAAmB;AAChC,MAAa,0BAA0B;AACvC,MAAa,4BAA4B;;;;AAoBzC,IAAsB,SAAtB,MAA6B;;;;;CAM5B,MAAM,eAAe,OAAmB,QAAkD;EAEzF,MAAM,SAAS,QADO,kBAAkB,QAAQ,MAAM,EAChB,EAAE,OAAO,IAAI,CAAC;AAQpD,SAAO;GACN,WAPiB,sBAAsB;IACvC,WAAW,MAAM,KAAK,KAAK,OAAO;IAClC,iBAAiB,KAAK,cAAc;IACpC,WAAW,KAAK,cAAc;IAC9B,CAAC;GAID,OAAO,SAAS,MAAM;GACtB;;;;;CAKF,MAAM,gBAAgB,OAAmB;AACxC,SAAO,KAAK,eAAe,OAAO,kBAAkB;;;;;CAKrD,MAAM,oBAAoB,OAAmB;EAC5C,MAAM,EAAE,cAAc,MAAM,KAAK,eAChC,IAAI,YAAY,CAAC,UAAU,MAAM,CAAC,SAAS,EAC3C,kBACA;AAED,SAAO;GACN,OAAO,SAAS,MAAM;GACtB;GACA;;CAGF,MAAM,0BAA0B,EAC/B,aACA,UAGC;AACD,cAAY,kBAAkB,KAAK,cAAc,CAAC;EAClD,MAAM,QAAQ,MAAM,YAAY,MAAM,EAAE,QAAQ,CAAC;EACjD,MAAM,EAAE,cAAc,MAAM,KAAK,gBAAgB,MAAM;AAEvD,SAAO,OAAO,KAAK,mBAAmB;GACrC,aAAa;GACb,YAAY,CAAC,UAAU;GACvB,SAAS;IAAE,aAAa;IAAM,SAAS;IAAM;GAC7C,CAAC;;CAGH,eAAuB;AACtB,SAAO,KAAK,cAAc,CAAC,cAAc;;;AAc3C,IAAsB,UAAtB,cAAsC,OAAO;;;;;;AAY7C,SAAgB,oBAAoB,OAA8B;CACjE,MAAM,EAAE,QAAQ,UAAU,OAAO,OAAO,MAA+B;AACvE,KAAI,WAAW,0BACd,OAAM,IAAI,MAAM,6BAA6B;CAE9C,MAAM,oBAAoB,IAAI,WAAW,OAAO,UAAU,MAAM,CAAC;CACjE,MAAM,YAAY,kBAAkB,MAAM,EAAE;AAI5C,QAAO;EACN,QAHA,yBAAyB,kBAAkB;EAIhC;EACX;;;;;;;AAQF,SAAgB,oBAAoB,OAAmB,QAAiC;AACvF,KAAI,MAAM,WAAW,iBACpB,OAAM,IAAI,MAAM,uBAAuB;CAExC,MAAM,OAAO,yBAAyB;CACtC,MAAM,eAAe,IAAI,WAAW,MAAM,SAAS,EAAE;AACrD,cAAa,IAAI,CAAC,KAAK,CAAC;AACxB,cAAa,IAAI,OAAO,EAAE;AAC1B,QAAO,OAAO,OAAO,2BAA2B,OAAO,QAAQ,aAAa,CAAC"}
1
+ {"version":3,"file":"keypair.mjs","names":[],"sources":["../../src/cryptography/keypair.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs, toBase64 } from '@haneullabs/bcs';\nimport { blake2b } from '@noble/hashes/blake2.js';\nimport { bech32 } from '@scure/base';\n\nimport type { IntentScope } from './intent.js';\nimport { messageWithIntent } from './intent.js';\nimport type { PublicKey } from './publickey.js';\nimport { SIGNATURE_FLAG_TO_SCHEME, SIGNATURE_SCHEME_TO_FLAG } from './signature-scheme.js';\nimport type { SignatureScheme } from './signature-scheme.js';\nimport { toSerializedSignature } from './signature.js';\nimport type { Transaction } from '../transactions/Transaction.js';\nimport type { ClientWithCoreApi, HaneulClientTypes } from '../client/index.js';\n\nexport const PRIVATE_KEY_SIZE = 32;\nexport const LEGACY_PRIVATE_KEY_SIZE = 64;\nexport const HANEUL_PRIVATE_KEY_PREFIX = 'haneulprivkey';\n\nexport type ParsedKeypair = {\n\tscheme: SignatureScheme;\n\tsecretKey: Uint8Array;\n};\n\nexport interface SignatureWithBytes {\n\tbytes: string;\n\tsignature: string;\n}\n\nexport interface SignAndExecuteOptions {\n\ttransaction: Transaction;\n\tclient: ClientWithCoreApi;\n}\n\n/**\n * TODO: Document\n */\nexport abstract class Signer {\n\tabstract sign(bytes: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;\n\t/**\n\t * Sign messages with a specific intent. By combining the message bytes with the intent before hashing and signing,\n\t * it ensures that a signed message is tied to a specific purpose and domain separator is provided\n\t */\n\tasync signWithIntent(bytes: Uint8Array, intent: IntentScope): Promise<SignatureWithBytes> {\n\t\tconst intentMessage = messageWithIntent(intent, bytes);\n\t\tconst digest = blake2b(intentMessage, { dkLen: 32 });\n\n\t\tconst signature = toSerializedSignature({\n\t\t\tsignature: await this.sign(digest),\n\t\t\tsignatureScheme: this.getKeyScheme(),\n\t\t\tpublicKey: this.getPublicKey(),\n\t\t});\n\n\t\treturn {\n\t\t\tsignature,\n\t\t\tbytes: toBase64(bytes),\n\t\t};\n\t}\n\t/**\n\t * Signs provided transaction by calling `signWithIntent()` with a `TransactionData` provided as intent scope\n\t */\n\tasync signTransaction(bytes: Uint8Array) {\n\t\treturn this.signWithIntent(bytes, 'TransactionData');\n\t}\n\t/**\n\t * Signs provided personal message by calling `signWithIntent()` with a `PersonalMessage` provided as intent scope\n\t */\n\tasync signPersonalMessage(bytes: Uint8Array) {\n\t\tconst { signature } = await this.signWithIntent(\n\t\t\tbcs.byteVector().serialize(bytes).toBytes(),\n\t\t\t'PersonalMessage',\n\t\t);\n\n\t\treturn {\n\t\t\tbytes: toBase64(bytes),\n\t\t\tsignature,\n\t\t};\n\t}\n\n\tasync signAndExecuteTransaction({\n\t\ttransaction,\n\t\tclient,\n\t}: SignAndExecuteOptions): Promise<\n\t\tHaneulClientTypes.TransactionResult<{ transaction: true; effects: true }>\n\t> {\n\t\ttransaction.setSenderIfNotSet(this.toHaneulAddress());\n\t\tconst bytes = await transaction.build({ client });\n\t\tconst { signature } = await this.signTransaction(bytes);\n\n\t\treturn client.core.executeTransaction({\n\t\t\ttransaction: bytes,\n\t\t\tsignatures: [signature],\n\t\t\tinclude: { transaction: true, effects: true },\n\t\t});\n\t}\n\n\ttoHaneulAddress(): string {\n\t\treturn this.getPublicKey().toHaneulAddress();\n\t}\n\n\t/**\n\t * Get the key scheme of the keypair: Secp256k1 or ED25519\n\t */\n\tabstract getKeyScheme(): SignatureScheme;\n\n\t/**\n\t * The public key for this keypair\n\t */\n\tabstract getPublicKey(): PublicKey;\n}\n\nexport abstract class Keypair extends Signer {\n\t/**\n\t * This returns the Bech32 secret key string for this keypair.\n\t */\n\tabstract getSecretKey(): string;\n}\n\n/**\n * This returns an ParsedKeypair object based by validating the\n * 33-byte Bech32 encoded string starting with `haneulprivkey`, and\n * parse out the signature scheme and the private key in bytes.\n */\nexport function decodeSuiPrivateKey(value: string): ParsedKeypair {\n\tconst { prefix, words } = bech32.decode(value as `${string}1${string}`);\n\tif (prefix !== HANEUL_PRIVATE_KEY_PREFIX) {\n\t\tthrow new Error('invalid private key prefix');\n\t}\n\tconst extendedSecretKey = new Uint8Array(bech32.fromWords(words));\n\tconst secretKey = extendedSecretKey.slice(1);\n\tconst signatureScheme =\n\t\tSIGNATURE_FLAG_TO_SCHEME[extendedSecretKey[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME];\n\n\treturn {\n\t\tscheme: signatureScheme,\n\t\tsecretKey: secretKey,\n\t};\n}\n\n/**\n * This returns a Bech32 encoded string starting with `haneulprivkey`,\n * encoding 33-byte `flag || bytes` for the given the 32-byte private\n * key and its signature scheme.\n */\nexport function encodeSuiPrivateKey(bytes: Uint8Array, scheme: SignatureScheme): string {\n\tif (bytes.length !== PRIVATE_KEY_SIZE) {\n\t\tthrow new Error('Invalid bytes length');\n\t}\n\tconst flag = SIGNATURE_SCHEME_TO_FLAG[scheme];\n\tconst privKeyBytes = new Uint8Array(bytes.length + 1);\n\tprivKeyBytes.set([flag]);\n\tprivKeyBytes.set(bytes, 1);\n\treturn bech32.encode(HANEUL_PRIVATE_KEY_PREFIX, bech32.toWords(privKeyBytes));\n}\n"],"mappings":";;;;;;;;AAgBA,MAAa,mBAAmB;AAChC,MAAa,0BAA0B;AACvC,MAAa,4BAA4B;;;;AAoBzC,IAAsB,SAAtB,MAA6B;;;;;CAM5B,MAAM,eAAe,OAAmB,QAAkD;EAEzF,MAAM,SAAS,QADO,kBAAkB,QAAQ,MAAM,EAChB,EAAE,OAAO,IAAI,CAAC;AAQpD,SAAO;GACN,WAPiB,sBAAsB;IACvC,WAAW,MAAM,KAAK,KAAK,OAAO;IAClC,iBAAiB,KAAK,cAAc;IACpC,WAAW,KAAK,cAAc;IAC9B,CAAC;GAID,OAAO,SAAS,MAAM;GACtB;;;;;CAKF,MAAM,gBAAgB,OAAmB;AACxC,SAAO,KAAK,eAAe,OAAO,kBAAkB;;;;;CAKrD,MAAM,oBAAoB,OAAmB;EAC5C,MAAM,EAAE,cAAc,MAAM,KAAK,eAChC,IAAI,YAAY,CAAC,UAAU,MAAM,CAAC,SAAS,EAC3C,kBACA;AAED,SAAO;GACN,OAAO,SAAS,MAAM;GACtB;GACA;;CAGF,MAAM,0BAA0B,EAC/B,aACA,UAGC;AACD,cAAY,kBAAkB,KAAK,iBAAiB,CAAC;EACrD,MAAM,QAAQ,MAAM,YAAY,MAAM,EAAE,QAAQ,CAAC;EACjD,MAAM,EAAE,cAAc,MAAM,KAAK,gBAAgB,MAAM;AAEvD,SAAO,OAAO,KAAK,mBAAmB;GACrC,aAAa;GACb,YAAY,CAAC,UAAU;GACvB,SAAS;IAAE,aAAa;IAAM,SAAS;IAAM;GAC7C,CAAC;;CAGH,kBAA0B;AACzB,SAAO,KAAK,cAAc,CAAC,iBAAiB;;;AAc9C,IAAsB,UAAtB,cAAsC,OAAO;;;;;;AAY7C,SAAgB,oBAAoB,OAA8B;CACjE,MAAM,EAAE,QAAQ,UAAU,OAAO,OAAO,MAA+B;AACvE,KAAI,WAAW,0BACd,OAAM,IAAI,MAAM,6BAA6B;CAE9C,MAAM,oBAAoB,IAAI,WAAW,OAAO,UAAU,MAAM,CAAC;CACjE,MAAM,YAAY,kBAAkB,MAAM,EAAE;AAI5C,QAAO;EACN,QAHA,yBAAyB,kBAAkB;EAIhC;EACX;;;;;;;AAQF,SAAgB,oBAAoB,OAAmB,QAAiC;AACvF,KAAI,MAAM,WAAW,iBACpB,OAAM,IAAI,MAAM,uBAAuB;CAExC,MAAM,OAAO,yBAAyB;CACtC,MAAM,eAAe,IAAI,WAAW,MAAM,SAAS,EAAE;AACrD,cAAa,IAAI,CAAC,KAAK,CAAC;AACxB,cAAa,IAAI,OAAO,EAAE;AAC1B,QAAO,OAAO,OAAO,2BAA2B,OAAO,QAAQ,aAAa,CAAC"}
@@ -46,7 +46,7 @@ declare abstract class PublicKey {
46
46
  /**
47
47
  * Return the Haneul address associated with this Ed25519 public key
48
48
  */
49
- toSuiAddress(): string;
49
+ toHaneulAddress(): string;
50
50
  /**
51
51
  * Return the byte array representation of the public key
52
52
  */
@@ -60,7 +60,7 @@ var PublicKey = class {
60
60
  * Verifies that the public key is associated with the provided address
61
61
  */
62
62
  verifyAddress(address) {
63
- return this.toSuiAddress() === address;
63
+ return this.toHaneulAddress() === address;
64
64
  }
65
65
  /**
66
66
  * Returns the bytes representation of the public key
@@ -76,7 +76,7 @@ var PublicKey = class {
76
76
  /**
77
77
  * Return the Haneul address associated with this Ed25519 public key
78
78
  */
79
- toSuiAddress() {
79
+ toHaneulAddress() {
80
80
  return normalizeHaneulAddress(bytesToHex(blake2b(this.toSuiBytes(), { dkLen: 32 })).slice(0, HANEUL_ADDRESS_LENGTH * 2));
81
81
  }
82
82
  };
@@ -1 +1 @@
1
- {"version":3,"file":"publickey.mjs","names":["bcs"],"sources":["../../src/cryptography/publickey.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64, toBase64 } from '@haneullabs/bcs';\nimport { blake2b } from '@noble/hashes/blake2.js';\nimport { bytesToHex } from '@noble/hashes/utils.js';\n\nimport { bcs } from '../bcs/index.js';\nimport { normalizeHaneulAddress, HANEUL_ADDRESS_LENGTH } from '../utils/haneul-types.js';\nimport type { IntentScope } from './intent.js';\nimport { messageWithIntent } from './intent.js';\nimport { SIGNATURE_FLAG_TO_SCHEME, SIGNATURE_SCHEME_TO_SIZE } from './signature-scheme.js';\n\n/**\n * Value to be converted into public key.\n */\nexport type PublicKeyInitData = string | Uint8Array | Iterable<number>;\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array) {\n\tif (a === b) return true;\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n * A public key\n */\nexport abstract class PublicKey {\n\t/**\n\t * Checks if two public keys are equal\n\t */\n\tequals(publicKey: PublicKey) {\n\t\treturn bytesEqual(this.toRawBytes(), publicKey.toRawBytes());\n\t}\n\n\t/**\n\t * Return the base-64 representation of the public key\n\t */\n\ttoBase64() {\n\t\treturn toBase64(this.toRawBytes());\n\t}\n\n\ttoString(): never {\n\t\tthrow new Error(\n\t\t\t'`toString` is not implemented on public keys. Use `toBase64()` or `toRawBytes()` instead.',\n\t\t);\n\t}\n\n\t/**\n\t * Return the Haneul representation of the public key encoded in\n\t * base-64. A Haneul public key is formed by the concatenation\n\t * of the scheme flag with the raw bytes of the public key\n\t */\n\ttoSuiPublicKey(): string {\n\t\tconst bytes = this.toSuiBytes();\n\t\treturn toBase64(bytes);\n\t}\n\n\tverifyWithIntent(\n\t\tbytes: Uint8Array,\n\t\tsignature: Uint8Array | string,\n\t\tintent: IntentScope,\n\t): Promise<boolean> {\n\t\tconst intentMessage = messageWithIntent(intent, bytes);\n\t\tconst digest = blake2b(intentMessage, { dkLen: 32 });\n\n\t\treturn this.verify(digest, signature);\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided PersonalMessage\n\t */\n\tverifyPersonalMessage(message: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\treturn this.verifyWithIntent(\n\t\t\tbcs.byteVector().serialize(message).toBytes(),\n\t\t\tsignature,\n\t\t\t'PersonalMessage',\n\t\t);\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided Transaction\n\t */\n\tverifyTransaction(transaction: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\treturn this.verifyWithIntent(transaction, signature, 'TransactionData');\n\t}\n\n\t/**\n\t * Verifies that the public key is associated with the provided address\n\t */\n\tverifyAddress(address: string): boolean {\n\t\treturn this.toSuiAddress() === address;\n\t}\n\n\t/**\n\t * Returns the bytes representation of the public key\n\t * prefixed with the signature scheme flag\n\t */\n\ttoSuiBytes(): Uint8Array<ArrayBuffer> {\n\t\tconst rawBytes = this.toRawBytes();\n\t\tconst suiBytes = new Uint8Array(rawBytes.length + 1);\n\t\tsuiBytes.set([this.flag()]);\n\t\tsuiBytes.set(rawBytes, 1);\n\n\t\treturn suiBytes;\n\t}\n\n\t/**\n\t * Return the Haneul address associated with this Ed25519 public key\n\t */\n\ttoSuiAddress(): string {\n\t\t// Each hex char represents half a byte, hence hex address doubles the length\n\t\treturn normalizeHaneulAddress(\n\t\t\tbytesToHex(blake2b(this.toSuiBytes(), { dkLen: 32 })).slice(0, HANEUL_ADDRESS_LENGTH * 2),\n\t\t);\n\t}\n\n\t/**\n\t * Return the byte array representation of the public key\n\t */\n\tabstract toRawBytes(): Uint8Array<ArrayBuffer>;\n\n\t/**\n\t * Return signature scheme flag of the public key\n\t */\n\tabstract flag(): number;\n\n\t/**\n\t * Verifies that the signature is valid for for the provided message\n\t */\n\tabstract verify(data: Uint8Array, signature: Uint8Array | string): Promise<boolean>;\n}\n\nexport function parseSerializedKeypairSignature(serializedSignature: string) {\n\tconst bytes = fromBase64(serializedSignature);\n\n\tconst signatureScheme =\n\t\tSIGNATURE_FLAG_TO_SCHEME[bytes[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME];\n\n\tswitch (signatureScheme) {\n\t\tcase 'ED25519':\n\t\tcase 'Secp256k1':\n\t\tcase 'Secp256r1':\n\t\t\tconst size =\n\t\t\t\tSIGNATURE_SCHEME_TO_SIZE[signatureScheme as keyof typeof SIGNATURE_SCHEME_TO_SIZE];\n\t\t\tconst signature = bytes.slice(1, bytes.length - size);\n\t\t\tconst publicKey = bytes.slice(1 + signature.length);\n\n\t\t\treturn {\n\t\t\t\tserializedSignature,\n\t\t\t\tsignatureScheme,\n\t\t\t\tsignature,\n\t\t\t\tpublicKey,\n\t\t\t\tbytes,\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error('Unsupported signature scheme');\n\t}\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAgB,WAAW,GAAe,GAAe;AACxD,KAAI,MAAM,EAAG,QAAO;AAEpB,KAAI,EAAE,WAAW,EAAE,OAClB,QAAO;AAGR,MAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAC7B,KAAI,EAAE,OAAO,EAAE,GACd,QAAO;AAGT,QAAO;;;;;AAMR,IAAsB,YAAtB,MAAgC;;;;CAI/B,OAAO,WAAsB;AAC5B,SAAO,WAAW,KAAK,YAAY,EAAE,UAAU,YAAY,CAAC;;;;;CAM7D,WAAW;AACV,SAAO,SAAS,KAAK,YAAY,CAAC;;CAGnC,WAAkB;AACjB,QAAM,IAAI,MACT,4FACA;;;;;;;CAQF,iBAAyB;AAExB,SAAO,SADO,KAAK,YAAY,CACT;;CAGvB,iBACC,OACA,WACA,QACmB;EAEnB,MAAM,SAAS,QADO,kBAAkB,QAAQ,MAAM,EAChB,EAAE,OAAO,IAAI,CAAC;AAEpD,SAAO,KAAK,OAAO,QAAQ,UAAU;;;;;CAMtC,sBAAsB,SAAqB,WAAkD;AAC5F,SAAO,KAAK,iBACXA,OAAI,YAAY,CAAC,UAAU,QAAQ,CAAC,SAAS,EAC7C,WACA,kBACA;;;;;CAMF,kBAAkB,aAAyB,WAAkD;AAC5F,SAAO,KAAK,iBAAiB,aAAa,WAAW,kBAAkB;;;;;CAMxE,cAAc,SAA0B;AACvC,SAAO,KAAK,cAAc,KAAK;;;;;;CAOhC,aAAsC;EACrC,MAAM,WAAW,KAAK,YAAY;EAClC,MAAM,WAAW,IAAI,WAAW,SAAS,SAAS,EAAE;AACpD,WAAS,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;AAC3B,WAAS,IAAI,UAAU,EAAE;AAEzB,SAAO;;;;;CAMR,eAAuB;AAEtB,SAAO,uBACN,WAAW,QAAQ,KAAK,YAAY,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,wBAAwB,EAAE,CACzF;;;AAmBH,SAAgB,gCAAgC,qBAA6B;CAC5E,MAAM,QAAQ,WAAW,oBAAoB;CAE7C,MAAM,kBACL,yBAAyB,MAAM;AAEhC,SAAQ,iBAAR;EACC,KAAK;EACL,KAAK;EACL,KAAK;GACJ,MAAM,OACL,yBAAyB;GAC1B,MAAM,YAAY,MAAM,MAAM,GAAG,MAAM,SAAS,KAAK;AAGrD,UAAO;IACN;IACA;IACA;IACA,WANiB,MAAM,MAAM,IAAI,UAAU,OAAO;IAOlD;IACA;EACF,QACC,OAAM,IAAI,MAAM,+BAA+B"}
1
+ {"version":3,"file":"publickey.mjs","names":["bcs"],"sources":["../../src/cryptography/publickey.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64, toBase64 } from '@haneullabs/bcs';\nimport { blake2b } from '@noble/hashes/blake2.js';\nimport { bytesToHex } from '@noble/hashes/utils.js';\n\nimport { bcs } from '../bcs/index.js';\nimport { normalizeHaneulAddress, HANEUL_ADDRESS_LENGTH } from '../utils/haneul-types.js';\nimport type { IntentScope } from './intent.js';\nimport { messageWithIntent } from './intent.js';\nimport { SIGNATURE_FLAG_TO_SCHEME, SIGNATURE_SCHEME_TO_SIZE } from './signature-scheme.js';\n\n/**\n * Value to be converted into public key.\n */\nexport type PublicKeyInitData = string | Uint8Array | Iterable<number>;\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array) {\n\tif (a === b) return true;\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n * A public key\n */\nexport abstract class PublicKey {\n\t/**\n\t * Checks if two public keys are equal\n\t */\n\tequals(publicKey: PublicKey) {\n\t\treturn bytesEqual(this.toRawBytes(), publicKey.toRawBytes());\n\t}\n\n\t/**\n\t * Return the base-64 representation of the public key\n\t */\n\ttoBase64() {\n\t\treturn toBase64(this.toRawBytes());\n\t}\n\n\ttoString(): never {\n\t\tthrow new Error(\n\t\t\t'`toString` is not implemented on public keys. Use `toBase64()` or `toRawBytes()` instead.',\n\t\t);\n\t}\n\n\t/**\n\t * Return the Haneul representation of the public key encoded in\n\t * base-64. A Haneul public key is formed by the concatenation\n\t * of the scheme flag with the raw bytes of the public key\n\t */\n\ttoSuiPublicKey(): string {\n\t\tconst bytes = this.toSuiBytes();\n\t\treturn toBase64(bytes);\n\t}\n\n\tverifyWithIntent(\n\t\tbytes: Uint8Array,\n\t\tsignature: Uint8Array | string,\n\t\tintent: IntentScope,\n\t): Promise<boolean> {\n\t\tconst intentMessage = messageWithIntent(intent, bytes);\n\t\tconst digest = blake2b(intentMessage, { dkLen: 32 });\n\n\t\treturn this.verify(digest, signature);\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided PersonalMessage\n\t */\n\tverifyPersonalMessage(message: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\treturn this.verifyWithIntent(\n\t\t\tbcs.byteVector().serialize(message).toBytes(),\n\t\t\tsignature,\n\t\t\t'PersonalMessage',\n\t\t);\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided Transaction\n\t */\n\tverifyTransaction(transaction: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\treturn this.verifyWithIntent(transaction, signature, 'TransactionData');\n\t}\n\n\t/**\n\t * Verifies that the public key is associated with the provided address\n\t */\n\tverifyAddress(address: string): boolean {\n\t\treturn this.toHaneulAddress() === address;\n\t}\n\n\t/**\n\t * Returns the bytes representation of the public key\n\t * prefixed with the signature scheme flag\n\t */\n\ttoSuiBytes(): Uint8Array<ArrayBuffer> {\n\t\tconst rawBytes = this.toRawBytes();\n\t\tconst suiBytes = new Uint8Array(rawBytes.length + 1);\n\t\tsuiBytes.set([this.flag()]);\n\t\tsuiBytes.set(rawBytes, 1);\n\n\t\treturn suiBytes;\n\t}\n\n\t/**\n\t * Return the Haneul address associated with this Ed25519 public key\n\t */\n\ttoHaneulAddress(): string {\n\t\t// Each hex char represents half a byte, hence hex address doubles the length\n\t\treturn normalizeHaneulAddress(\n\t\t\tbytesToHex(blake2b(this.toSuiBytes(), { dkLen: 32 })).slice(0, HANEUL_ADDRESS_LENGTH * 2),\n\t\t);\n\t}\n\n\t/**\n\t * Return the byte array representation of the public key\n\t */\n\tabstract toRawBytes(): Uint8Array<ArrayBuffer>;\n\n\t/**\n\t * Return signature scheme flag of the public key\n\t */\n\tabstract flag(): number;\n\n\t/**\n\t * Verifies that the signature is valid for for the provided message\n\t */\n\tabstract verify(data: Uint8Array, signature: Uint8Array | string): Promise<boolean>;\n}\n\nexport function parseSerializedKeypairSignature(serializedSignature: string) {\n\tconst bytes = fromBase64(serializedSignature);\n\n\tconst signatureScheme =\n\t\tSIGNATURE_FLAG_TO_SCHEME[bytes[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME];\n\n\tswitch (signatureScheme) {\n\t\tcase 'ED25519':\n\t\tcase 'Secp256k1':\n\t\tcase 'Secp256r1':\n\t\t\tconst size =\n\t\t\t\tSIGNATURE_SCHEME_TO_SIZE[signatureScheme as keyof typeof SIGNATURE_SCHEME_TO_SIZE];\n\t\t\tconst signature = bytes.slice(1, bytes.length - size);\n\t\t\tconst publicKey = bytes.slice(1 + signature.length);\n\n\t\t\treturn {\n\t\t\t\tserializedSignature,\n\t\t\t\tsignatureScheme,\n\t\t\t\tsignature,\n\t\t\t\tpublicKey,\n\t\t\t\tbytes,\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error('Unsupported signature scheme');\n\t}\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAgB,WAAW,GAAe,GAAe;AACxD,KAAI,MAAM,EAAG,QAAO;AAEpB,KAAI,EAAE,WAAW,EAAE,OAClB,QAAO;AAGR,MAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAC7B,KAAI,EAAE,OAAO,EAAE,GACd,QAAO;AAGT,QAAO;;;;;AAMR,IAAsB,YAAtB,MAAgC;;;;CAI/B,OAAO,WAAsB;AAC5B,SAAO,WAAW,KAAK,YAAY,EAAE,UAAU,YAAY,CAAC;;;;;CAM7D,WAAW;AACV,SAAO,SAAS,KAAK,YAAY,CAAC;;CAGnC,WAAkB;AACjB,QAAM,IAAI,MACT,4FACA;;;;;;;CAQF,iBAAyB;AAExB,SAAO,SADO,KAAK,YAAY,CACT;;CAGvB,iBACC,OACA,WACA,QACmB;EAEnB,MAAM,SAAS,QADO,kBAAkB,QAAQ,MAAM,EAChB,EAAE,OAAO,IAAI,CAAC;AAEpD,SAAO,KAAK,OAAO,QAAQ,UAAU;;;;;CAMtC,sBAAsB,SAAqB,WAAkD;AAC5F,SAAO,KAAK,iBACXA,OAAI,YAAY,CAAC,UAAU,QAAQ,CAAC,SAAS,EAC7C,WACA,kBACA;;;;;CAMF,kBAAkB,aAAyB,WAAkD;AAC5F,SAAO,KAAK,iBAAiB,aAAa,WAAW,kBAAkB;;;;;CAMxE,cAAc,SAA0B;AACvC,SAAO,KAAK,iBAAiB,KAAK;;;;;;CAOnC,aAAsC;EACrC,MAAM,WAAW,KAAK,YAAY;EAClC,MAAM,WAAW,IAAI,WAAW,SAAS,SAAS,EAAE;AACpD,WAAS,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;AAC3B,WAAS,IAAI,UAAU,EAAE;AAEzB,SAAO;;;;;CAMR,kBAA0B;AAEzB,SAAO,uBACN,WAAW,QAAQ,KAAK,YAAY,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,wBAAwB,EAAE,CACzF;;;AAmBH,SAAgB,gCAAgC,qBAA6B;CAC5E,MAAM,QAAQ,WAAW,oBAAoB;CAE7C,MAAM,kBACL,yBAAyB,MAAM;AAEhC,SAAQ,iBAAR;EACC,KAAK;EACL,KAAK;EACL,KAAK;GACJ,MAAM,OACL,yBAAyB;GAC1B,MAAM,YAAY,MAAM,MAAM,GAAG,MAAM,SAAS,KAAK;AAGrD,UAAO;IACN;IACA;IACA;IACA,WANiB,MAAM,MAAM,IAAI,UAAU,OAAO;IAOlD;IACA;EACF,QACC,OAAM,IAAI,MAAM,+BAA+B"}
@@ -26,6 +26,12 @@ declare function toSerializedSignature({
26
26
  * Decodes a serialized signature into its constituent components: the signature scheme, the actual signature, and the public key
27
27
  */
28
28
  declare function parseSerializedSignature(serializedSignature: string): {
29
+ serializedSignature: string;
30
+ signatureScheme: "ED25519" | "Secp256k1" | "Secp256r1";
31
+ signature: Uint8Array<ArrayBuffer>;
32
+ publicKey: Uint8Array<ArrayBuffer>;
33
+ bytes: Uint8Array<ArrayBuffer>;
34
+ } | {
29
35
  signatureScheme: "Passkey";
30
36
  serializedSignature: string;
31
37
  signature: Uint8Array<ArrayBufferLike>;
@@ -33,12 +39,6 @@ declare function parseSerializedSignature(serializedSignature: string): {
33
39
  clientDataJson: string;
34
40
  userSignature: Uint8Array<ArrayBuffer>;
35
41
  publicKey: Uint8Array<ArrayBuffer>;
36
- } | {
37
- serializedSignature: string;
38
- signatureScheme: "ED25519" | "Secp256k1" | "Secp256r1";
39
- signature: Uint8Array<ArrayBuffer>;
40
- publicKey: Uint8Array<ArrayBuffer>;
41
- bytes: Uint8Array<ArrayBuffer>;
42
42
  } | {
43
43
  serializedSignature: string;
44
44
  signatureScheme: "ZkLogin";
@@ -1,6 +1,6 @@
1
1
  import { BatchGetObjectsRequest, BatchGetObjectsResponse, BatchGetTransactionsRequest, BatchGetTransactionsResponse, GetCheckpointRequest, GetCheckpointResponse, GetEpochRequest, GetEpochResponse, GetObjectRequest, GetObjectResponse, GetServiceInfoRequest, GetServiceInfoResponse, GetTransactionRequest, GetTransactionResponse } from "./ledger_service.mjs";
2
- import * as _protobuf_ts_runtime2 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc2 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime1 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc1 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/haneul/rpc/v2/ledger_service.client.d.ts
@@ -46,9 +46,9 @@ interface ILedgerServiceClient {
46
46
  declare class LedgerServiceClient implements ILedgerServiceClient, ServiceInfo {
47
47
  private readonly _transport;
48
48
  typeName: string;
49
- methods: _protobuf_ts_runtime_rpc2.MethodInfo<any, any>[];
49
+ methods: _protobuf_ts_runtime_rpc1.MethodInfo<any, any>[];
50
50
  options: {
51
- [extensionName: string]: _protobuf_ts_runtime2.JsonValue;
51
+ [extensionName: string]: _protobuf_ts_runtime1.JsonValue;
52
52
  };
53
53
  constructor(_transport: RpcTransport);
54
54
  /**
@@ -1,6 +1,6 @@
1
1
  import { GetDatatypeRequest, GetDatatypeResponse, GetFunctionRequest, GetFunctionResponse, GetPackageRequest, GetPackageResponse, ListPackageVersionsRequest, ListPackageVersionsResponse } from "./move_package_service.mjs";
2
- import * as _protobuf_ts_runtime0 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc0 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime2 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc2 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/haneul/rpc/v2/move_package_service.client.d.ts
@@ -32,9 +32,9 @@ interface IMovePackageServiceClient {
32
32
  declare class MovePackageServiceClient implements IMovePackageServiceClient, ServiceInfo {
33
33
  private readonly _transport;
34
34
  typeName: string;
35
- methods: _protobuf_ts_runtime_rpc0.MethodInfo<any, any>[];
35
+ methods: _protobuf_ts_runtime_rpc2.MethodInfo<any, any>[];
36
36
  options: {
37
- [extensionName: string]: _protobuf_ts_runtime0.JsonValue;
37
+ [extensionName: string]: _protobuf_ts_runtime2.JsonValue;
38
38
  };
39
39
  constructor(_transport: RpcTransport);
40
40
  /**
@@ -1,6 +1,6 @@
1
1
  import { GetBalanceRequest, GetBalanceResponse, GetCoinInfoRequest, GetCoinInfoResponse, ListBalancesRequest, ListBalancesResponse, ListDynamicFieldsRequest, ListDynamicFieldsResponse, ListOwnedObjectsRequest, ListOwnedObjectsResponse } from "./state_service.mjs";
2
- import * as _protobuf_ts_runtime5 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc5 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime4 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc4 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/haneul/rpc/v2/state_service.client.d.ts
@@ -36,9 +36,9 @@ interface IStateServiceClient {
36
36
  declare class StateServiceClient implements IStateServiceClient, ServiceInfo {
37
37
  private readonly _transport;
38
38
  typeName: string;
39
- methods: _protobuf_ts_runtime_rpc5.MethodInfo<any, any>[];
39
+ methods: _protobuf_ts_runtime_rpc4.MethodInfo<any, any>[];
40
40
  options: {
41
- [extensionName: string]: _protobuf_ts_runtime5.JsonValue;
41
+ [extensionName: string]: _protobuf_ts_runtime4.JsonValue;
42
42
  };
43
43
  constructor(_transport: RpcTransport);
44
44
  /**
@@ -1,6 +1,6 @@
1
1
  import { SubscribeCheckpointsRequest, SubscribeCheckpointsResponse } from "./subscription_service.mjs";
2
- import * as _protobuf_ts_runtime4 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc4 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime5 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc5 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServerStreamingCall, ServiceInfo } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/haneul/rpc/v2/subscription_service.client.d.ts
@@ -32,9 +32,9 @@ interface ISubscriptionServiceClient {
32
32
  declare class SubscriptionServiceClient implements ISubscriptionServiceClient, ServiceInfo {
33
33
  private readonly _transport;
34
34
  typeName: string;
35
- methods: _protobuf_ts_runtime_rpc4.MethodInfo<any, any>[];
35
+ methods: _protobuf_ts_runtime_rpc5.MethodInfo<any, any>[];
36
36
  options: {
37
- [extensionName: string]: _protobuf_ts_runtime4.JsonValue;
37
+ [extensionName: string]: _protobuf_ts_runtime5.JsonValue;
38
38
  };
39
39
  constructor(_transport: RpcTransport);
40
40
  /**
@@ -567,7 +567,7 @@ interface StakingPool {
567
567
  deactivationEpoch?: bigint;
568
568
  /**
569
569
  * The total number of HANEUL tokens in this pool, including the HANEUL in the rewards_pool, as well as in all the principal
570
- * in the `StakedSui` object, updated at epoch boundaries.
570
+ * in the `StakedHaneul` object, updated at epoch boundaries.
571
571
  *
572
572
  * @generated from protobuf field: optional uint64 sui_balance = 4;
573
573
  */
@@ -607,7 +607,7 @@ interface StakingPool {
607
607
  *
608
608
  * @generated from protobuf field: optional uint64 pending_total_sui_withdraw = 9;
609
609
  */
610
- pendingTotalSuiWithdraw?: bigint;
610
+ pendingTotalHaneulWithdraw?: bigint;
611
611
  /**
612
612
  * Pending pool token withdrawn during the current epoch, emptied at epoch boundaries.
613
613
  *
@@ -662,7 +662,7 @@ var StakingPool$Type = class extends MessageType {
662
662
  },
663
663
  {
664
664
  no: 4,
665
- name: "sui_balance",
665
+ name: "haneul_balance",
666
666
  kind: "scalar",
667
667
  opt: true,
668
668
  T: 4,