{"version":3,"sources":["../../src/core/account/utils/address.ts"],"sourcesContent":["import { sha3_256 } from \"@noble/hashes/sha3\";\nimport { AccountAddress } from \"../../accountAddress\";\nimport { DeriveScheme } from \"../../../types\";\nimport { TEXT_ENCODER } from \"../../../utils/const\";\n\n/**\n * Creates an object address from creator address and seed\n *\n * @param creatorAddress The object creator account address\n * @param seed The seed in either Uint8Array | string type\n *\n * @returns The object account address\n * @group Implementation\n * @category Account (On-Chain Model)\n */\nexport const createObjectAddress = (creatorAddress: AccountAddress, seed: Uint8Array | string): AccountAddress => {\n  const creatorBytes = creatorAddress.bcsToBytes();\n  const seedBytes = typeof seed === \"string\" ? TEXT_ENCODER.encode(seed) : seed;\n\n  const bytes = new Uint8Array([...creatorBytes, ...seedBytes, DeriveScheme.DeriveObjectAddressFromSeed]);\n\n  return new AccountAddress(sha3_256(bytes));\n};\n\n/**\n * Creates a resource address from creator address and seed\n *\n * @param creatorAddress The creator account address\n * @param seed The seed in either Uint8Array | string type\n *\n * @returns The resource account address\n * @group Implementation\n * @category Account (On-Chain Model)\n */\nexport const createResourceAddress = (creatorAddress: AccountAddress, seed: Uint8Array | string): AccountAddress => {\n  const creatorBytes = creatorAddress.bcsToBytes();\n\n  const seedBytes = typeof seed === \"string\" ? TEXT_ENCODER.encode(seed) : seed;\n\n  const bytes = new Uint8Array([...creatorBytes, ...seedBytes, DeriveScheme.DeriveResourceAccountAddress]);\n\n  return new AccountAddress(sha3_256(bytes));\n};\n\n/**\n * Creates a user derived object address from source address and derive_from address\n *\n * @param sourceAddress The source account address\n * @param deriveFromAddress The address to derive from\n *\n * @returns The user derived object address\n * @group Implementation\n * @category Account (On-Chain Model)\n */\nexport const createUserDerivedObjectAddress = (\n  sourceAddress: AccountAddress,\n  deriveFromAddress: AccountAddress,\n): AccountAddress => {\n  const sourceBytes = sourceAddress.bcsToBytes();\n  const deriveFromBytes = deriveFromAddress.bcsToBytes();\n\n  const bytes = new Uint8Array([...sourceBytes, ...deriveFromBytes, DeriveScheme.DeriveObjectAddressFromObject]);\n\n  return new AccountAddress(sha3_256(bytes));\n};\n\n/**\n * Creates a token object address from creator address, collection name and token name\n *\n * @param creatorAddress The token creator account address\n * @param collectionName The collection name\n * @param tokenName The token name\n *\n * @returns The token account address\n * @group Implementation\n * @category Account (On-Chain Model)\n */\nexport const createTokenAddress = (\n  creatorAddress: AccountAddress,\n  collectionName: string,\n  tokenName: string,\n): AccountAddress => {\n  const seed = `${collectionName}::${tokenName}`;\n  return createObjectAddress(creatorAddress, seed);\n};\n"],"mappings":"kFAAA,OAAS,YAAAA,MAAgB,qBAelB,IAAMC,EAAsB,CAACC,EAAgCC,IAA8C,CAChH,IAAMC,EAAeF,EAAe,WAAW,EACzCG,EAAY,OAAOF,GAAS,SAAWG,EAAa,OAAOH,CAAI,EAAIA,EAEnEI,EAAQ,IAAI,WAAW,CAAC,GAAGH,EAAc,GAAGC,KAAmD,CAAC,EAEtG,OAAO,IAAIG,EAAeC,EAASF,CAAK,CAAC,CAC3C,EAYaG,EAAwB,CAACR,EAAgCC,IAA8C,CAClH,IAAMC,EAAeF,EAAe,WAAW,EAEzCG,EAAY,OAAOF,GAAS,SAAWG,EAAa,OAAOH,CAAI,EAAIA,EAEnEI,EAAQ,IAAI,WAAW,CAAC,GAAGH,EAAc,GAAGC,KAAoD,CAAC,EAEvG,OAAO,IAAIG,EAAeC,EAASF,CAAK,CAAC,CAC3C,EAYaI,EAAiC,CAC5CC,EACAC,IACmB,CACnB,IAAMC,EAAcF,EAAc,WAAW,EACvCG,EAAkBF,EAAkB,WAAW,EAE/CN,EAAQ,IAAI,WAAW,CAAC,GAAGO,EAAa,GAAGC,KAA2D,CAAC,EAE7G,OAAO,IAAIP,EAAeC,EAASF,CAAK,CAAC,CAC3C,EAaaS,EAAqB,CAChCd,EACAe,EACAC,IACmB,CACnB,IAAMf,EAAO,GAAGc,CAAc,KAAKC,CAAS,GAC5C,OAAOjB,EAAoBC,EAAgBC,CAAI,CACjD","names":["sha3_256","createObjectAddress","creatorAddress","seed","creatorBytes","seedBytes","TEXT_ENCODER","bytes","AccountAddress","sha3_256","createResourceAddress","createUserDerivedObjectAddress","sourceAddress","deriveFromAddress","sourceBytes","deriveFromBytes","createTokenAddress","collectionName","tokenName"]}