{"version":3,"sources":["../src/index.ts","../../node_modules/@mysten/sui.js/src/utils/sui-types.ts","../../node_modules/@mysten/sui.js/src/utils/index.ts","../../node_modules/@mysten/sui.js/src/transactions/utils.ts","../../node_modules/@mysten/sui.js/src/transactions/serializer.ts","../../node_modules/@mysten/sui.js/src/transactions/Inputs.ts","../../node_modules/@mysten/sui.js/src/bcs/index.ts","../../node_modules/@mysten/sui.js/src/bcs/type-tag-serializer.ts","../../node_modules/@mysten/sui.js/src/transactions/Transactions.ts","../../node_modules/@mysten/sui.js/src/transactions/TransactionBlock.ts","../../node_modules/@mysten/sui.js/src/transactions/pure.ts","../../node_modules/@mysten/sui.js/src/transactions/TransactionBlockData.ts","../../node_modules/@noble/hashes/src/utils.ts","../../node_modules/@noble/hashes/src/_blake.ts","../../node_modules/@noble/hashes/src/_u64.ts","../../node_modules/@noble/hashes/src/blake2.ts","../../node_modules/@noble/hashes/src/blake2b.ts","../../node_modules/@mysten/sui.js/src/transactions/hash.ts","../src/sdk.ts","../src/scripts/create-pool.ts"],"sourcesContent":["export { Sdk } from './sdk';\nexport { createPoolTransactionPayload } from './scripts/create-pool';\n\n\n\n\n\n\n\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB58, splitGenericParameters } from '@mysten/bcs';\n\nconst TX_DIGEST_LENGTH = 32;\n\n/** Returns whether the tx digest is valid based on the serialization format */\nexport function isValidTransactionDigest(value: string): value is string {\n\ttry {\n\t\tconst buffer = fromB58(value);\n\t\treturn buffer.length === TX_DIGEST_LENGTH;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\n// TODO - can we automatically sync this with rust length definition?\n// Source of truth is\n// https://github.com/MystenLabs/sui/blob/acb2b97ae21f47600e05b0d28127d88d0725561d/crates/sui-types/src/base_types.rs#L67\n// which uses the Move account address length\n// https://github.com/move-language/move/blob/67ec40dc50c66c34fd73512fcc412f3b68d67235/language/move-core/types/src/account_address.rs#L23 .\n\nexport const SUI_ADDRESS_LENGTH = 32;\nexport function isValidSuiAddress(value: string): value is string {\n\treturn isHex(value) && getHexByteLength(value) === SUI_ADDRESS_LENGTH;\n}\n\nexport function isValidSuiObjectId(value: string): boolean {\n\treturn isValidSuiAddress(value);\n}\n\ntype StructTag = {\n\taddress: string;\n\tmodule: string;\n\tname: string;\n\ttypeParams: (string | StructTag)[];\n};\n\nfunction parseTypeTag(type: string): string | StructTag {\n\tif (!type.includes('::')) return type;\n\n\treturn parseStructTag(type);\n}\n\nexport function parseStructTag(type: string): StructTag {\n\tconst [address, module] = type.split('::');\n\n\tconst rest = type.slice(address.length + module.length + 4);\n\tconst name = rest.includes('<') ? rest.slice(0, rest.indexOf('<')) : rest;\n\tconst typeParams = rest.includes('<')\n\t\t? splitGenericParameters(rest.slice(rest.indexOf('<') + 1, rest.lastIndexOf('>'))).map(\n\t\t\t\t(typeParam) => parseTypeTag(typeParam.trim()),\n\t\t  )\n\t\t: [];\n\n\treturn {\n\t\taddress: normalizeSuiAddress(address),\n\t\tmodule,\n\t\tname,\n\t\ttypeParams,\n\t};\n}\n\nexport function normalizeStructTag(type: string | StructTag): string {\n\tconst { address, module, name, typeParams } =\n\t\ttypeof type === 'string' ? parseStructTag(type) : type;\n\n\tconst formattedTypeParams =\n\t\ttypeParams?.length > 0\n\t\t\t? `<${typeParams\n\t\t\t\t\t.map((typeParam) =>\n\t\t\t\t\t\ttypeof typeParam === 'string' ? typeParam : normalizeStructTag(typeParam),\n\t\t\t\t\t)\n\t\t\t\t\t.join(',')}>`\n\t\t\t: '';\n\n\treturn `${address}::${module}::${name}${formattedTypeParams}`;\n}\n\n/**\n * Perform the following operations:\n * 1. Make the address lower case\n * 2. Prepend `0x` if the string does not start with `0x`.\n * 3. Add more zeros if the length of the address(excluding `0x`) is less than `SUI_ADDRESS_LENGTH`\n *\n * WARNING: if the address value itself starts with `0x`, e.g., `0x0x`, the default behavior\n * is to treat the first `0x` not as part of the address. The default behavior can be overridden by\n * setting `forceAdd0x` to true\n *\n */\nexport function normalizeSuiAddress(value: string, forceAdd0x: boolean = false): string {\n\tlet address = value.toLowerCase();\n\tif (!forceAdd0x && address.startsWith('0x')) {\n\t\taddress = address.slice(2);\n\t}\n\treturn `0x${address.padStart(SUI_ADDRESS_LENGTH * 2, '0')}`;\n}\n\nexport function normalizeSuiObjectId(value: string, forceAdd0x: boolean = false): string {\n\treturn normalizeSuiAddress(value, forceAdd0x);\n}\n\nfunction isHex(value: string): boolean {\n\treturn /^(0x|0X)?[a-fA-F0-9]+$/.test(value) && value.length % 2 === 0;\n}\n\nfunction getHexByteLength(value: string): number {\n\treturn /^(0x|0X)/.test(value) ? (value.length - 2) / 2 : value.length / 2;\n}\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { formatAddress, formatDigest } from './format.js';\nimport {\n\tisValidSuiAddress,\n\tisValidSuiObjectId,\n\tisValidTransactionDigest,\n\tnormalizeStructTag,\n\tnormalizeSuiAddress,\n\tnormalizeSuiObjectId,\n\tparseStructTag,\n\tSUI_ADDRESS_LENGTH,\n} from './sui-types.js';\n\nexport { fromB64, toB64, fromHEX, toHEX } from '@mysten/bcs';\nexport { is, assert } from 'superstruct';\n\nexport {\n\tformatAddress,\n\tformatDigest,\n\tisValidSuiAddress,\n\tisValidSuiObjectId,\n\tisValidTransactionDigest,\n\tnormalizeStructTag,\n\tnormalizeSuiAddress,\n\tnormalizeSuiObjectId,\n\tparseStructTag,\n\tSUI_ADDRESS_LENGTH,\n};\n\nexport { isValidSuiNSName, normalizeSuiNSName } from './suins.js';\n\nexport const SUI_DECIMALS = 9;\nexport const MIST_PER_SUI = BigInt(1000000000);\n\nexport const MOVE_STDLIB_ADDRESS = '0x1';\nexport const SUI_FRAMEWORK_ADDRESS = '0x2';\nexport const SUI_SYSTEM_ADDRESS = '0x3';\nexport const SUI_CLOCK_OBJECT_ID = normalizeSuiObjectId('0x6');\nexport const SUI_SYSTEM_MODULE_NAME = 'sui_system';\nexport const SUI_TYPE_ARG = `${SUI_FRAMEWORK_ADDRESS}::sui::SUI`;\nexport const SUI_SYSTEM_STATE_OBJECT_ID: string = normalizeSuiObjectId('0x5');\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Struct } from 'superstruct';\nimport { create as superstructCreate } from 'superstruct';\n\nimport type { SuiMoveNormalizedType } from '../client/index.js';\n\nexport function create<T, S>(value: T, struct: Struct<T, S>): T {\n\treturn superstructCreate(value, struct);\n}\n\nexport function extractMutableReference(\n\tnormalizedType: SuiMoveNormalizedType,\n): SuiMoveNormalizedType | undefined {\n\treturn typeof normalizedType === 'object' && 'MutableReference' in normalizedType\n\t\t? normalizedType.MutableReference\n\t\t: undefined;\n}\n\nexport function extractReference(\n\tnormalizedType: SuiMoveNormalizedType,\n): SuiMoveNormalizedType | undefined {\n\treturn typeof normalizedType === 'object' && 'Reference' in normalizedType\n\t\t? normalizedType.Reference\n\t\t: undefined;\n}\n\nexport function extractStructTag(\n\tnormalizedType: SuiMoveNormalizedType,\n): Extract<SuiMoveNormalizedType, { Struct: unknown }> | undefined {\n\tif (typeof normalizedType === 'object' && 'Struct' in normalizedType) {\n\t\treturn normalizedType;\n\t}\n\n\tconst ref = extractReference(normalizedType);\n\tconst mutRef = extractMutableReference(normalizedType);\n\n\tif (typeof ref === 'object' && 'Struct' in ref) {\n\t\treturn ref;\n\t}\n\n\tif (typeof mutRef === 'object' && 'Struct' in mutRef) {\n\t\treturn mutRef;\n\t}\n\treturn undefined;\n}\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiJsonValue, SuiMoveNormalizedType } from '../client/index.js';\nimport { MOVE_STDLIB_ADDRESS, SUI_FRAMEWORK_ADDRESS } from '../utils/index.js';\nimport { isValidSuiAddress } from '../utils/sui-types.js';\nimport { extractStructTag } from './utils.js';\n\nconst OBJECT_MODULE_NAME = 'object';\nconst ID_STRUCT_NAME = 'ID';\n\nconst STD_ASCII_MODULE_NAME = 'ascii';\nconst STD_ASCII_STRUCT_NAME = 'String';\n\nconst STD_UTF8_MODULE_NAME = 'string';\nconst STD_UTF8_STRUCT_NAME = 'String';\n\nconst STD_OPTION_MODULE_NAME = 'option';\nconst STD_OPTION_STRUCT_NAME = 'Option';\n\nconst RESOLVED_SUI_ID = {\n\taddress: SUI_FRAMEWORK_ADDRESS,\n\tmodule: OBJECT_MODULE_NAME,\n\tname: ID_STRUCT_NAME,\n};\nconst RESOLVED_ASCII_STR = {\n\taddress: MOVE_STDLIB_ADDRESS,\n\tmodule: STD_ASCII_MODULE_NAME,\n\tname: STD_ASCII_STRUCT_NAME,\n};\nconst RESOLVED_UTF8_STR = {\n\taddress: MOVE_STDLIB_ADDRESS,\n\tmodule: STD_UTF8_MODULE_NAME,\n\tname: STD_UTF8_STRUCT_NAME,\n};\n\nconst RESOLVED_STD_OPTION = {\n\taddress: MOVE_STDLIB_ADDRESS,\n\tmodule: STD_OPTION_MODULE_NAME,\n\tname: STD_OPTION_STRUCT_NAME,\n};\n\nconst isSameStruct = (a: any, b: any) =>\n\ta.address === b.address && a.module === b.module && a.name === b.name;\n\nexport function isTxContext(param: SuiMoveNormalizedType): boolean {\n\tconst struct = extractStructTag(param)?.Struct;\n\treturn (\n\t\tstruct?.address === '0x2' && struct?.module === 'tx_context' && struct?.name === 'TxContext'\n\t);\n}\n\nfunction expectType(typeName: string, argVal?: SuiJsonValue) {\n\tif (typeof argVal === 'undefined') {\n\t\treturn;\n\t}\n\tif (typeof argVal !== typeName) {\n\t\tthrow new Error(`Expect ${argVal} to be ${typeName}, received ${typeof argVal}`);\n\t}\n}\n\nconst allowedTypes = ['Address', 'Bool', 'U8', 'U16', 'U32', 'U64', 'U128', 'U256'];\n\nexport function getPureSerializationType(\n\tnormalizedType: SuiMoveNormalizedType,\n\targVal: SuiJsonValue | undefined,\n): string | undefined {\n\tif (typeof normalizedType === 'string' && allowedTypes.includes(normalizedType)) {\n\t\tif (normalizedType in ['U8', 'U16', 'U32', 'U64', 'U128', 'U256']) {\n\t\t\texpectType('number', argVal);\n\t\t} else if (normalizedType === 'Bool') {\n\t\t\texpectType('boolean', argVal);\n\t\t} else if (normalizedType === 'Address') {\n\t\t\texpectType('string', argVal);\n\t\t\tif (argVal && !isValidSuiAddress(argVal as string)) {\n\t\t\t\tthrow new Error('Invalid Sui Address');\n\t\t\t}\n\t\t}\n\t\treturn normalizedType.toLowerCase();\n\t} else if (typeof normalizedType === 'string') {\n\t\tthrow new Error(`Unknown pure normalized type ${JSON.stringify(normalizedType, null, 2)}`);\n\t}\n\n\tif ('Vector' in normalizedType) {\n\t\tif ((argVal === undefined || typeof argVal === 'string') && normalizedType.Vector === 'U8') {\n\t\t\treturn 'string';\n\t\t}\n\n\t\tif (argVal !== undefined && !Array.isArray(argVal)) {\n\t\t\tthrow new Error(`Expect ${argVal} to be a array, received ${typeof argVal}`);\n\t\t}\n\n\t\tconst innerType = getPureSerializationType(\n\t\t\tnormalizedType.Vector,\n\t\t\t// undefined when argVal is empty\n\t\t\targVal ? argVal[0] : undefined,\n\t\t);\n\n\t\tif (innerType === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn `vector<${innerType}>`;\n\t}\n\n\tif ('Struct' in normalizedType) {\n\t\tif (isSameStruct(normalizedType.Struct, RESOLVED_ASCII_STR)) {\n\t\t\treturn 'string';\n\t\t} else if (isSameStruct(normalizedType.Struct, RESOLVED_UTF8_STR)) {\n\t\t\treturn 'utf8string';\n\t\t} else if (isSameStruct(normalizedType.Struct, RESOLVED_SUI_ID)) {\n\t\t\treturn 'address';\n\t\t} else if (isSameStruct(normalizedType.Struct, RESOLVED_STD_OPTION)) {\n\t\t\tconst optionToVec: SuiMoveNormalizedType = {\n\t\t\t\tVector: normalizedType.Struct.typeArguments[0],\n\t\t\t};\n\t\t\treturn getPureSerializationType(optionToVec, argVal);\n\t\t}\n\t}\n\n\treturn undefined;\n}\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SerializedBcs } from '@mysten/bcs';\nimport { isSerializedBcs } from '@mysten/bcs';\nimport type { Infer } from 'superstruct';\nimport { array, bigint, boolean, integer, number, object, string, union } from 'superstruct';\n\nimport { bcs } from '../bcs/index.js';\nimport type { SharedObjectRef } from '../bcs/index.js';\nimport { normalizeSuiAddress } from '../utils/sui-types.js';\n\nexport const SuiObjectRef = object({\n\t/** Base64 string representing the object digest */\n\tdigest: string(),\n\t/** Hex code as string representing the object id */\n\tobjectId: string(),\n\t/** Object version */\n\tversion: union([number(), string(), bigint()]),\n});\nexport type SuiObjectRef = Infer<typeof SuiObjectRef>;\n\nconst ObjectArg = union([\n\tobject({ ImmOrOwned: SuiObjectRef }),\n\tobject({\n\t\tShared: object({\n\t\t\tobjectId: string(),\n\t\t\tinitialSharedVersion: union([integer(), string()]),\n\t\t\tmutable: boolean(),\n\t\t}),\n\t}),\n\tobject({ Receiving: SuiObjectRef }),\n]);\n\nexport const PureCallArg = object({ Pure: array(integer()) });\nexport const ObjectCallArg = object({ Object: ObjectArg });\nexport type PureCallArg = Infer<typeof PureCallArg>;\nexport type ObjectCallArg = Infer<typeof ObjectCallArg>;\n\nexport const BuilderCallArg = union([PureCallArg, ObjectCallArg]);\nexport type BuilderCallArg = Infer<typeof BuilderCallArg>;\n\nfunction Pure(data: Uint8Array | SerializedBcs<any>, type?: string): PureCallArg;\n/** @deprecated pass SerializedBcs values instead */\nfunction Pure(data: unknown, type?: string): PureCallArg;\nfunction Pure(data: unknown, type?: string): PureCallArg {\n\treturn {\n\t\tPure: Array.from(\n\t\t\tdata instanceof Uint8Array\n\t\t\t\t? data\n\t\t\t\t: isSerializedBcs(data)\n\t\t\t\t? data.toBytes()\n\t\t\t\t: // NOTE: We explicitly set this to be growable to infinity, because we have maxSize validation at the builder-level:\n\t\t\t\t  bcs.ser(type!, data, { maxSize: Infinity }).toBytes(),\n\t\t),\n\t};\n}\n\nexport const Inputs = {\n\tPure,\n\tObjectRef({ objectId, digest, version }: SuiObjectRef): ObjectCallArg {\n\t\treturn {\n\t\t\tObject: {\n\t\t\t\tImmOrOwned: {\n\t\t\t\t\tdigest,\n\t\t\t\t\tversion,\n\t\t\t\t\tobjectId: normalizeSuiAddress(objectId),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t},\n\tSharedObjectRef({ objectId, mutable, initialSharedVersion }: SharedObjectRef): ObjectCallArg {\n\t\treturn {\n\t\t\tObject: {\n\t\t\t\tShared: {\n\t\t\t\t\tmutable,\n\t\t\t\t\tinitialSharedVersion,\n\t\t\t\t\tobjectId: normalizeSuiAddress(objectId),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t},\n\tReceivingRef({ objectId, digest, version }: SuiObjectRef): ObjectCallArg {\n\t\treturn {\n\t\t\tObject: {\n\t\t\t\tReceiving: {\n\t\t\t\t\tdigest,\n\t\t\t\t\tversion,\n\t\t\t\t\tobjectId: normalizeSuiAddress(objectId),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t},\n};\n\nexport function getIdFromCallArg(arg: string | ObjectCallArg) {\n\tif (typeof arg === 'string') {\n\t\treturn normalizeSuiAddress(arg);\n\t}\n\tif ('ImmOrOwned' in arg.Object) {\n\t\treturn normalizeSuiAddress(arg.Object.ImmOrOwned.objectId);\n\t}\n\n\tif ('Receiving' in arg.Object) {\n\t\treturn normalizeSuiAddress(arg.Object.Receiving.objectId);\n\t}\n\n\treturn normalizeSuiAddress(arg.Object.Shared.objectId);\n}\n\nexport function getSharedObjectInput(arg: BuilderCallArg): SharedObjectRef | undefined {\n\treturn typeof arg === 'object' && 'Object' in arg && 'Shared' in arg.Object\n\t\t? arg.Object.Shared\n\t\t: undefined;\n}\n\nexport function isSharedObjectInput(arg: BuilderCallArg): boolean {\n\treturn !!getSharedObjectInput(arg);\n}\n\nexport function isMutableSharedObjectInput(arg: BuilderCallArg): boolean {\n\treturn getSharedObjectInput(arg)?.mutable ?? false;\n}\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType, BcsTypeOptions } from '@mysten/bcs';\nimport {\n\tbcs,\n\tBCS as BcsRegistry,\n\tfromB58,\n\tfromB64,\n\tfromHEX,\n\tgetSuiMoveConfig,\n\ttoB58,\n\ttoB64,\n\ttoHEX,\n} from '@mysten/bcs';\n\nimport type { MoveCallTransaction } from '../transactions/Transactions.js';\nimport { normalizeSuiAddress, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';\nimport { TypeTagSerializer } from './type-tag-serializer.js';\n\nexport { TypeTagSerializer } from './type-tag-serializer.js';\n\n/**\n * A reference to a shared object.\n */\nexport type SharedObjectRef = {\n\t/** Hex code as string representing the object id */\n\tobjectId: string;\n\n\t/** The version the object was shared at */\n\tinitialSharedVersion: number | string;\n\n\t/** Whether reference is mutable */\n\tmutable: boolean;\n};\n\nexport type SuiObjectRef = {\n\t/** Base64 string representing the object digest */\n\tobjectId: string;\n\t/** Object version */\n\tversion: number | string | bigint;\n\t/** Hex code as string representing the object id */\n\tdigest: string;\n};\n\n/**\n * An object argument.\n */\nexport type ObjectArg =\n\t| { ImmOrOwned: SuiObjectRef }\n\t| { Shared: SharedObjectRef }\n\t| { Receiving: SuiObjectRef };\n\n/**\n * A pure argument.\n */\nexport type PureArg = { Pure: ArrayLike<number> };\n\nexport function isPureArg(arg: any): arg is PureArg {\n\treturn (arg as PureArg).Pure !== undefined;\n}\n\n/**\n * An argument for the transaction. It is a 'meant' enum which expects to have\n * one of the optional properties. If not, the BCS error will be thrown while\n * attempting to form a transaction.\n *\n * Example:\n * ```js\n * let arg1: CallArg = { Object: { Shared: {\n *   objectId: '5460cf92b5e3e7067aaace60d88324095fd22944',\n *   initialSharedVersion: 1,\n *   mutable: true,\n * } } };\n * let arg2: CallArg = { Pure: bcs.ser(BCS.STRING, 100000).toBytes() };\n * let arg3: CallArg = { Object: { ImmOrOwned: {\n *   objectId: '4047d2e25211d87922b6650233bd0503a6734279',\n *   version: 1,\n *   digest: 'bCiANCht4O9MEUhuYjdRCqRPZjr2rJ8MfqNiwyhmRgA='\n * } } };\n * ```\n *\n * For `Pure` arguments BCS is required. You must encode the values with BCS according\n * to the type required by the called function. Pure accepts only serialized values\n */\nexport type CallArg = PureArg | { Object: ObjectArg };\n\n/**\n * Kind of a TypeTag which is represented by a Move type identifier.\n */\nexport type StructTag = {\n\taddress: string;\n\tmodule: string;\n\tname: string;\n\ttypeParams: TypeTag[];\n};\n\n/**\n * Sui TypeTag object. A decoupled `0x...::module::Type<???>` parameter.\n */\nexport type TypeTag =\n\t| { bool: null | true }\n\t| { u8: null | true }\n\t| { u64: null | true }\n\t| { u128: null | true }\n\t| { address: null | true }\n\t| { signer: null | true }\n\t| { vector: TypeTag }\n\t| { struct: StructTag }\n\t| { u16: null | true }\n\t| { u32: null | true }\n\t| { u256: null | true };\n\n// ========== TransactionData ===========\n\n/**\n * The GasData to be used in the transaction.\n */\nexport type GasData = {\n\tpayment: SuiObjectRef[];\n\towner: string; // Gas Object's owner\n\tprice: number;\n\tbudget: number;\n};\n\n/**\n * TransactionExpiration\n *\n * Indications the expiration time for a transaction.\n */\nexport type TransactionExpiration = { None: null } | { Epoch: number };\n\nconst bcsRegistry = new BcsRegistry({\n\t...getSuiMoveConfig(),\n\ttypes: {\n\t\tenums: {\n\t\t\t'Option<T>': {\n\t\t\t\tNone: null,\n\t\t\t\tSome: 'T',\n\t\t\t},\n\t\t},\n\t},\n});\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) => 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\n/**\n * Wrapper around Enum, which transforms any `T` into an object with `kind` property:\n * @example\n * ```\n * let bcsEnum = { TransferObjects: { objects: [], address: ... } }\n * // becomes\n * let translatedEnum = { kind: 'TransferObjects', objects: [], address: ... };\n * ```\n */\nfunction enumKind<T extends object, Input extends object>(type: BcsType<T, Input>) {\n\ttype Merge<T> = T extends infer U ? { [K in keyof U]: U[K] } : never;\n\ttype EnumKindTransform<T> = T extends infer U\n\t\t? Merge<(U[keyof U] extends null | boolean ? object : U[keyof U]) & { kind: keyof U }>\n\t\t: never;\n\n\treturn type.transform({\n\t\tinput: (val: EnumKindTransform<Input>) =>\n\t\t\t({\n\t\t\t\t[val.kind]: val,\n\t\t\t}) as Input,\n\t\toutput: (val) => {\n\t\t\tconst key = Object.keys(val)[0] as keyof T;\n\n\t\t\treturn { kind: key, ...val[key] } as EnumKindTransform<T>;\n\t\t},\n\t});\n}\n\nconst Address = bcs.bytes(SUI_ADDRESS_LENGTH).transform({\n\tinput: (val: string | Uint8Array) =>\n\t\ttypeof val === 'string' ? fromHEX(normalizeSuiAddress(val)) : val,\n\toutput: (val) => normalizeSuiAddress(toHEX(val)),\n});\n\nconst ObjectDigest = bcs.vector(bcs.u8()).transform({\n\tname: 'ObjectDigest',\n\tinput: (value: string) => fromB58(value),\n\toutput: (value) => toB58(new Uint8Array(value)),\n});\n\nconst SuiObjectRef = bcs.struct('SuiObjectRef', {\n\tobjectId: Address,\n\tversion: bcs.u64(),\n\tdigest: ObjectDigest,\n});\n\nconst SharedObjectRef = bcs.struct('SharedObjectRef', {\n\tobjectId: Address,\n\tinitialSharedVersion: bcs.u64(),\n\tmutable: bcs.bool(),\n});\n\nconst ObjectArg = bcs.enum('ObjectArg', {\n\tImmOrOwned: SuiObjectRef,\n\tShared: SharedObjectRef,\n\tReceiving: SuiObjectRef,\n});\n\nconst CallArg = bcs.enum('CallArg', {\n\tPure: bcs.vector(bcs.u8()),\n\tObject: ObjectArg,\n\tObjVec: bcs.vector(ObjectArg),\n});\n\nconst TypeTag: BcsType<TypeTag> = 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(() => TypeTag),\n\tstruct: bcs.lazy(() => StructTag),\n\tu16: null,\n\tu32: null,\n\tu256: null,\n}) as never;\n\nconst Argument = enumKind(\n\tbcs.enum('Argument', {\n\t\tGasCoin: null,\n\t\tInput: bcs.struct('Input', { index: bcs.u16() }),\n\t\tResult: bcs.struct('Result', { index: bcs.u16() }),\n\t\tNestedResult: bcs.struct('NestedResult', { index: bcs.u16(), resultIndex: bcs.u16() }),\n\t}),\n);\n\n/** Custom serializer for decoding package, module, function easier */\nconst ProgrammableMoveCall = bcs\n\t.struct('ProgrammableMoveCall', {\n\t\tpackage: Address,\n\t\tmodule: bcs.string(),\n\t\tfunction: bcs.string(),\n\t\ttype_arguments: bcs.vector(TypeTag),\n\t\targuments: bcs.vector(Argument),\n\t})\n\t.transform({\n\t\tinput: (data: MoveCallTransaction) => {\n\t\t\tconst [pkg, module, fun] = data.target.split('::');\n\t\t\tconst type_arguments = data.typeArguments.map((tag) =>\n\t\t\t\tTypeTagSerializer.parseFromStr(tag, true),\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tpackage: normalizeSuiAddress(pkg),\n\t\t\t\tmodule,\n\t\t\t\tfunction: fun,\n\t\t\t\ttype_arguments,\n\t\t\t\targuments: data.arguments,\n\t\t\t};\n\t\t},\n\t\toutput: (data) => {\n\t\t\treturn {\n\t\t\t\ttarget: [data.package, data.module, data.function].join(\n\t\t\t\t\t'::',\n\t\t\t\t) as `${string}::${string}::${string}`,\n\t\t\t\targuments: data.arguments,\n\t\t\t\ttypeArguments: data.type_arguments.map(TypeTagSerializer.tagToString),\n\t\t\t};\n\t\t},\n\t});\n\nconst Transaction = enumKind(\n\tbcs.enum('Transaction', {\n\t\t/**\n\t\t * A Move Call - any public Move function can be called via\n\t\t * this transaction. The results can be used that instant to pass\n\t\t * into the next transaction.\n\t\t */\n\t\tMoveCall: ProgrammableMoveCall,\n\t\t/**\n\t\t * Transfer vector of objects to a receiver.\n\t\t */\n\t\tTransferObjects: bcs.struct('TransferObjects', {\n\t\t\tobjects: bcs.vector(Argument),\n\t\t\taddress: Argument,\n\t\t}),\n\t\t/**\n\t\t * Split `amount` from a `coin`.\n\t\t */\n\t\tSplitCoins: bcs.struct('SplitCoins', { coin: Argument, amounts: bcs.vector(Argument) }),\n\t\t/**\n\t\t * Merge Vector of Coins (`sources`) into a `destination`.\n\t\t */\n\t\tMergeCoins: bcs.struct('MergeCoins', { destination: Argument, sources: bcs.vector(Argument) }),\n\t\t/**\n\t\t * Publish a Move module.\n\t\t */\n\t\tPublish: bcs.struct('Publish', {\n\t\t\tmodules: bcs.vector(bcs.vector(bcs.u8())),\n\t\t\tdependencies: bcs.vector(Address),\n\t\t}),\n\t\t/**\n\t\t * Build a vector of objects using the input arguments.\n\t\t * It is impossible to construct a `vector<T: key>` otherwise,\n\t\t * so this call serves a utility function.\n\t\t */\n\t\tMakeMoveVec: bcs.struct('MakeMoveVec', {\n\t\t\ttype: optionEnum(TypeTag),\n\t\t\tobjects: bcs.vector(Argument),\n\t\t}),\n\t\t/**  */\n\t\tUpgrade: bcs.struct('Upgrade', {\n\t\t\tmodules: bcs.vector(bcs.vector(bcs.u8())),\n\t\t\tdependencies: bcs.vector(Address),\n\t\t\tpackageId: Address,\n\t\t\tticket: Argument,\n\t\t}),\n\t}),\n);\n\nconst ProgrammableTransaction = bcs.struct('ProgrammableTransaction', {\n\tinputs: bcs.vector(CallArg),\n\ttransactions: bcs.vector(Transaction),\n});\n\nconst TransactionKind = bcs.enum('TransactionKind', {\n\tProgrammableTransaction: ProgrammableTransaction,\n\tChangeEpoch: null,\n\tGenesis: null,\n\tConsensusCommitPrologue: null,\n});\n\nconst TransactionExpiration = bcs.enum('TransactionExpiration', {\n\tNone: null,\n\tEpoch: unsafe_u64(),\n});\n\nconst StructTag = bcs.struct('StructTag', {\n\taddress: Address,\n\tmodule: bcs.string(),\n\tname: bcs.string(),\n\ttypeParams: bcs.vector(TypeTag),\n});\n\nconst GasData = bcs.struct('GasData', {\n\tpayment: bcs.vector(SuiObjectRef),\n\towner: Address,\n\tprice: bcs.u64(),\n\tbudget: bcs.u64(),\n});\n\nconst TransactionDataV1 = bcs.struct('TransactionDataV1', {\n\tkind: TransactionKind,\n\tsender: Address,\n\tgasData: GasData,\n\texpiration: TransactionExpiration,\n});\n\nconst TransactionData = bcs.enum('TransactionData', {\n\tV1: TransactionDataV1,\n});\n\nconst IntentScope = bcs.enum('IntentScope', {\n\tTransactionData: null,\n\tTransactionEffects: null,\n\tCheckpointSummary: null,\n\tPersonalMessage: null,\n});\n\nconst IntentVersion = bcs.enum('IntentVersion', {\n\tV0: null,\n});\n\nconst AppId = bcs.enum('AppId', {\n\tSui: null,\n});\n\nconst Intent = bcs.struct('Intent', {\n\tscope: IntentScope,\n\tversion: IntentVersion,\n\tappId: AppId,\n});\n\nconst IntentMessage = bcs.generic(['T'], (T) =>\n\tbcs.struct('IntentMessage<T>', {\n\t\tintent: Intent,\n\t\tvalue: T,\n\t}),\n);\n\nconst CompressedSignature = bcs.enum('CompressedSignature', {\n\tED25519: bcs.fixedArray(64, bcs.u8()),\n\tSecp256k1: bcs.fixedArray(64, bcs.u8()),\n\tSecp256r1: bcs.fixedArray(64, bcs.u8()),\n\tZkLogin: bcs.vector(bcs.u8()),\n});\n\nconst PublicKey = bcs.enum('PublicKey', {\n\tED25519: bcs.fixedArray(32, bcs.u8()),\n\tSecp256k1: bcs.fixedArray(33, bcs.u8()),\n\tSecp256r1: bcs.fixedArray(33, bcs.u8()),\n\tZkLogin: bcs.vector(bcs.u8()),\n});\n\nconst MultiSigPkMap = bcs.struct('MultiSigPkMap', {\n\tpubKey: PublicKey,\n\tweight: bcs.u8(),\n});\n\nconst MultiSigPublicKey = bcs.struct('MultiSigPublicKey', {\n\tpk_map: bcs.vector(MultiSigPkMap),\n\tthreshold: bcs.u16(),\n});\n\nconst MultiSig = bcs.struct('MultiSig', {\n\tsigs: bcs.vector(CompressedSignature),\n\tbitmap: bcs.u16(),\n\tmultisig_pk: MultiSigPublicKey,\n});\n\nconst base64String = bcs.vector(bcs.u8()).transform({\n\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromB64(val) : val),\n\toutput: (val) => toB64(new Uint8Array(val)),\n});\n\nconst SenderSignedTransaction = bcs.struct('SenderSignedTransaction', {\n\tintentMessage: IntentMessage(TransactionData),\n\ttxSignatures: bcs.vector(base64String),\n});\n\nconst SenderSignedData = bcs.vector(SenderSignedTransaction, {\n\tname: 'SenderSignedData',\n});\n\nconst suiBcs = {\n\t...bcs,\n\tU8: bcs.u8(),\n\tU16: bcs.u16(),\n\tU32: bcs.u32(),\n\tU64: bcs.u64(),\n\tU128: bcs.u128(),\n\tU256: bcs.u256(),\n\tULEB128: bcs.uleb128(),\n\tBool: bcs.bool(),\n\tString: bcs.string(),\n\tAddress,\n\tArgument,\n\tCallArg,\n\tCompressedSignature,\n\tGasData,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tSuiObjectRef,\n\tTransaction,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeTag,\n\n\t// preserve backwards compatibility with old bcs export\n\tser: bcsRegistry.ser.bind(bcsRegistry),\n\tde: bcsRegistry.de.bind(bcsRegistry),\n\tgetTypeInterface: bcsRegistry.getTypeInterface.bind(bcsRegistry),\n\thasType: bcsRegistry.hasType.bind(bcsRegistry),\n\tparseTypeName: bcsRegistry.parseTypeName.bind(bcsRegistry),\n\tregisterAddressType: bcsRegistry.registerAddressType.bind(bcsRegistry),\n\tregisterAlias: bcsRegistry.registerAlias.bind(bcsRegistry),\n\tregisterBcsType: bcsRegistry.registerBcsType.bind(bcsRegistry),\n\tregisterEnumType: bcsRegistry.registerEnumType.bind(bcsRegistry),\n\tregisterStructType: bcsRegistry.registerStructType.bind(bcsRegistry),\n\tregisterType: bcsRegistry.registerType.bind(bcsRegistry),\n\ttypes: bcsRegistry.types,\n};\n\nbcsRegistry.registerBcsType('utf8string', () => bcs.string({ name: 'utf8string' }));\nbcsRegistry.registerBcsType('unsafe_u64', () => unsafe_u64());\nbcsRegistry.registerBcsType('enumKind', (T) => enumKind(T));\n\n[\n\tAddress,\n\tArgument,\n\tCallArg,\n\tCompressedSignature,\n\tGasData,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSharedObjectRef,\n\tStructTag,\n\tSuiObjectRef,\n\tTransaction,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeTag,\n].forEach((type) => {\n\tbcsRegistry.registerBcsType(type.name, () => type);\n});\n\nexport { suiBcs as bcs, bcsRegistry };\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { splitGenericParameters } from '@mysten/bcs';\n\nimport { normalizeSuiAddress } from '../utils/sui-types.js';\nimport type { TypeTag } from './index.js';\n\nconst VECTOR_REGEX = /^vector<(.+)>$/;\nconst STRUCT_REGEX = /^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;\n\nexport class TypeTagSerializer {\n\tstatic parseFromStr(str: string, normalizeAddress = false): TypeTag {\n\t\tif (str === 'address') {\n\t\t\treturn { address: null };\n\t\t} else if (str === 'bool') {\n\t\t\treturn { bool: null };\n\t\t} else if (str === 'u8') {\n\t\t\treturn { u8: null };\n\t\t} else if (str === 'u16') {\n\t\t\treturn { u16: null };\n\t\t} else if (str === 'u32') {\n\t\t\treturn { u32: null };\n\t\t} else if (str === 'u64') {\n\t\t\treturn { u64: null };\n\t\t} else if (str === 'u128') {\n\t\t\treturn { u128: null };\n\t\t} else if (str === 'u256') {\n\t\t\treturn { u256: null };\n\t\t} else if (str === 'signer') {\n\t\t\treturn { signer: null };\n\t\t}\n\t\tconst vectorMatch = str.match(VECTOR_REGEX);\n\t\tif (vectorMatch) {\n\t\t\treturn {\n\t\t\t\tvector: TypeTagSerializer.parseFromStr(vectorMatch[1], normalizeAddress),\n\t\t\t};\n\t\t}\n\n\t\tconst structMatch = str.match(STRUCT_REGEX);\n\t\tif (structMatch) {\n\t\t\tconst address = normalizeAddress ? normalizeSuiAddress(structMatch[1]) : structMatch[1];\n\t\t\treturn {\n\t\t\t\tstruct: {\n\t\t\t\t\taddress,\n\t\t\t\t\tmodule: structMatch[2],\n\t\t\t\t\tname: structMatch[3],\n\t\t\t\t\ttypeParams:\n\t\t\t\t\t\tstructMatch[5] === undefined\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: TypeTagSerializer.parseStructTypeArgs(structMatch[5], normalizeAddress),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tthrow new Error(`Encountered unexpected token when parsing type args for ${str}`);\n\t}\n\n\tstatic parseStructTypeArgs(str: string, normalizeAddress = false): TypeTag[] {\n\t\treturn splitGenericParameters(str).map((tok) =>\n\t\t\tTypeTagSerializer.parseFromStr(tok, normalizeAddress),\n\t\t);\n\t}\n\n\tstatic tagToString(tag: TypeTag): string {\n\t\tif ('bool' in tag) {\n\t\t\treturn 'bool';\n\t\t}\n\t\tif ('u8' in tag) {\n\t\t\treturn 'u8';\n\t\t}\n\t\tif ('u16' in tag) {\n\t\t\treturn 'u16';\n\t\t}\n\t\tif ('u32' in tag) {\n\t\t\treturn 'u32';\n\t\t}\n\t\tif ('u64' in tag) {\n\t\t\treturn 'u64';\n\t\t}\n\t\tif ('u128' in tag) {\n\t\t\treturn 'u128';\n\t\t}\n\t\tif ('u256' in tag) {\n\t\t\treturn 'u256';\n\t\t}\n\t\tif ('address' in tag) {\n\t\t\treturn 'address';\n\t\t}\n\t\tif ('signer' in tag) {\n\t\t\treturn 'signer';\n\t\t}\n\t\tif ('vector' in tag) {\n\t\t\treturn `vector<${TypeTagSerializer.tagToString(tag.vector)}>`;\n\t\t}\n\t\tif ('struct' in tag) {\n\t\t\tconst struct = tag.struct;\n\t\t\tconst typeParams = struct.typeParams.map(TypeTagSerializer.tagToString).join(', ');\n\t\t\treturn `${struct.address}::${struct.module}::${struct.name}${\n\t\t\t\ttypeParams ? `<${typeParams}>` : ''\n\t\t\t}`;\n\t\t}\n\t\tthrow new Error('Invalid TypeTag');\n\t}\n}\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB64 } from '@mysten/bcs';\nimport type { Infer, Struct } from 'superstruct';\nimport {\n\tany,\n\tarray,\n\tassert,\n\tdefine,\n\tinteger,\n\tis,\n\tliteral,\n\tobject,\n\toptional,\n\trecord,\n\tstring,\n\tunion,\n\tunknown,\n} from 'superstruct';\n\nimport type { TypeTag } from '../bcs/index.js';\nimport { bcs } from '../bcs/index.js';\nimport { TypeTagSerializer } from '../bcs/type-tag-serializer.js';\nimport { normalizeSuiObjectId } from '../utils/sui-types.js';\nimport { Inputs } from './Inputs.js';\nimport { create } from './utils.js';\n\nconst option = <T extends Struct<any, any>>(some: T) =>\n\tunion([object({ None: union([literal(true), literal(null)]) }), object({ Some: some })]);\n\nexport const TransactionBlockInput = union([\n\tobject({\n\t\tkind: literal('Input'),\n\t\tindex: integer(),\n\t\tvalue: optional(any()),\n\t\ttype: optional(literal('object')),\n\t}),\n\tobject({\n\t\tkind: literal('Input'),\n\t\tindex: integer(),\n\t\tvalue: optional(any()),\n\t\ttype: literal('pure'),\n\t}),\n]);\nexport type TransactionBlockInput = Infer<typeof TransactionBlockInput>;\n\nconst TransactionArgumentTypes = [\n\tTransactionBlockInput,\n\tobject({ kind: literal('GasCoin') }),\n\tobject({ kind: literal('Result'), index: integer() }),\n\tobject({\n\t\tkind: literal('NestedResult'),\n\t\tindex: integer(),\n\t\tresultIndex: integer(),\n\t}),\n] as const;\n\n// Generic transaction argument\nexport const TransactionArgument = union([...TransactionArgumentTypes]);\nexport type TransactionArgument = Infer<typeof TransactionArgument>;\n\nexport const MoveCallTransaction = object({\n\tkind: literal('MoveCall'),\n\ttarget: define<`${string}::${string}::${string}`>('target', string().validator),\n\ttypeArguments: array(string()),\n\targuments: array(TransactionArgument),\n});\nexport type MoveCallTransaction = Infer<typeof MoveCallTransaction>;\n\nexport const TransferObjectsTransaction = object({\n\tkind: literal('TransferObjects'),\n\tobjects: array(TransactionArgument),\n\taddress: TransactionArgument,\n});\nexport type TransferObjectsTransaction = Infer<typeof TransferObjectsTransaction>;\n\nexport const SplitCoinsTransaction = object({\n\tkind: literal('SplitCoins'),\n\tcoin: TransactionArgument,\n\tamounts: array(TransactionArgument),\n});\nexport type SplitCoinsTransaction = Infer<typeof SplitCoinsTransaction>;\n\nexport const MergeCoinsTransaction = object({\n\tkind: literal('MergeCoins'),\n\tdestination: TransactionArgument,\n\tsources: array(TransactionArgument),\n});\nexport type MergeCoinsTransaction = Infer<typeof MergeCoinsTransaction>;\n\nexport const MakeMoveVecTransaction = object({\n\tkind: literal('MakeMoveVec'),\n\t// TODO: ideally we should use `TypeTag` instead of `record()` here,\n\t// but TypeTag is recursively defined and it's tricky to define a\n\t// recursive struct in superstruct\n\ttype: optional(option(record(string(), unknown()))) as never as Struct<\n\t\t{ Some: TypeTag } | { None: true | null }\n\t>,\n\tobjects: array(TransactionArgument),\n});\nexport type MakeMoveVecTransaction = Infer<typeof MakeMoveVecTransaction>;\n\nexport const PublishTransaction = object({\n\tkind: literal('Publish'),\n\tmodules: array(array(integer())),\n\tdependencies: array(string()),\n});\nexport type PublishTransaction = Infer<typeof PublishTransaction>;\n\n// Keep in sync with constants in\n// crates/sui-framework/packages/sui-framework/sources/package.move\nexport enum UpgradePolicy {\n\tCOMPATIBLE = 0,\n\tADDITIVE = 128,\n\tDEP_ONLY = 192,\n}\n\nexport const UpgradeTransaction = object({\n\tkind: literal('Upgrade'),\n\tmodules: array(array(integer())),\n\tdependencies: array(string()),\n\tpackageId: string(),\n\tticket: TransactionArgument,\n});\nexport type UpgradeTransaction = Infer<typeof UpgradeTransaction>;\n\nconst TransactionTypes = [\n\tMoveCallTransaction,\n\tTransferObjectsTransaction,\n\tSplitCoinsTransaction,\n\tMergeCoinsTransaction,\n\tPublishTransaction,\n\tUpgradeTransaction,\n\tMakeMoveVecTransaction,\n] as const;\n\nexport const TransactionType = union([...TransactionTypes]);\nexport type TransactionType = Infer<typeof TransactionType>;\n\nexport function getTransactionType(data: unknown) {\n\tassert(data, TransactionType);\n\treturn TransactionTypes.find((schema) => is(data, schema as Struct))!;\n}\n\n/**\n * Simple helpers used to construct transactions:\n */\nexport const Transactions = {\n\tMoveCall(\n\t\tinput: Omit<MoveCallTransaction, 'kind' | 'arguments' | 'typeArguments'> & {\n\t\t\targuments?: TransactionArgument[];\n\t\t\ttypeArguments?: string[];\n\t\t},\n\t): MoveCallTransaction {\n\t\treturn create(\n\t\t\t{\n\t\t\t\tkind: 'MoveCall',\n\t\t\t\ttarget: input.target,\n\t\t\t\targuments: input.arguments ?? [],\n\t\t\t\ttypeArguments: input.typeArguments ?? [],\n\t\t\t},\n\t\t\tMoveCallTransaction,\n\t\t);\n\t},\n\tTransferObjects(\n\t\tobjects: TransactionArgument[],\n\t\taddress: TransactionArgument,\n\t): TransferObjectsTransaction {\n\t\tif (address.kind === 'Input' && address.type === 'pure' && typeof address.value !== 'object') {\n\t\t\taddress.value = Inputs.Pure(bcs.Address.serialize(address.value));\n\t\t}\n\n\t\treturn create({ kind: 'TransferObjects', objects, address }, TransferObjectsTransaction);\n\t},\n\tSplitCoins(coin: TransactionArgument, amounts: TransactionArgument[]): SplitCoinsTransaction {\n\t\t// Handle deprecated usage of `Input.Pure(100)`\n\t\tamounts.forEach((input) => {\n\t\t\tif (input.kind === 'Input' && input.type === 'pure' && typeof input.value !== 'object') {\n\t\t\t\tinput.value = Inputs.Pure(bcs.U64.serialize(input.value));\n\t\t\t}\n\t\t});\n\n\t\treturn create(\n\t\t\t{\n\t\t\t\tkind: 'SplitCoins',\n\t\t\t\tcoin,\n\t\t\t\tamounts,\n\t\t\t},\n\t\t\tSplitCoinsTransaction,\n\t\t);\n\t},\n\tMergeCoins(\n\t\tdestination: TransactionArgument,\n\t\tsources: TransactionArgument[],\n\t): MergeCoinsTransaction {\n\t\treturn create({ kind: 'MergeCoins', destination, sources }, MergeCoinsTransaction);\n\t},\n\tPublish({\n\t\tmodules,\n\t\tdependencies,\n\t}: {\n\t\tmodules: number[][] | string[];\n\t\tdependencies: string[];\n\t}): PublishTransaction {\n\t\treturn create(\n\t\t\t{\n\t\t\t\tkind: 'Publish',\n\t\t\t\tmodules: modules.map((module) =>\n\t\t\t\t\ttypeof module === 'string' ? Array.from(fromB64(module)) : module,\n\t\t\t\t),\n\t\t\t\tdependencies: dependencies.map((dep) => normalizeSuiObjectId(dep)),\n\t\t\t},\n\t\t\tPublishTransaction,\n\t\t);\n\t},\n\tUpgrade({\n\t\tmodules,\n\t\tdependencies,\n\t\tpackageId,\n\t\tticket,\n\t}: {\n\t\tmodules: number[][] | string[];\n\t\tdependencies: string[];\n\t\tpackageId: string;\n\t\tticket: TransactionArgument;\n\t}): UpgradeTransaction {\n\t\treturn create(\n\t\t\t{\n\t\t\t\tkind: 'Upgrade',\n\t\t\t\tmodules: modules.map((module) =>\n\t\t\t\t\ttypeof module === 'string' ? Array.from(fromB64(module)) : module,\n\t\t\t\t),\n\t\t\t\tdependencies: dependencies.map((dep) => normalizeSuiObjectId(dep)),\n\t\t\t\tpackageId,\n\t\t\t\tticket,\n\t\t\t},\n\t\t\tUpgradeTransaction,\n\t\t);\n\t},\n\tMakeMoveVec({\n\t\ttype,\n\t\tobjects,\n\t}: Omit<MakeMoveVecTransaction, 'kind' | 'type'> & {\n\t\ttype?: string;\n\t}): MakeMoveVecTransaction {\n\t\treturn create(\n\t\t\t{\n\t\t\t\tkind: 'MakeMoveVec',\n\t\t\t\ttype: type ? { Some: TypeTagSerializer.parseFromStr(type) } : { None: null },\n\t\t\t\tobjects,\n\t\t\t},\n\t\t\tMakeMoveVecTransaction,\n\t\t);\n\t},\n};\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SerializedBcs } from '@mysten/bcs';\nimport { fromB64, isSerializedBcs } from '@mysten/bcs';\nimport { is, mask } from 'superstruct';\n\nimport { bcs } from '../bcs/index.js';\nimport type { ProtocolConfig, SuiClient, SuiMoveNormalizedType } from '../client/index.js';\nimport type { SignatureWithBytes, Signer } from '../cryptography/index.js';\nimport { SUI_TYPE_ARG } from '../utils/index.js';\nimport { normalizeSuiAddress, normalizeSuiObjectId } from '../utils/sui-types.js';\nimport {\n\tBuilderCallArg,\n\tgetIdFromCallArg,\n\tInputs,\n\tisMutableSharedObjectInput,\n\tObjectCallArg,\n\tPureCallArg,\n\tSuiObjectRef,\n} from './Inputs.js';\nimport { createPure } from './pure.js';\nimport { getPureSerializationType, isTxContext } from './serializer.js';\nimport type { TransactionExpiration } from './TransactionBlockData.js';\nimport { TransactionBlockDataBuilder } from './TransactionBlockData.js';\nimport type { MoveCallTransaction, TransactionArgument, TransactionType } from './Transactions.js';\nimport { TransactionBlockInput, Transactions } from './Transactions.js';\nimport { create, extractMutableReference, extractReference, extractStructTag } from './utils.js';\n\nexport type TransactionObjectArgument = Exclude<\n\tTransactionArgument,\n\t{ kind: 'Input'; type: 'pure' }\n>;\n\nexport type TransactionResult = Extract<TransactionArgument, { kind: 'Result' }> &\n\tExtract<TransactionArgument, { kind: 'NestedResult' }>[];\n\nconst DefaultOfflineLimits = {\n\tmaxPureArgumentSize: 16 * 1024,\n\tmaxTxGas: 50_000_000_000,\n\tmaxGasObjects: 256,\n\tmaxTxSizeBytes: 128 * 1024,\n} satisfies Limits;\n\nfunction createTransactionResult(index: number): TransactionResult {\n\tconst baseResult: TransactionArgument = { kind: 'Result', index };\n\n\tconst nestedResults: TransactionArgument[] = [];\n\tconst nestedResultFor = (resultIndex: number): TransactionArgument =>\n\t\t(nestedResults[resultIndex] ??= {\n\t\t\tkind: 'NestedResult',\n\t\t\tindex,\n\t\t\tresultIndex,\n\t\t});\n\n\treturn new Proxy(baseResult, {\n\t\tset() {\n\t\t\tthrow new Error(\n\t\t\t\t'The transaction result is a proxy, and does not support setting properties directly',\n\t\t\t);\n\t\t},\n\t\t// TODO: Instead of making this return a concrete argument, we should ideally\n\t\t// make it reference-based (so that this gets resolved at build-time), which\n\t\t// allows re-ordering transactions.\n\t\tget(target, property) {\n\t\t\t// This allows this transaction argument to be used in the singular form:\n\t\t\tif (property in target) {\n\t\t\t\treturn Reflect.get(target, property);\n\t\t\t}\n\n\t\t\t// Support destructuring:\n\t\t\tif (property === Symbol.iterator) {\n\t\t\t\treturn function* () {\n\t\t\t\t\tlet i = 0;\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tyield nestedResultFor(i);\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (typeof property === 'symbol') return;\n\n\t\t\tconst resultIndex = parseInt(property, 10);\n\t\t\tif (Number.isNaN(resultIndex) || resultIndex < 0) return;\n\t\t\treturn nestedResultFor(resultIndex);\n\t\t},\n\t}) as TransactionResult;\n}\n\nfunction isReceivingType(normalizedType: SuiMoveNormalizedType): boolean {\n\tconst tag = extractStructTag(normalizedType);\n\tif (tag) {\n\t\treturn (\n\t\t\ttag.Struct.address === '0x2' &&\n\t\t\ttag.Struct.module === 'transfer' &&\n\t\t\ttag.Struct.name === 'Receiving'\n\t\t);\n\t}\n\treturn false;\n}\n\nfunction expectClient(options: BuildOptions): SuiClient {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No provider passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\n\treturn options.client;\n}\n\nconst TRANSACTION_BRAND = Symbol.for('@mysten/transaction');\n\nconst LIMITS = {\n\t// The maximum gas that is allowed.\n\tmaxTxGas: 'max_tx_gas',\n\t// The maximum number of gas objects that can be selected for one transaction.\n\tmaxGasObjects: 'max_gas_payment_objects',\n\t// The maximum size (in bytes) that the transaction can be:\n\tmaxTxSizeBytes: 'max_tx_size_bytes',\n\t// The maximum size (in bytes) that pure arguments can be:\n\tmaxPureArgumentSize: 'max_pure_argument_size',\n} as const;\n\ntype Limits = Partial<Record<keyof typeof LIMITS, number>>;\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;\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\nconst chunk = <T>(arr: T[], size: number): T[][] =>\n\tArray.from({ length: Math.ceil(arr.length / size) }, (_, i) =>\n\t\tarr.slice(i * size, i * size + size),\n\t);\n\ninterface BuildOptions {\n\tclient?: SuiClient;\n\tonlyTransactionKind?: boolean;\n\t/** Define a protocol config to build against, instead of having it fetched from the provider at build time. */\n\tprotocolConfig?: ProtocolConfig;\n\t/** Define limits that are used when building the transaction. In general, we recommend using the protocol configuration instead of defining limits. */\n\tlimits?: Limits;\n}\n\ninterface SignOptions extends BuildOptions {\n\tsigner: Signer;\n}\n\nexport function isTransactionBlock(obj: unknown): obj is TransactionBlock {\n\treturn !!obj && typeof obj === 'object' && (obj as any)[TRANSACTION_BRAND] === true;\n}\n\nexport type TransactionObjectInput = string | ObjectCallArg | TransactionObjectArgument;\n\n/**\n * Transaction Builder\n */\nexport class TransactionBlock {\n\t/**\n\t * Converts from a serialize transaction kind (built with `build({ onlyTransactionKind: true })`) to a `Transaction` class.\n\t * Supports either a byte array, or base64-encoded bytes.\n\t */\n\tstatic fromKind(serialized: string | Uint8Array) {\n\t\tconst tx = new TransactionBlock();\n\n\t\ttx.#blockData = TransactionBlockDataBuilder.fromKindBytes(\n\t\t\ttypeof serialized === 'string' ? fromB64(serialized) : serialized,\n\t\t);\n\n\t\treturn tx;\n\t}\n\n\t/**\n\t * Converts from a serialized transaction format to a `Transaction` class.\n\t * There are two supported serialized formats:\n\t * - A string returned from `Transaction#serialize`. The serialized format must be compatible, or it will throw an error.\n\t * - A byte array (or base64-encoded bytes) containing BCS transaction data.\n\t */\n\tstatic from(serialized: string | Uint8Array) {\n\t\tconst tx = new TransactionBlock();\n\n\t\t// Check for bytes:\n\t\tif (typeof serialized !== 'string' || !serialized.startsWith('{')) {\n\t\t\ttx.#blockData = TransactionBlockDataBuilder.fromBytes(\n\t\t\t\ttypeof serialized === 'string' ? fromB64(serialized) : serialized,\n\t\t\t);\n\t\t} else {\n\t\t\ttx.#blockData = TransactionBlockDataBuilder.restore(JSON.parse(serialized));\n\t\t}\n\n\t\treturn tx;\n\t}\n\n\tsetSender(sender: string) {\n\t\tthis.#blockData.sender = sender;\n\t}\n\t/**\n\t * Sets the sender only if it has not already been set.\n\t * This is useful for sponsored transaction flows where the sender may not be the same as the signer address.\n\t */\n\tsetSenderIfNotSet(sender: string) {\n\t\tif (!this.#blockData.sender) {\n\t\t\tthis.#blockData.sender = sender;\n\t\t}\n\t}\n\tsetExpiration(expiration?: TransactionExpiration) {\n\t\tthis.#blockData.expiration = expiration;\n\t}\n\tsetGasPrice(price: number | bigint) {\n\t\tthis.#blockData.gasConfig.price = String(price);\n\t}\n\tsetGasBudget(budget: number | bigint) {\n\t\tthis.#blockData.gasConfig.budget = String(budget);\n\t}\n\tsetGasOwner(owner: string) {\n\t\tthis.#blockData.gasConfig.owner = owner;\n\t}\n\tsetGasPayment(payments: SuiObjectRef[]) {\n\t\tthis.#blockData.gasConfig.payment = payments.map((payment) => mask(payment, SuiObjectRef));\n\t}\n\n\t#blockData: TransactionBlockDataBuilder;\n\t/** Get a snapshot of the transaction data, in JSON form: */\n\tget blockData() {\n\t\treturn this.#blockData.snapshot();\n\t}\n\n\t// Used to brand transaction classes so that they can be identified, even between multiple copies\n\t// of the builder.\n\tget [TRANSACTION_BRAND]() {\n\t\treturn true;\n\t}\n\n\t// Temporary workaround for the wallet interface accidentally serializing transaction blocks via postMessage\n\tget pure(): ReturnType<typeof createPure> {\n\t\tObject.defineProperty(this, 'pure', {\n\t\t\tenumerable: false,\n\t\t\tvalue: createPure((value, type) => {\n\t\t\t\tif (isSerializedBcs(value)) {\n\t\t\t\t\treturn this.#input('pure', {\n\t\t\t\t\t\tPure: Array.from(value.toBytes()),\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// TODO: we can also do some deduplication here\n\t\t\t\treturn this.#input(\n\t\t\t\t\t'pure',\n\t\t\t\t\tvalue instanceof Uint8Array\n\t\t\t\t\t\t? Inputs.Pure(value)\n\t\t\t\t\t\t: type\n\t\t\t\t\t\t? Inputs.Pure(value, type)\n\t\t\t\t\t\t: value,\n\t\t\t\t);\n\t\t\t}),\n\t\t});\n\n\t\treturn this.pure;\n\t}\n\n\tconstructor(transaction?: TransactionBlock) {\n\t\tthis.#blockData = new TransactionBlockDataBuilder(\n\t\t\ttransaction ? transaction.blockData : undefined,\n\t\t);\n\t}\n\n\t/** Returns an argument for the gas coin, to be used in a transaction. */\n\tget gas(): TransactionObjectArgument {\n\t\treturn { kind: 'GasCoin' };\n\t}\n\n\t/**\n\t * Dynamically create a new input, which is separate from the `input`. This is important\n\t * for generated clients to be able to define unique inputs that are non-overlapping with the\n\t * defined inputs.\n\t *\n\t * For `Uint8Array` type automatically convert the input into a `Pure` CallArg, since this\n\t * is the format required for custom serialization.\n\t *\n\t */\n\t#input<T extends 'object' | 'pure'>(type: T, value?: unknown) {\n\t\tconst index = this.#blockData.inputs.length;\n\t\tconst input = create(\n\t\t\t{\n\t\t\t\tkind: 'Input',\n\t\t\t\t// bigints can't be serialized to JSON, so just string-convert them here:\n\t\t\t\tvalue: typeof value === 'bigint' ? String(value) : value,\n\t\t\t\tindex,\n\t\t\t\ttype,\n\t\t\t},\n\t\t\tTransactionBlockInput,\n\t\t);\n\t\tthis.#blockData.inputs.push(input);\n\t\treturn input as Extract<typeof input, { type: T }>;\n\t}\n\n\t/**\n\t * Add a new object input to the transaction.\n\t */\n\tobject(value: TransactionObjectInput) {\n\t\tif (typeof value === 'object' && 'kind' in value) {\n\t\t\treturn value;\n\t\t}\n\n\t\tconst id = getIdFromCallArg(value);\n\n\t\tconst inserted = this.#blockData.inputs.find(\n\t\t\t(i) => i.type === 'object' && id === getIdFromCallArg(i.value),\n\t\t) as Extract<TransactionArgument, { type?: 'object' }> | undefined;\n\n\t\t// Upgrade shared object inputs to mutable if needed:\n\t\tif (\n\t\t\tinserted &&\n\t\t\tis(inserted.value, ObjectCallArg) &&\n\t\t\t'Shared' in inserted.value.Object &&\n\t\t\tis(value, ObjectCallArg) &&\n\t\t\t'Shared' in value.Object\n\t\t) {\n\t\t\tinserted.value.Object.Shared.mutable =\n\t\t\t\tinserted.value.Object.Shared.mutable || value.Object.Shared.mutable;\n\t\t}\n\n\t\treturn (\n\t\t\tinserted ??\n\t\t\tthis.#input('object', typeof value === 'string' ? normalizeSuiAddress(value) : value)\n\t\t);\n\t}\n\n\t/**\n\t * Add a new object input to the transaction using the fully-resolved object reference.\n\t * If you only have an object ID, use `builder.object(id)` instead.\n\t */\n\tobjectRef(...args: Parameters<(typeof Inputs)['ObjectRef']>) {\n\t\treturn this.object(Inputs.ObjectRef(...args));\n\t}\n\n\t/**\n\t * Add a new receiving input to the transaction using the fully-resolved object reference.\n\t * If you only have an object ID, use `builder.object(id)` instead.\n\t */\n\treceivingRef(...args: Parameters<(typeof Inputs)['ReceivingRef']>) {\n\t\treturn this.object(Inputs.ReceivingRef(...args));\n\t}\n\n\t/**\n\t * Add a new shared object input to the transaction using the fully-resolved shared object reference.\n\t * If you only have an object ID, use `builder.object(id)` instead.\n\t */\n\tsharedObjectRef(...args: Parameters<(typeof Inputs)['SharedObjectRef']>) {\n\t\treturn this.object(Inputs.SharedObjectRef(...args));\n\t}\n\n\t/** Add a transaction to the transaction block. */\n\tadd(transaction: TransactionType) {\n\t\tconst index = this.#blockData.transactions.push(transaction);\n\t\treturn createTransactionResult(index - 1);\n\t}\n\n\t#normalizeTransactionArgument(\n\t\targ: TransactionArgument | SerializedBcs<any>,\n\t): TransactionArgument {\n\t\tif (isSerializedBcs(arg)) {\n\t\t\treturn this.pure(arg);\n\t\t}\n\n\t\treturn arg as TransactionArgument;\n\t}\n\n\t// Method shorthands:\n\n\tsplitCoins(\n\t\tcoin: TransactionObjectArgument | string,\n\t\tamounts: (TransactionArgument | SerializedBcs<any> | number | string | bigint)[],\n\t) {\n\t\treturn this.add(\n\t\t\tTransactions.SplitCoins(\n\t\t\t\ttypeof coin === 'string' ? this.object(coin) : coin,\n\t\t\t\tamounts.map((amount) =>\n\t\t\t\t\ttypeof amount === 'number' || typeof amount === 'bigint' || typeof amount === 'string'\n\t\t\t\t\t\t? this.pure.u64(amount)\n\t\t\t\t\t\t: this.#normalizeTransactionArgument(amount),\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t}\n\tmergeCoins(\n\t\tdestination: TransactionObjectArgument | string,\n\t\tsources: (TransactionObjectArgument | string)[],\n\t) {\n\t\treturn this.add(\n\t\t\tTransactions.MergeCoins(\n\t\t\t\ttypeof destination === 'string' ? this.object(destination) : destination,\n\t\t\t\tsources.map((src) => (typeof src === 'string' ? this.object(src) : src)),\n\t\t\t),\n\t\t);\n\t}\n\tpublish({ modules, dependencies }: { modules: number[][] | string[]; dependencies: string[] }) {\n\t\treturn this.add(\n\t\t\tTransactions.Publish({\n\t\t\t\tmodules,\n\t\t\t\tdependencies,\n\t\t\t}),\n\t\t);\n\t}\n\tupgrade({\n\t\tmodules,\n\t\tdependencies,\n\t\tpackageId,\n\t\tticket,\n\t}: {\n\t\tmodules: number[][] | string[];\n\t\tdependencies: string[];\n\t\tpackageId: string;\n\t\tticket: TransactionObjectArgument | string;\n\t}) {\n\t\treturn this.add(\n\t\t\tTransactions.Upgrade({\n\t\t\t\tmodules,\n\t\t\t\tdependencies,\n\t\t\t\tpackageId,\n\t\t\t\tticket: typeof ticket === 'string' ? this.object(ticket) : ticket,\n\t\t\t}),\n\t\t);\n\t}\n\tmoveCall({\n\t\targuments: args,\n\t\ttypeArguments,\n\t\ttarget,\n\t}: {\n\t\targuments?: (TransactionArgument | SerializedBcs<any>)[];\n\t\ttypeArguments?: string[];\n\t\ttarget: `${string}::${string}::${string}`;\n\t}) {\n\t\treturn this.add(\n\t\t\tTransactions.MoveCall({\n\t\t\t\targuments: args?.map((arg) => this.#normalizeTransactionArgument(arg)),\n\t\t\t\ttypeArguments,\n\t\t\t\ttarget,\n\t\t\t}),\n\t\t);\n\t}\n\ttransferObjects(\n\t\tobjects: (TransactionObjectArgument | string)[],\n\t\taddress: TransactionArgument | SerializedBcs<any> | string,\n\t) {\n\t\treturn this.add(\n\t\t\tTransactions.TransferObjects(\n\t\t\t\tobjects.map((obj) => (typeof obj === 'string' ? this.object(obj) : obj)),\n\t\t\t\ttypeof address === 'string'\n\t\t\t\t\t? this.pure.address(address)\n\t\t\t\t\t: this.#normalizeTransactionArgument(address),\n\t\t\t),\n\t\t);\n\t}\n\tmakeMoveVec({\n\t\ttype,\n\t\tobjects,\n\t}: {\n\t\tobjects: (TransactionObjectArgument | string)[];\n\t\ttype?: string;\n\t}) {\n\t\treturn this.add(\n\t\t\tTransactions.MakeMoveVec({\n\t\t\t\ttype,\n\t\t\t\tobjects: objects.map((obj) => (typeof obj === 'string' ? this.object(obj) : obj)),\n\t\t\t}),\n\t\t);\n\t}\n\n\t/**\n\t * Serialize the transaction to a string so that it can be sent to a separate context.\n\t * This is different from `build` in that it does not serialize to BCS bytes, and instead\n\t * uses a separate format that is unique to the transaction builder. This allows\n\t * us to serialize partially-complete transactions, that can then be completed and\n\t * built in a separate context.\n\t *\n\t * For example, a dapp can construct a transaction, but not provide gas objects\n\t * or a gas budget. The transaction then can be sent to the wallet, where this\n\t * information is automatically filled in (e.g. by querying for coin objects\n\t * and performing a dry run).\n\t */\n\tserialize() {\n\t\treturn JSON.stringify(this.#blockData.snapshot());\n\t}\n\n\t#getConfig(key: keyof typeof LIMITS, { protocolConfig, limits }: BuildOptions) {\n\t\t// Use the limits definition if that exists:\n\t\tif (limits && typeof limits[key] === 'number') {\n\t\t\treturn limits[key]!;\n\t\t}\n\n\t\tif (!protocolConfig) {\n\t\t\treturn DefaultOfflineLimits[key];\n\t\t}\n\n\t\t// Fallback to protocol config:\n\t\tconst attribute = protocolConfig?.attributes[LIMITS[key]];\n\t\tif (!attribute) {\n\t\t\tthrow new Error(`Missing expected protocol config: \"${LIMITS[key]}\"`);\n\t\t}\n\n\t\tconst value =\n\t\t\t'u64' in attribute ? attribute.u64 : 'u32' in attribute ? attribute.u32 : attribute.f64;\n\n\t\tif (!value) {\n\t\t\tthrow new Error(`Unexpected protocol config value found for: \"${LIMITS[key]}\"`);\n\t\t}\n\n\t\t// NOTE: Technically this is not a safe conversion, but we know all of the values in protocol config are safe\n\t\treturn Number(value);\n\t}\n\n\t/** Build the transaction to BCS bytes, and sign it with the provided keypair. */\n\tasync sign(options: SignOptions): Promise<SignatureWithBytes> {\n\t\tconst { signer, ...buildOptions } = options;\n\t\tconst bytes = await this.build(buildOptions);\n\t\treturn signer.signTransactionBlock(bytes);\n\t}\n\n\t/** Build the transaction to BCS bytes. */\n\tasync build(options: BuildOptions = {}): Promise<Uint8Array> {\n\t\tawait this.#prepare(options);\n\t\treturn this.#blockData.build({\n\t\t\tmaxSizeBytes: this.#getConfig('maxTxSizeBytes', options),\n\t\t\tonlyTransactionKind: options.onlyTransactionKind,\n\t\t});\n\t}\n\n\t/** Derive transaction digest */\n\tasync getDigest(\n\t\toptions: {\n\t\t\tclient?: SuiClient;\n\t\t} = {},\n\t): Promise<string> {\n\t\tawait this.#prepare(options);\n\t\treturn this.#blockData.getDigest();\n\t}\n\n\t#validate(options: BuildOptions) {\n\t\tconst maxPureArgumentSize = this.#getConfig('maxPureArgumentSize', options);\n\t\t// Validate all inputs are the correct size:\n\t\tthis.#blockData.inputs.forEach((input, index) => {\n\t\t\tif (is(input.value, PureCallArg)) {\n\t\t\t\tif (input.value.Pure.length > maxPureArgumentSize) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Input at index ${index} is too large, max pure input size is ${maxPureArgumentSize} bytes, got ${input.value.Pure.length} bytes`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t// The current default is just picking _all_ coins we can which may not be ideal.\n\tasync #prepareGasPayment(options: BuildOptions) {\n\t\tif (this.#blockData.gasConfig.payment) {\n\t\t\tconst maxGasObjects = this.#getConfig('maxGasObjects', options);\n\t\t\tif (this.#blockData.gasConfig.payment.length > maxGasObjects) {\n\t\t\t\tthrow new Error(`Payment objects exceed maximum amount: ${maxGasObjects}`);\n\t\t\t}\n\t\t}\n\n\t\t// Early return if the payment is already set:\n\t\tif (options.onlyTransactionKind || this.#blockData.gasConfig.payment) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst gasOwner = this.#blockData.gasConfig.owner ?? this.#blockData.sender;\n\n\t\tconst coins = await expectClient(options).getCoins({\n\t\t\towner: gasOwner!,\n\t\t\tcoinType: SUI_TYPE_ARG,\n\t\t});\n\n\t\tconst paymentCoins = coins.data\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 = this.#blockData.inputs.find((input) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tis(input.value, BuilderCallArg) &&\n\t\t\t\t\t\t'Object' in input.value &&\n\t\t\t\t\t\t'ImmOrOwned' in input.value.Object\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn coin.coinObjectId === input.value.Object.ImmOrOwned.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.slice(0, this.#getConfig('maxGasObjects', options) - 1)\n\t\t\t.map((coin) => ({\n\t\t\t\tobjectId: coin.coinObjectId,\n\t\t\t\tdigest: coin.digest,\n\t\t\t\tversion: coin.version,\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\tthis.setGasPayment(paymentCoins);\n\t}\n\n\tasync #prepareGasPrice(options: BuildOptions) {\n\t\tif (options.onlyTransactionKind || this.#blockData.gasConfig.price) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setGasPrice(await expectClient(options).getReferenceGasPrice());\n\t}\n\n\tasync #prepareTransactions(options: BuildOptions) {\n\t\tconst { inputs, transactions } = this.#blockData;\n\n\t\tconst moveModulesToResolve: MoveCallTransaction[] = [];\n\n\t\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t\t// We keep the input by-reference to avoid needing to re-resolve it:\n\t\tconst objectsToResolve: {\n\t\t\tid: string;\n\t\t\tinput: TransactionBlockInput;\n\t\t\tnormalizedType?: SuiMoveNormalizedType;\n\t\t}[] = [];\n\n\t\tinputs.forEach((input) => {\n\t\t\tif (input.type === 'object' && typeof input.value === 'string') {\n\t\t\t\t// The input is a string that we need to resolve to an object reference:\n\t\t\t\tobjectsToResolve.push({ id: normalizeSuiAddress(input.value), input });\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\n\t\ttransactions.forEach((transaction) => {\n\t\t\t// Special case move call:\n\t\t\tif (transaction.kind === 'MoveCall') {\n\t\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t\t// - If they don't, then this is good to go.\n\t\t\t\t// - If they do, then we need to fetch the normalized move module.\n\t\t\t\tconst needsResolution = transaction.arguments.some(\n\t\t\t\t\t(arg) => arg.kind === 'Input' && !is(inputs[arg.index].value, BuilderCallArg),\n\t\t\t\t);\n\n\t\t\t\tif (needsResolution) {\n\t\t\t\t\tmoveModulesToResolve.push(transaction);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Special handling for values that where previously encoded using the wellKnownEncoding pattern.\n\t\t\t// This should only happen when transaction block data was hydrated from an old version of the SDK\n\t\t\tif (transaction.kind === 'SplitCoins') {\n\t\t\t\ttransaction.amounts.forEach((amount) => {\n\t\t\t\t\tif (amount.kind === 'Input') {\n\t\t\t\t\t\tconst input = inputs[amount.index];\n\t\t\t\t\t\tif (typeof input.value !== 'object') {\n\t\t\t\t\t\t\tinput.value = Inputs.Pure(bcs.U64.serialize(input.value));\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\tif (transaction.kind === 'TransferObjects') {\n\t\t\t\tif (transaction.address.kind === 'Input') {\n\t\t\t\t\tconst input = inputs[transaction.address.index];\n\t\t\t\t\tif (typeof input.value !== 'object') {\n\t\t\t\t\t\tinput.value = Inputs.Pure(bcs.Address.serialize(input.value));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (moveModulesToResolve.length) {\n\t\t\tawait Promise.all(\n\t\t\t\tmoveModulesToResolve.map(async (moveCall) => {\n\t\t\t\t\tconst [packageId, moduleName, functionName] = moveCall.target.split('::');\n\n\t\t\t\t\tconst normalized = await expectClient(options).getNormalizedMoveFunction({\n\t\t\t\t\t\tpackage: normalizeSuiObjectId(packageId),\n\t\t\t\t\t\tmodule: moduleName,\n\t\t\t\t\t\tfunction: functionName,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\t\tconst hasTxContext =\n\t\t\t\t\t\tnormalized.parameters.length > 0 && isTxContext(normalized.parameters.at(-1)!);\n\n\t\t\t\t\tconst params = hasTxContext\n\t\t\t\t\t\t? normalized.parameters.slice(0, normalized.parameters.length - 1)\n\t\t\t\t\t\t: normalized.parameters;\n\n\t\t\t\t\tif (params.length !== moveCall.arguments.length) {\n\t\t\t\t\t\tthrow new Error('Incorrect number of arguments.');\n\t\t\t\t\t}\n\n\t\t\t\t\tparams.forEach((param, i) => {\n\t\t\t\t\t\tconst arg = moveCall.arguments[i];\n\t\t\t\t\t\tif (arg.kind !== 'Input') return;\n\t\t\t\t\t\tconst input = inputs[arg.index];\n\t\t\t\t\t\t// Skip if the input is already resolved\n\t\t\t\t\t\tif (is(input.value, BuilderCallArg)) return;\n\n\t\t\t\t\t\tconst inputValue = input.value;\n\n\t\t\t\t\t\tconst serType = getPureSerializationType(param, inputValue);\n\n\t\t\t\t\t\tif (serType) {\n\t\t\t\t\t\t\tinput.value = Inputs.Pure(inputValue, serType);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst structVal = extractStructTag(param);\n\t\t\t\t\t\tif (structVal != null || (typeof param === 'object' && 'TypeParameter' in param)) {\n\t\t\t\t\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t)}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tobjectsToResolve.push({\n\t\t\t\t\t\t\t\tid: inputValue,\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tnormalizedType: param,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unknown call arg type ${JSON.stringify(param, null, 2)} for value ${JSON.stringify(\n\t\t\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t)}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (objectsToResolve.length) {\n\t\t\tconst dedupedIds = [...new Set(objectsToResolve.map(({ id }) => id))];\n\t\t\tconst objectChunks = chunk(dedupedIds, MAX_OBJECTS_PER_FETCH);\n\t\t\tconst objects = (\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tobjectChunks.map((chunk) =>\n\t\t\t\t\t\texpectClient(options).multiGetObjects({\n\t\t\t\t\t\t\tids: chunk,\n\t\t\t\t\t\t\toptions: { showOwner: true },\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t).flat();\n\n\t\t\tlet objectsById = new Map(\n\t\t\t\tdedupedIds.map((id, index) => {\n\t\t\t\t\treturn [id, objects[index]];\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\tconst invalidObjects = Array.from(objectsById)\n\t\t\t\t.filter(([_, obj]) => obj.error)\n\t\t\t\t.map(([id, _]) => id);\n\t\t\tif (invalidObjects.length) {\n\t\t\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t\t\t}\n\n\t\t\tobjectsToResolve.forEach(({ id, input, normalizedType }) => {\n\t\t\t\tconst object = objectsById.get(id)!;\n\t\t\t\tconst owner = object.data?.owner;\n\t\t\t\tconst initialSharedVersion =\n\t\t\t\t\towner && typeof owner === 'object' && 'Shared' in owner\n\t\t\t\t\t\t? owner.Shared.initial_shared_version\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tif (initialSharedVersion) {\n\t\t\t\t\t// There could be multiple transactions that reference the same shared object.\n\t\t\t\t\t// If one of them is a mutable reference or taken by value, then we should mark the input\n\t\t\t\t\t// as mutable.\n\t\t\t\t\tconst isByValue =\n\t\t\t\t\t\tnormalizedType != null &&\n\t\t\t\t\t\textractMutableReference(normalizedType) == null &&\n\t\t\t\t\t\textractReference(normalizedType) == null;\n\t\t\t\t\tconst mutable =\n\t\t\t\t\t\tisMutableSharedObjectInput(input.value) ||\n\t\t\t\t\t\tisByValue ||\n\t\t\t\t\t\t(normalizedType != null && extractMutableReference(normalizedType) != null);\n\n\t\t\t\t\tinput.value = Inputs.SharedObjectRef({\n\t\t\t\t\t\tobjectId: id,\n\t\t\t\t\t\tinitialSharedVersion,\n\t\t\t\t\t\tmutable,\n\t\t\t\t\t});\n\t\t\t\t} else if (normalizedType && isReceivingType(normalizedType)) {\n\t\t\t\t\tinput.value = Inputs.ReceivingRef(object.data!);\n\t\t\t\t} else {\n\t\t\t\t\tinput.value = Inputs.ObjectRef(object.data!);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Prepare the transaction by valdiating the transaction data and resolving all inputs\n\t * so that it can be built into bytes.\n\t */\n\tasync #prepare(options: BuildOptions) {\n\t\tif (!options.onlyTransactionKind && !this.#blockData.sender) {\n\t\t\tthrow new Error('Missing transaction sender');\n\t\t}\n\n\t\tif (!options.protocolConfig && !options.limits && options.client) {\n\t\t\toptions.protocolConfig = await options.client.getProtocolConfig();\n\t\t}\n\n\t\tawait Promise.all([this.#prepareGasPrice(options), this.#prepareTransactions(options)]);\n\n\t\tif (!options.onlyTransactionKind) {\n\t\t\tawait this.#prepareGasPayment(options);\n\n\t\t\tif (!this.#blockData.gasConfig.budget) {\n\t\t\t\tconst dryRunResult = await expectClient(options).dryRunTransactionBlock({\n\t\t\t\t\ttransactionBlock: this.#blockData.build({\n\t\t\t\t\t\tmaxSizeBytes: this.#getConfig('maxTxSizeBytes', options),\n\t\t\t\t\t\toverrides: {\n\t\t\t\t\t\t\tgasConfig: {\n\t\t\t\t\t\t\t\tbudget: String(this.#getConfig('maxTxGas', options)),\n\t\t\t\t\t\t\t\tpayment: [],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\tif (dryRunResult.effects.status.status !== 'success') {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Dry run failed, could not automatically determine a budget: ${dryRunResult.effects.status.error}`,\n\t\t\t\t\t\t{ cause: dryRunResult },\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(this.blockData.gasConfig.price || 1n);\n\n\t\t\t\tconst baseComputationCostWithOverhead =\n\t\t\t\t\tBigInt(dryRunResult.effects.gasUsed.computationCost) + safeOverhead;\n\n\t\t\t\tconst gasBudget =\n\t\t\t\t\tbaseComputationCostWithOverhead +\n\t\t\t\t\tBigInt(dryRunResult.effects.gasUsed.storageCost) -\n\t\t\t\t\tBigInt(dryRunResult.effects.gasUsed.storageRebate);\n\n\t\t\t\t// Set the budget to max(computation, computation + storage - rebate)\n\t\t\t\tthis.setGasBudget(\n\t\t\t\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Perform final validation on the transaction:\n\t\tthis.#validate(options);\n\t}\n}\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SerializedBcs } from '@mysten/bcs';\n\nimport { bcs } from '../bcs/index.js';\nimport type { TransactionBlockInput } from './Transactions.js';\n\nexport function createPure(\n\tmakePure: (value: unknown, type?: string | undefined) => TransactionBlockInput,\n) {\n\t/**\n\t * Add a new non-object input to the transaction.\n\t */\n\tfunction pure(\n\t\t/**\n\t\t * The pure value, serialized to BCS. If this is a Uint8Array, then the value\n\t\t * is assumed to be raw bytes, and will be used directly.\n\t\t */\n\t\tvalue: SerializedBcs<any, any> | Uint8Array,\n\t): TransactionBlockInput;\n\t/**\n\t * @deprecated Pass the pure value as SerializedBcs instead.\n\t */\n\tfunction pure(\n\t\t/**\n\t\t * The pure value that will be used as the input value. If this is a Uint8Array, then the value\n\t\t * is assumed to be raw bytes, and will be used directly.\n\t\t */\n\t\tvalue: unknown,\n\t\t/**\n\t\t * The BCS type to serialize the value into. If not provided, the type will automatically be determined\n\t\t * based on how the input is used.\n\t\t */\n\t\ttype?: string,\n\t): TransactionBlockInput;\n\n\tfunction pure(value: unknown, type?: string): TransactionBlockInput {\n\t\treturn makePure(value, type);\n\t}\n\n\tpure.u8 = (value: number) => makePure(bcs.U8.serialize(value));\n\tpure.u16 = (value: number) => makePure(bcs.U16.serialize(value));\n\tpure.u32 = (value: number) => makePure(bcs.U32.serialize(value));\n\tpure.u64 = (value: bigint | number | string) => makePure(bcs.U64.serialize(value));\n\tpure.u128 = (value: bigint | number | string) => makePure(bcs.U128.serialize(value));\n\tpure.u256 = (value: bigint | number | string) => makePure(bcs.U256.serialize(value));\n\tpure.bool = (value: boolean) => makePure(bcs.Bool.serialize(value));\n\tpure.string = (value: string) => makePure(bcs.String.serialize(value));\n\tpure.address = (value: string) => makePure(bcs.Address.serialize(value));\n\tpure.id = pure.address;\n\n\treturn pure;\n}\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB58 } from '@mysten/bcs';\nimport type { Infer } from 'superstruct';\nimport {\n\tarray,\n\tassert,\n\tdefine,\n\tinteger,\n\tis,\n\tliteral,\n\tnullable,\n\tobject,\n\toptional,\n\tstring,\n\tunion,\n} from 'superstruct';\n\nimport { bcs } from '../bcs/index.js';\nimport { normalizeSuiAddress } from '../utils/sui-types.js';\nimport { hashTypedData } from './hash.js';\nimport { BuilderCallArg, PureCallArg, SuiObjectRef } from './Inputs.js';\nimport { TransactionBlockInput, TransactionType } from './Transactions.js';\nimport { create } from './utils.js';\n\nexport const TransactionExpiration = optional(\n\tnullable(\n\t\tunion([object({ Epoch: integer() }), object({ None: union([literal(true), literal(null)]) })]),\n\t),\n);\nexport type TransactionExpiration = Infer<typeof TransactionExpiration>;\n\nconst StringEncodedBigint = define<string | number | bigint>('StringEncodedBigint', (val) => {\n\tif (!['string', 'number', 'bigint'].includes(typeof val)) return false;\n\n\ttry {\n\t\tBigInt(val as string);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n});\n\nconst GasConfig = object({\n\tbudget: optional(StringEncodedBigint),\n\tprice: optional(StringEncodedBigint),\n\tpayment: optional(array(SuiObjectRef)),\n\towner: optional(string()),\n});\ntype GasConfig = Infer<typeof GasConfig>;\n\nexport const SerializedTransactionDataBuilder = object({\n\tversion: literal(1),\n\tsender: optional(string()),\n\texpiration: TransactionExpiration,\n\tgasConfig: GasConfig,\n\tinputs: array(TransactionBlockInput),\n\ttransactions: array(TransactionType),\n});\nexport type SerializedTransactionDataBuilder = Infer<typeof SerializedTransactionDataBuilder>;\n\nfunction prepareSuiAddress(address: string) {\n\treturn normalizeSuiAddress(address).replace('0x', '');\n}\n\nexport class TransactionBlockDataBuilder {\n\tstatic fromKindBytes(bytes: Uint8Array) {\n\t\tconst kind = bcs.TransactionKind.parse(bytes);\n\t\tconst programmableTx = 'ProgrammableTransaction' in kind ? kind.ProgrammableTransaction : null;\n\t\tif (!programmableTx) {\n\t\t\tthrow new Error('Unable to deserialize from bytes.');\n\t\t}\n\n\t\tconst serialized = create(\n\t\t\t{\n\t\t\t\tversion: 1,\n\t\t\t\tgasConfig: {},\n\t\t\t\tinputs: programmableTx.inputs.map((value: unknown, index: number) =>\n\t\t\t\t\tcreate(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkind: 'Input',\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\ttype: is(value, PureCallArg) ? 'pure' : 'object',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTransactionBlockInput,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\ttransactions: programmableTx.transactions,\n\t\t\t},\n\t\t\tSerializedTransactionDataBuilder,\n\t\t);\n\n\t\treturn TransactionBlockDataBuilder.restore(serialized);\n\t}\n\n\tstatic fromBytes(bytes: Uint8Array) {\n\t\tconst rawData = bcs.TransactionData.parse(bytes);\n\t\tconst data = rawData?.V1;\n\t\tconst programmableTx =\n\t\t\t'ProgrammableTransaction' in data.kind ? data?.kind?.ProgrammableTransaction : null;\n\t\tif (!data || !programmableTx) {\n\t\t\tthrow new Error('Unable to deserialize from bytes.');\n\t\t}\n\n\t\tconst serialized = create(\n\t\t\t{\n\t\t\t\tversion: 1,\n\t\t\t\tsender: data.sender,\n\t\t\t\texpiration: data.expiration,\n\t\t\t\tgasConfig: data.gasData,\n\t\t\t\tinputs: programmableTx.inputs.map((value: unknown, index: number) =>\n\t\t\t\t\tcreate(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkind: 'Input',\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\ttype: is(value, PureCallArg) ? 'pure' : 'object',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTransactionBlockInput,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\ttransactions: programmableTx.transactions,\n\t\t\t},\n\t\t\tSerializedTransactionDataBuilder,\n\t\t);\n\n\t\treturn TransactionBlockDataBuilder.restore(serialized);\n\t}\n\n\tstatic restore(data: SerializedTransactionDataBuilder) {\n\t\tassert(data, SerializedTransactionDataBuilder);\n\t\tconst transactionData = new TransactionBlockDataBuilder();\n\t\tObject.assign(transactionData, data);\n\t\treturn transactionData;\n\t}\n\n\t/**\n\t * Generate transaction digest.\n\t *\n\t * @param bytes BCS serialized transaction data\n\t * @returns transaction digest.\n\t */\n\tstatic getDigestFromBytes(bytes: Uint8Array) {\n\t\tconst hash = hashTypedData('TransactionData', bytes);\n\t\treturn toB58(hash);\n\t}\n\n\tversion = 1 as const;\n\tsender?: string;\n\texpiration?: TransactionExpiration;\n\tgasConfig: GasConfig;\n\tinputs: TransactionBlockInput[];\n\ttransactions: TransactionType[];\n\n\tconstructor(clone?: SerializedTransactionDataBuilder) {\n\t\tthis.sender = clone?.sender;\n\t\tthis.expiration = clone?.expiration;\n\t\tthis.gasConfig = clone?.gasConfig ?? {};\n\t\tthis.inputs = clone?.inputs ?? [];\n\t\tthis.transactions = clone?.transactions ?? [];\n\t}\n\n\tbuild({\n\t\tmaxSizeBytes = Infinity,\n\t\toverrides,\n\t\tonlyTransactionKind,\n\t}: {\n\t\tmaxSizeBytes?: number;\n\t\toverrides?: Pick<Partial<TransactionBlockDataBuilder>, 'sender' | 'gasConfig' | 'expiration'>;\n\t\tonlyTransactionKind?: boolean;\n\t} = {}) {\n\t\t// Resolve inputs down to values:\n\t\tconst inputs = this.inputs.map((input) => {\n\t\t\tassert(input.value, BuilderCallArg);\n\t\t\treturn input.value;\n\t\t});\n\n\t\tconst kind = {\n\t\t\tProgrammableTransaction: {\n\t\t\t\tinputs,\n\t\t\t\ttransactions: this.transactions,\n\t\t\t},\n\t\t};\n\n\t\tif (onlyTransactionKind) {\n\t\t\treturn bcs.TransactionKind.serialize(kind, { maxSize: maxSizeBytes }).toBytes();\n\t\t}\n\n\t\tconst expiration = overrides?.expiration ?? this.expiration;\n\t\tconst sender = overrides?.sender ?? this.sender;\n\t\tconst gasConfig = { ...this.gasConfig, ...overrides?.gasConfig };\n\n\t\tif (!sender) {\n\t\t\tthrow new Error('Missing transaction sender');\n\t\t}\n\n\t\tif (!gasConfig.budget) {\n\t\t\tthrow new Error('Missing gas budget');\n\t\t}\n\n\t\tif (!gasConfig.payment) {\n\t\t\tthrow new Error('Missing gas payment');\n\t\t}\n\n\t\tif (!gasConfig.price) {\n\t\t\tthrow new Error('Missing gas price');\n\t\t}\n\n\t\tconst transactionData = {\n\t\t\tsender: prepareSuiAddress(sender),\n\t\t\texpiration: expiration ? expiration : { None: true },\n\t\t\tgasData: {\n\t\t\t\tpayment: gasConfig.payment,\n\t\t\t\towner: prepareSuiAddress(this.gasConfig.owner ?? sender),\n\t\t\t\tprice: BigInt(gasConfig.price),\n\t\t\t\tbudget: BigInt(gasConfig.budget),\n\t\t\t},\n\t\t\tkind: {\n\t\t\t\tProgrammableTransaction: {\n\t\t\t\t\tinputs,\n\t\t\t\t\ttransactions: this.transactions,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn bcs.TransactionData.serialize(\n\t\t\t{ V1: transactionData },\n\t\t\t{ maxSize: maxSizeBytes },\n\t\t).toBytes();\n\t}\n\n\tgetDigest() {\n\t\tconst bytes = this.build({ onlyTransactionKind: false });\n\t\treturn TransactionBlockDataBuilder.getDigestFromBytes(bytes);\n\t}\n\n\tsnapshot(): SerializedTransactionDataBuilder {\n\t\treturn create(this, SerializedTransactionDataBuilder);\n\t}\n}\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n  return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n  if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n  if (!isBytes(b)) throw new Error('Uint8Array expected');\n  if (lengths.length > 0 && !lengths.includes(b.length))\n    throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Asserts something is hash */\nexport function ahash(h: IHash): void {\n  if (typeof h !== 'function' || typeof h.create !== 'function')\n    throw new Error('Hash should be wrapped by utils.createHasher');\n  anumber(h.outputLen);\n  anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n  if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n  if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n  abytes(out);\n  const min = instance.outputLen;\n  if (out.length < min) {\n    throw new Error('digestInto() expects output buffer of length at least ' + min);\n  }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n  Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n  return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n  return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n  for (let i = 0; i < arrays.length; i++) {\n    arrays[i].fill(0);\n  }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n  return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n  return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n  return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n  new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n  return (\n    ((word << 24) & 0xff000000) |\n    ((word << 8) & 0xff0000) |\n    ((word >>> 8) & 0xff00) |\n    ((word >>> 24) & 0xff)\n  );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n  ? (n: number) => n\n  : (n: number) => byteSwap(n);\n\n/** @deprecated */\nexport const byteSwapIfBE: typeof swap8IfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n  for (let i = 0; i < arr.length; i++) {\n    arr[i] = byteSwap(arr[i]);\n  }\n  return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n  ? (u: Uint32Array) => u\n  : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n  // @ts-ignore\n  typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n  i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n  abytes(bytes);\n  // @ts-ignore\n  if (hasHexBuiltin) return bytes.toHex();\n  // pre-caching improves the speed 6x\n  let hex = '';\n  for (let i = 0; i < bytes.length; i++) {\n    hex += hexes[bytes[i]];\n  }\n  return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n  if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n  if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n  if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n  return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n  if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n  // @ts-ignore\n  if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n  const hl = hex.length;\n  const al = hl / 2;\n  if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n  const array = new Uint8Array(al);\n  for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n    const n1 = asciiToBase16(hex.charCodeAt(hi));\n    const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n    if (n1 === undefined || n2 === undefined) {\n      const char = hex[hi] + hex[hi + 1];\n      throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n    }\n    array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n  }\n  return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n  iters: number,\n  tick: number,\n  cb: (i: number) => void\n): Promise<void> {\n  let ts = Date.now();\n  for (let i = 0; i < iters; i++) {\n    cb(i);\n    // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n    const diff = Date.now() - ts;\n    if (diff >= 0 && diff < tick) continue;\n    await nextTick();\n    ts += diff;\n  }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n  if (typeof str !== 'string') throw new Error('string expected');\n  return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n  return new TextDecoder().decode(bytes);\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = string | Uint8Array;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  abytes(data);\n  return data;\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  abytes(data);\n  return data;\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n  let sum = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    abytes(a);\n    sum += a.length;\n  }\n  const res = new Uint8Array(sum);\n  for (let i = 0, pad = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    res.set(a, pad);\n    pad += a.length;\n  }\n  return res;\n}\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n  defaults: T1,\n  opts?: T2\n): T1 & T2 {\n  if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n    throw new Error('options should be object or undefined');\n  const merged = Object.assign(defaults, opts);\n  return merged as T1 & T2;\n}\n\n/** Hash interface. */\nexport type IHash = {\n  (data: Uint8Array): Uint8Array;\n  blockLen: number;\n  outputLen: number;\n  create: any;\n};\n\n/** For runtime check if class implements interface */\nexport abstract class Hash<T extends Hash<T>> {\n  abstract blockLen: number; // Bytes per block\n  abstract outputLen: number; // Bytes in output\n  abstract update(buf: Input): this;\n  // Writes digest into buf\n  abstract digestInto(buf: Uint8Array): void;\n  abstract digest(): Uint8Array;\n  /**\n   * Resets internal state. Makes Hash instance unusable.\n   * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n   * by user, they will need to manually call `destroy()` when zeroing is necessary.\n   */\n  abstract destroy(): void;\n  /**\n   * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n   * when no options are passed.\n   * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n   * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n   * There are no guarantees for clean-up because it's impossible in JS.\n   */\n  abstract _cloneInto(to?: T): T;\n  // Safe version that clones internal state\n  abstract clone(): T;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n  xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n  xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash function */\nexport type CHash = ReturnType<typeof createHasher>;\n/** Hash function with output */\nexport type CHashO = ReturnType<typeof createOptHasher>;\n/** XOF with output */\nexport type CHashXO = ReturnType<typeof createXOFer>;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher<T extends Hash<T>>(\n  hashCons: () => Hash<T>\n): {\n  (msg: Input): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(): Hash<T>;\n} {\n  const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n  const tmp = hashCons();\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = () => hashCons();\n  return hashC;\n}\n\nexport function createOptHasher<H extends Hash<H>, T extends Object>(\n  hashCons: (opts?: T) => Hash<H>\n): {\n  (msg: Input, opts?: T): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(opts?: T): Hash<H>;\n} {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts?: T) => hashCons(opts);\n  return hashC;\n}\n\nexport function createXOFer<H extends HashXOF<H>, T extends Object>(\n  hashCons: (opts?: T) => HashXOF<H>\n): {\n  (msg: Input, opts?: T): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(opts?: T): HashXOF<H>;\n} {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts?: T) => hashCons(opts);\n  return hashC;\n}\nexport const wrapConstructor: typeof createHasher = createHasher;\nexport const wrapConstructorWithOpts: typeof createOptHasher = createOptHasher;\nexport const wrapXOFConstructorWithOpts: typeof createXOFer = createXOFer;\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n  if (crypto && typeof crypto.getRandomValues === 'function') {\n    return crypto.getRandomValues(new Uint8Array(bytesLength));\n  }\n  // Legacy Node.js compatibility\n  if (crypto && typeof crypto.randomBytes === 'function') {\n    return Uint8Array.from(crypto.randomBytes(bytesLength));\n  }\n  throw new Error('crypto.getRandomValues must be defined');\n}\n","/**\n * Internal helpers for blake hash.\n * @module\n */\nimport { rotr } from './utils.ts';\n\n/**\n * Internal blake variable.\n * For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1].\n */\n// prettier-ignore\nexport const BSIGMA: Uint8Array = /* @__PURE__ */ Uint8Array.from([\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n  11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n  7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n  9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n  2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n  12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n  13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n  6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n  10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n  // Blake1, unused in others\n  11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n  7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n  9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n  2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n]);\n\n// prettier-ignore\nexport type Num4 = { a: number; b: number; c: number; d: number; };\n\n// Mixing function G splitted in two halfs\nexport function G1s(a: number, b: number, c: number, d: number, x: number): Num4 {\n  a = (a + b + x) | 0;\n  d = rotr(d ^ a, 16);\n  c = (c + d) | 0;\n  b = rotr(b ^ c, 12);\n  return { a, b, c, d };\n}\n\nexport function G2s(a: number, b: number, c: number, d: number, x: number): Num4 {\n  a = (a + b + x) | 0;\n  d = rotr(d ^ a, 8);\n  c = (c + d) | 0;\n  b = rotr(b ^ c, 7);\n  return { a, b, c, d };\n}\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n  n: bigint,\n  le = false\n): {\n  h: number;\n  l: number;\n} {\n  if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n  return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n  const len = lst.length;\n  let Ah = new Uint32Array(len);\n  let Al = new Uint32Array(len);\n  for (let i = 0; i < len; i++) {\n    const { h, l } = fromBig(lst[i], le);\n    [Ah[i], Al[i]] = [h, l];\n  }\n  return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n  Ah: number,\n  Al: number,\n  Bh: number,\n  Bl: number\n): {\n  h: number;\n  l: number;\n} {\n  const l = (Al >>> 0) + (Bl >>> 0);\n  return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n  (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n  (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n  (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n  add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n  fromBig, split, toBig,\n  shrSH, shrSL,\n  rotrSH, rotrSL, rotrBH, rotrBL,\n  rotr32H, rotr32L,\n  rotlSH, rotlSL, rotlBH, rotlBL,\n  add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * blake2b (64-bit) & blake2s (8 to 32-bit) hash functions.\n * b could have been faster, but there is no fast u64 in js, so s is 1.5x faster.\n * @module\n */\nimport { BSIGMA, G1s, G2s } from './_blake.ts';\nimport { SHA256_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\n// prettier-ignore\nimport {\n  abytes, aexists, anumber, aoutput,\n  clean, createOptHasher, Hash, swap32IfBE, swap8IfBE, toBytes, u32,\n  type CHashO, type Input\n} from './utils.ts';\n\n/** Blake hash options. dkLen is output length. key is used in MAC mode. salt is used in KDF mode. */\nexport type Blake2Opts = {\n  dkLen?: number;\n  key?: Input;\n  salt?: Input;\n  personalization?: Input;\n};\n\n// Same as SHA512_IV, but swapped endianness: LE instead of BE. iv[1] is iv[0], etc.\nconst B2B_IV = /* @__PURE__ */ Uint32Array.from([\n  0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a,\n  0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19,\n]);\n// Temporary buffer\nconst BBUF = /* @__PURE__ */ new Uint32Array(32);\n\n// Mixing function G splitted in two halfs\nfunction G1b(a: number, b: number, c: number, d: number, msg: Uint32Array, x: number) {\n  // NOTE: V is LE here\n  const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n  let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n  let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n  let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n  let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n  // v[a] = (v[a] + v[b] + x) | 0;\n  let ll = u64.add3L(Al, Bl, Xl);\n  Ah = u64.add3H(ll, Ah, Bh, Xh);\n  Al = ll | 0;\n  // v[d] = rotr(v[d] ^ v[a], 32)\n  ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n  ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) });\n  // v[c] = (v[c] + v[d]) | 0;\n  ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n  // v[b] = rotr(v[b] ^ v[c], 24)\n  ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n  ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 24), Bl: u64.rotrSL(Bh, Bl, 24) });\n  (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n  (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n  (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n  (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\n\nfunction G2b(a: number, b: number, c: number, d: number, msg: Uint32Array, x: number) {\n  // NOTE: V is LE here\n  const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n  let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n  let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n  let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n  let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n  // v[a] = (v[a] + v[b] + x) | 0;\n  let ll = u64.add3L(Al, Bl, Xl);\n  Ah = u64.add3H(ll, Ah, Bh, Xh);\n  Al = ll | 0;\n  // v[d] = rotr(v[d] ^ v[a], 16)\n  ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n  ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) });\n  // v[c] = (v[c] + v[d]) | 0;\n  ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n  // v[b] = rotr(v[b] ^ v[c], 63)\n  ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n  ({ Bh, Bl } = { Bh: u64.rotrBH(Bh, Bl, 63), Bl: u64.rotrBL(Bh, Bl, 63) });\n  (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n  (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n  (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n  (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\n\nfunction checkBlake2Opts(\n  outputLen: number,\n  opts: Blake2Opts | undefined = {},\n  keyLen: number,\n  saltLen: number,\n  persLen: number\n) {\n  anumber(keyLen);\n  if (outputLen < 0 || outputLen > keyLen) throw new Error('outputLen bigger than keyLen');\n  const { key, salt, personalization } = opts;\n  if (key !== undefined && (key.length < 1 || key.length > keyLen))\n    throw new Error('key length must be undefined or 1..' + keyLen);\n  if (salt !== undefined && salt.length !== saltLen)\n    throw new Error('salt must be undefined or ' + saltLen);\n  if (personalization !== undefined && personalization.length !== persLen)\n    throw new Error('personalization must be undefined or ' + persLen);\n}\n\n/** Class, from which others are subclassed. */\nexport abstract class BLAKE2<T extends BLAKE2<T>> extends Hash<T> {\n  protected abstract compress(msg: Uint32Array, offset: number, isLast: boolean): void;\n  protected abstract get(): number[];\n  protected abstract set(...args: number[]): void;\n  abstract destroy(): void;\n  protected buffer: Uint8Array;\n  protected buffer32: Uint32Array;\n  protected finished = false;\n  protected destroyed = false;\n  protected length: number = 0;\n  protected pos: number = 0;\n  readonly blockLen: number;\n  readonly outputLen: number;\n\n  constructor(blockLen: number, outputLen: number) {\n    super();\n    anumber(blockLen);\n    anumber(outputLen);\n    this.blockLen = blockLen;\n    this.outputLen = outputLen;\n    this.buffer = new Uint8Array(blockLen);\n    this.buffer32 = u32(this.buffer);\n  }\n  update(data: Input): this {\n    aexists(this);\n    data = toBytes(data);\n    abytes(data);\n    // Main difference with other hashes: there is flag for last block,\n    // so we cannot process current block before we know that there\n    // is the next one. This significantly complicates logic and reduces ability\n    // to do zero-copy processing\n    const { blockLen, buffer, buffer32 } = this;\n    const len = data.length;\n    const offset = data.byteOffset;\n    const buf = data.buffer;\n    for (let pos = 0; pos < len; ) {\n      // If buffer is full and we still have input (don't process last block, same as blake2s)\n      if (this.pos === blockLen) {\n        swap32IfBE(buffer32);\n        this.compress(buffer32, 0, false);\n        swap32IfBE(buffer32);\n        this.pos = 0;\n      }\n      const take = Math.min(blockLen - this.pos, len - pos);\n      const dataOffset = offset + pos;\n      // full block && aligned to 4 bytes && not last in input\n      if (take === blockLen && !(dataOffset % 4) && pos + take < len) {\n        const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4));\n        swap32IfBE(data32);\n        for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) {\n          this.length += blockLen;\n          this.compress(data32, pos32, false);\n        }\n        swap32IfBE(data32);\n        continue;\n      }\n      buffer.set(data.subarray(pos, pos + take), this.pos);\n      this.pos += take;\n      this.length += take;\n      pos += take;\n    }\n    return this;\n  }\n  digestInto(out: Uint8Array): void {\n    aexists(this);\n    aoutput(out, this);\n    const { pos, buffer32 } = this;\n    this.finished = true;\n    // Padding\n    clean(this.buffer.subarray(pos));\n    swap32IfBE(buffer32);\n    this.compress(buffer32, 0, true);\n    swap32IfBE(buffer32);\n    const out32 = u32(out);\n    this.get().forEach((v, i) => (out32[i] = swap8IfBE(v)));\n  }\n  digest(): Uint8Array {\n    const { buffer, outputLen } = this;\n    this.digestInto(buffer);\n    const res = buffer.slice(0, outputLen);\n    this.destroy();\n    return res;\n  }\n  _cloneInto(to?: T): T {\n    const { buffer, length, finished, destroyed, outputLen, pos } = this;\n    to ||= new (this.constructor as any)({ dkLen: outputLen }) as T;\n    to.set(...this.get());\n    to.buffer.set(buffer);\n    to.destroyed = destroyed;\n    to.finished = finished;\n    to.length = length;\n    to.pos = pos;\n    // @ts-ignore\n    to.outputLen = outputLen;\n    return to;\n  }\n  clone(): T {\n    return this._cloneInto();\n  }\n}\n\nexport class BLAKE2b extends BLAKE2<BLAKE2b> {\n  // Same as SHA-512, but LE\n  private v0l = B2B_IV[0] | 0;\n  private v0h = B2B_IV[1] | 0;\n  private v1l = B2B_IV[2] | 0;\n  private v1h = B2B_IV[3] | 0;\n  private v2l = B2B_IV[4] | 0;\n  private v2h = B2B_IV[5] | 0;\n  private v3l = B2B_IV[6] | 0;\n  private v3h = B2B_IV[7] | 0;\n  private v4l = B2B_IV[8] | 0;\n  private v4h = B2B_IV[9] | 0;\n  private v5l = B2B_IV[10] | 0;\n  private v5h = B2B_IV[11] | 0;\n  private v6l = B2B_IV[12] | 0;\n  private v6h = B2B_IV[13] | 0;\n  private v7l = B2B_IV[14] | 0;\n  private v7h = B2B_IV[15] | 0;\n\n  constructor(opts: Blake2Opts = {}) {\n    const olen = opts.dkLen === undefined ? 64 : opts.dkLen;\n    super(128, olen);\n    checkBlake2Opts(olen, opts, 64, 16, 16);\n    let { key, personalization, salt } = opts;\n    let keyLength = 0;\n    if (key !== undefined) {\n      key = toBytes(key);\n      keyLength = key.length;\n    }\n    this.v0l ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n    if (salt !== undefined) {\n      salt = toBytes(salt);\n      const slt = u32(salt);\n      this.v4l ^= swap8IfBE(slt[0]);\n      this.v4h ^= swap8IfBE(slt[1]);\n      this.v5l ^= swap8IfBE(slt[2]);\n      this.v5h ^= swap8IfBE(slt[3]);\n    }\n    if (personalization !== undefined) {\n      personalization = toBytes(personalization);\n      const pers = u32(personalization);\n      this.v6l ^= swap8IfBE(pers[0]);\n      this.v6h ^= swap8IfBE(pers[1]);\n      this.v7l ^= swap8IfBE(pers[2]);\n      this.v7h ^= swap8IfBE(pers[3]);\n    }\n    if (key !== undefined) {\n      // Pad to blockLen and update\n      const tmp = new Uint8Array(this.blockLen);\n      tmp.set(key);\n      this.update(tmp);\n    }\n  }\n  // prettier-ignore\n  protected get(): [\n    number, number, number, number, number, number, number, number,\n    number, number, number, number, number, number, number, number\n  ] {\n    let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this;\n    return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h];\n  }\n  // prettier-ignore\n  protected set(\n    v0l: number, v0h: number, v1l: number, v1h: number,\n    v2l: number, v2h: number, v3l: number, v3h: number,\n    v4l: number, v4h: number, v5l: number, v5h: number,\n    v6l: number, v6h: number, v7l: number, v7h: number\n  ): void {\n    this.v0l = v0l | 0;\n    this.v0h = v0h | 0;\n    this.v1l = v1l | 0;\n    this.v1h = v1h | 0;\n    this.v2l = v2l | 0;\n    this.v2h = v2h | 0;\n    this.v3l = v3l | 0;\n    this.v3h = v3h | 0;\n    this.v4l = v4l | 0;\n    this.v4h = v4h | 0;\n    this.v5l = v5l | 0;\n    this.v5h = v5h | 0;\n    this.v6l = v6l | 0;\n    this.v6h = v6h | 0;\n    this.v7l = v7l | 0;\n    this.v7h = v7h | 0;\n  }\n  protected compress(msg: Uint32Array, offset: number, isLast: boolean): void {\n    this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state.\n    BBUF.set(B2B_IV, 16); // Second half from IV.\n    let { h, l } = u64.fromBig(BigInt(this.length));\n    BBUF[24] = B2B_IV[8] ^ l; // Low word of the offset.\n    BBUF[25] = B2B_IV[9] ^ h; // High word.\n    // Invert all bits for last block\n    if (isLast) {\n      BBUF[28] = ~BBUF[28];\n      BBUF[29] = ~BBUF[29];\n    }\n    let j = 0;\n    const s = BSIGMA;\n    for (let i = 0; i < 12; i++) {\n      G1b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n      G2b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n      G1b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n      G2b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n      G1b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n      G2b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n      G1b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n      G2b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n\n      G1b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n      G2b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n      G1b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n      G2b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n      G1b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n      G2b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n      G1b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n      G2b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n    }\n    this.v0l ^= BBUF[0] ^ BBUF[16];\n    this.v0h ^= BBUF[1] ^ BBUF[17];\n    this.v1l ^= BBUF[2] ^ BBUF[18];\n    this.v1h ^= BBUF[3] ^ BBUF[19];\n    this.v2l ^= BBUF[4] ^ BBUF[20];\n    this.v2h ^= BBUF[5] ^ BBUF[21];\n    this.v3l ^= BBUF[6] ^ BBUF[22];\n    this.v3h ^= BBUF[7] ^ BBUF[23];\n    this.v4l ^= BBUF[8] ^ BBUF[24];\n    this.v4h ^= BBUF[9] ^ BBUF[25];\n    this.v5l ^= BBUF[10] ^ BBUF[26];\n    this.v5h ^= BBUF[11] ^ BBUF[27];\n    this.v6l ^= BBUF[12] ^ BBUF[28];\n    this.v6h ^= BBUF[13] ^ BBUF[29];\n    this.v7l ^= BBUF[14] ^ BBUF[30];\n    this.v7h ^= BBUF[15] ^ BBUF[31];\n    clean(BBUF);\n  }\n  destroy(): void {\n    this.destroyed = true;\n    clean(this.buffer32);\n    this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n  }\n}\n\n/**\n * Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2b: CHashO = /* @__PURE__ */ createOptHasher<BLAKE2b, Blake2Opts>(\n  (opts) => new BLAKE2b(opts)\n);\n\n// =================\n// Blake2S\n// =================\n\n// prettier-ignore\nexport type Num16 = {\n  v0: number; v1: number; v2: number; v3: number;\n  v4: number; v5: number; v6: number; v7: number;\n  v8: number; v9: number; v10: number; v11: number;\n  v12: number; v13: number; v14: number; v15: number;\n};\n\n// prettier-ignore\nexport function compress(s: Uint8Array, offset: number, msg: Uint32Array, rounds: number,\n  v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number,\n  v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number,\n): Num16 {\n  let j = 0;\n  for (let i = 0; i < rounds; i++) {\n    ({ a: v0, b: v4, c: v8, d: v12 } = G1s(v0, v4, v8, v12, msg[offset + s[j++]]));\n    ({ a: v0, b: v4, c: v8, d: v12 } = G2s(v0, v4, v8, v12, msg[offset + s[j++]]));\n    ({ a: v1, b: v5, c: v9, d: v13 } = G1s(v1, v5, v9, v13, msg[offset + s[j++]]));\n    ({ a: v1, b: v5, c: v9, d: v13 } = G2s(v1, v5, v9, v13, msg[offset + s[j++]]));\n    ({ a: v2, b: v6, c: v10, d: v14 } = G1s(v2, v6, v10, v14, msg[offset + s[j++]]));\n    ({ a: v2, b: v6, c: v10, d: v14 } = G2s(v2, v6, v10, v14, msg[offset + s[j++]]));\n    ({ a: v3, b: v7, c: v11, d: v15 } = G1s(v3, v7, v11, v15, msg[offset + s[j++]]));\n    ({ a: v3, b: v7, c: v11, d: v15 } = G2s(v3, v7, v11, v15, msg[offset + s[j++]]));\n\n    ({ a: v0, b: v5, c: v10, d: v15 } = G1s(v0, v5, v10, v15, msg[offset + s[j++]]));\n    ({ a: v0, b: v5, c: v10, d: v15 } = G2s(v0, v5, v10, v15, msg[offset + s[j++]]));\n    ({ a: v1, b: v6, c: v11, d: v12 } = G1s(v1, v6, v11, v12, msg[offset + s[j++]]));\n    ({ a: v1, b: v6, c: v11, d: v12 } = G2s(v1, v6, v11, v12, msg[offset + s[j++]]));\n    ({ a: v2, b: v7, c: v8, d: v13 } = G1s(v2, v7, v8, v13, msg[offset + s[j++]]));\n    ({ a: v2, b: v7, c: v8, d: v13 } = G2s(v2, v7, v8, v13, msg[offset + s[j++]]));\n    ({ a: v3, b: v4, c: v9, d: v14 } = G1s(v3, v4, v9, v14, msg[offset + s[j++]]));\n    ({ a: v3, b: v4, c: v9, d: v14 } = G2s(v3, v4, v9, v14, msg[offset + s[j++]]));\n  }\n  return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 };\n}\n\nconst B2S_IV = SHA256_IV;\nexport class BLAKE2s extends BLAKE2<BLAKE2s> {\n  // Internal state, same as SHA-256\n  private v0 = B2S_IV[0] | 0;\n  private v1 = B2S_IV[1] | 0;\n  private v2 = B2S_IV[2] | 0;\n  private v3 = B2S_IV[3] | 0;\n  private v4 = B2S_IV[4] | 0;\n  private v5 = B2S_IV[5] | 0;\n  private v6 = B2S_IV[6] | 0;\n  private v7 = B2S_IV[7] | 0;\n\n  constructor(opts: Blake2Opts = {}) {\n    const olen = opts.dkLen === undefined ? 32 : opts.dkLen;\n    super(64, olen);\n    checkBlake2Opts(olen, opts, 32, 8, 8);\n    let { key, personalization, salt } = opts;\n    let keyLength = 0;\n    if (key !== undefined) {\n      key = toBytes(key);\n      keyLength = key.length;\n    }\n    this.v0 ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n    if (salt !== undefined) {\n      salt = toBytes(salt);\n      const slt = u32(salt as Uint8Array);\n      this.v4 ^= swap8IfBE(slt[0]);\n      this.v5 ^= swap8IfBE(slt[1]);\n    }\n    if (personalization !== undefined) {\n      personalization = toBytes(personalization);\n      const pers = u32(personalization as Uint8Array);\n      this.v6 ^= swap8IfBE(pers[0]);\n      this.v7 ^= swap8IfBE(pers[1]);\n    }\n    if (key !== undefined) {\n      // Pad to blockLen and update\n      abytes(key);\n      const tmp = new Uint8Array(this.blockLen);\n      tmp.set(key);\n      this.update(tmp);\n    }\n  }\n  protected get(): [number, number, number, number, number, number, number, number] {\n    const { v0, v1, v2, v3, v4, v5, v6, v7 } = this;\n    return [v0, v1, v2, v3, v4, v5, v6, v7];\n  }\n  // prettier-ignore\n  protected set(\n    v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number\n  ): void {\n    this.v0 = v0 | 0;\n    this.v1 = v1 | 0;\n    this.v2 = v2 | 0;\n    this.v3 = v3 | 0;\n    this.v4 = v4 | 0;\n    this.v5 = v5 | 0;\n    this.v6 = v6 | 0;\n    this.v7 = v7 | 0;\n  }\n  protected compress(msg: Uint32Array, offset: number, isLast: boolean): void {\n    const { h, l } = u64.fromBig(BigInt(this.length));\n    // prettier-ignore\n    const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } =\n      compress(\n        BSIGMA, offset, msg, 10,\n        this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7,\n        B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]\n      );\n    this.v0 ^= v0 ^ v8;\n    this.v1 ^= v1 ^ v9;\n    this.v2 ^= v2 ^ v10;\n    this.v3 ^= v3 ^ v11;\n    this.v4 ^= v4 ^ v12;\n    this.v5 ^= v5 ^ v13;\n    this.v6 ^= v6 ^ v14;\n    this.v7 ^= v7 ^ v15;\n  }\n  destroy(): void {\n    this.destroyed = true;\n    clean(this.buffer32);\n    this.set(0, 0, 0, 0, 0, 0, 0, 0);\n  }\n}\n\n/**\n * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2s: CHashO = /* @__PURE__ */ createOptHasher<BLAKE2s, Blake2Opts>(\n  (opts) => new BLAKE2s(opts)\n);\n","/**\n * Blake2b hash function. Focuses on 64-bit platforms, but in JS speed different from Blake2s is negligible.\n * @module\n * @deprecated\n */\nimport { BLAKE2b as B2B, blake2b as b2b } from './blake2.ts';\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const BLAKE2b: typeof B2B = B2B;\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const blake2b: typeof b2b = b2b;\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { blake2b } from '@noble/hashes/blake2b';\n\n/**\n * Generates a Blake2b hash of typed data as a base64 string.\n *\n * @param typeTag type tag (e.g. TransactionData, SenderSignedData)\n * @param data data to hash\n */\nexport function hashTypedData(typeTag: string, data: Uint8Array): Uint8Array {\n\tconst typeTagBytes = Array.from(`${typeTag}::`).map((e) => e.charCodeAt(0));\n\n\tconst dataWithTag = new Uint8Array(typeTagBytes.length + data.length);\n\tdataWithTag.set(typeTagBytes);\n\tdataWithTag.set(data, typeTagBytes.length);\n\n\treturn blake2b(dataWithTag, { dkLen: 32 });\n}\n","import { TransactionBlock } from '@mysten/sui.js/transactions';\n// 또는 아래처럼 가능: import { TransactionBlock } from '@mysten/sui.js';\n\nexport class Sdk {\n  createTx(): TransactionBlock {\n    const tx = new TransactionBlock();\n    return tx;\n  }\n}\n\n\n\n\n\n\n\n\n\n\n\n","import { TransactionBlock } from '@mysten/sui.js/transactions';\r\n// 또는: import { TransactionBlock } from '@mysten/sui.js';\r\n\r\nexport function createPoolTransactionPayload(\r\n  coinX: string,\r\n  coinY: string,\r\n  amountX: number,\r\n  amountY: number\r\n): TransactionBlock {\r\n  const tx = new TransactionBlock();\r\n  // 여기에 거래 로직 작성\r\n  return tx;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"],"mappings":"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","names":["import_bcs","import_superstruct","superstructCreate","import_bcs","import_superstruct","import_bcs","import_bcs","BcsRegistry","module","SuiObjectRef","ObjectArg","import_bcs","import_superstruct","module","import_bcs","import_superstruct","import_bcs","import_superstruct","blake2b","blake2b","TransactionExpiration","SuiObjectRef","SuiObjectRef","chunk","object"]}