{"version":3,"file":"zk-bag.mjs","names":["#package","#module"],"sources":["../../src/links/zk-bag.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@mysten/sui/bcs';\nimport type { Argument, Transaction, TransactionObjectArgument } from '@mysten/sui/transactions';\n\nexport const ZkBagStruct = bcs.struct('ZkBag', {\n\tid: bcs.Address,\n\towner: bcs.Address,\n\titem_ids: bcs.vector(bcs.Address),\n});\n\nexport interface ZkBagContractOptions {\n\tpackageId: string;\n\tbagStoreId: string;\n\tbagStoreTableId: string;\n}\n\nexport const TESTNET_CONTRACT_IDS: ZkBagContractOptions = {\n\tpackageId: '0x036fee67274d0d85c3532f58296abe0dee86b93864f1b2b9074be6adb388f138',\n\tbagStoreId: '0x5c63e71734c82c48a3cb9124c54001d1a09736cfb1668b3b30cd92a96dd4d0ce',\n\tbagStoreTableId: '0x4e1bc4085d64005e03eb4eab2510d527aeba9548cda431cb8f149ff37451f870',\n};\n\nexport const MAINNET_CONTRACT_IDS: ZkBagContractOptions = {\n\tpackageId: '0x5bb7d0bb3240011336ca9015f553b2646302a4f05f821160344e9ec5a988f740',\n\tbagStoreId: '0x65b215a3f2a951c94313a89c43f0adbd2fd9ea78a0badf81e27d1c9868a8b6fe',\n\tbagStoreTableId: '0x616db54ca564660cd58e36a4548be68b289371ef2611485c62c374a60960084e',\n};\n\nexport function getContractIds(network?: 'mainnet' | 'testnet') {\n\tif (!network) {\n\t\treturn MAINNET_CONTRACT_IDS;\n\t}\n\n\treturn network === 'mainnet' ? MAINNET_CONTRACT_IDS : TESTNET_CONTRACT_IDS;\n}\n\nexport class ZkBag<IDs> {\n\t#package: string;\n\t#module = 'zk_bag' as const;\n\tids: IDs;\n\n\tconstructor(packageAddress: string, ids: IDs) {\n\t\tthis.#package = packageAddress;\n\t\tthis.ids = ids;\n\t}\n\n\tnew({\n\t\targuments: [store, receiver],\n\t}: {\n\t\targuments: [store: TransactionObjectArgument | string, receiver: Argument | string];\n\t}) {\n\t\treturn (tx: Transaction) => {\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#package}::${this.#module}::new`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(store),\n\t\t\t\t\ttypeof receiver === 'string' ? tx.pure.address(receiver) : receiver,\n\t\t\t\t],\n\t\t\t});\n\t\t};\n\t}\n\n\tadd({\n\t\targuments: [store, receiver, item],\n\t\ttypeArguments,\n\t}: {\n\t\targuments: [\n\t\t\tstore: TransactionObjectArgument | string,\n\t\t\treceiver: Argument | string,\n\t\t\titem: TransactionObjectArgument | string,\n\t\t];\n\t\ttypeArguments: [string];\n\t}): (tx: Transaction) => Extract<Argument, { $kind: 'Result' }> {\n\t\treturn (tx: Transaction) =>\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#package}::${this.#module}::add`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(store),\n\t\t\t\t\ttypeof receiver === 'string' ? tx.pure.address(receiver) : receiver,\n\t\t\t\t\ttx.object(item),\n\t\t\t\t],\n\t\t\t\ttypeArguments: typeArguments,\n\t\t\t});\n\t}\n\n\tinit_claim({ arguments: [store] }: { arguments: [store: TransactionObjectArgument | string] }) {\n\t\treturn (tx: Transaction) => {\n\t\t\tconst [bag, claimProof] = tx.moveCall({\n\t\t\t\ttarget: `${this.#package}::${this.#module}::init_claim`,\n\t\t\t\targuments: [tx.object(store)],\n\t\t\t});\n\n\t\t\treturn [bag, claimProof] as const;\n\t\t};\n\t}\n\n\treclaim({\n\t\targuments: [store, receiver],\n\t}: {\n\t\targuments: [store: TransactionObjectArgument | string, receiver: Argument | string];\n\t}) {\n\t\treturn (tx: Transaction) => {\n\t\t\tconst [bag, claimProof] = tx.moveCall({\n\t\t\t\ttarget: `${this.#package}::${this.#module}::reclaim`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(store),\n\t\t\t\t\ttypeof receiver === 'string' ? tx.pure.address(receiver) : receiver,\n\t\t\t\t],\n\t\t\t});\n\n\t\t\treturn [bag, claimProof] as const;\n\t\t};\n\t}\n\n\tclaim({\n\t\targuments: [bag, claim, id],\n\t\ttypeArguments,\n\t}: {\n\t\targuments: [\n\t\t\tbag: TransactionObjectArgument | string,\n\t\t\tclaim: Extract<Argument, { $kind: 'NestedResult' }>,\n\t\t\tid: TransactionObjectArgument | string,\n\t\t];\n\t\ttypeArguments: [string];\n\t}): (tx: Transaction) => Extract<Argument, { $kind: 'Result' }> {\n\t\treturn (tx: Transaction) =>\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#package}::${this.#module}::claim`,\n\t\t\t\targuments: [tx.object(bag), tx.object(claim), typeof id === 'string' ? tx.object(id) : id],\n\t\t\t\ttypeArguments,\n\t\t\t});\n\t}\n\n\tfinalize({\n\t\targuments: [bag, claim],\n\t}: {\n\t\targuments: [\n\t\t\tbag: TransactionObjectArgument | string,\n\t\t\tclaim: Extract<Argument, { $kind: 'NestedResult' }>,\n\t\t];\n\t}) {\n\t\treturn (tx: Transaction) => {\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#package}::${this.#module}::finalize`,\n\t\t\t\targuments: [tx.object(bag), tx.object(claim)],\n\t\t\t});\n\t\t};\n\t}\n\n\tupdate_receiver({\n\t\targuments: [bag, from, to],\n\t}: {\n\t\targuments: [\n\t\t\tbag: TransactionObjectArgument | string,\n\t\t\tfrom: Argument | string,\n\t\t\tto: Argument | string,\n\t\t];\n\t}) {\n\t\treturn (tx: Transaction) => {\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#package}::${this.#module}::update_receiver`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(bag),\n\t\t\t\t\ttypeof from === 'string' ? tx.pure.address(from) : from,\n\t\t\t\t\ttypeof to === 'string' ? tx.pure.address(to) : to,\n\t\t\t\t],\n\t\t\t});\n\t\t};\n\t}\n}\n"],"mappings":";;;AAMA,MAAa,cAAc,IAAI,OAAO,SAAS;CAC9C,IAAI,IAAI;CACR,OAAO,IAAI;CACX,UAAU,IAAI,OAAO,IAAI,QAAQ;CACjC,CAAC;AAQF,MAAa,uBAA6C;CACzD,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB;AAED,MAAa,uBAA6C;CACzD,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB;AAED,SAAgB,eAAe,SAAiC;AAC/D,KAAI,CAAC,QACJ,QAAO;AAGR,QAAO,YAAY,YAAY,uBAAuB;;AAGvD,IAAa,QAAb,MAAwB;CACvB;CACA,UAAU;CAGV,YAAY,gBAAwB,KAAU;AAC7C,QAAKA,UAAW;AAChB,OAAK,MAAM;;CAGZ,IAAI,EACH,WAAW,CAAC,OAAO,aAGjB;AACF,UAAQ,OAAoB;AAC3B,MAAG,SAAS;IACX,QAAQ,GAAG,MAAKA,QAAS,IAAI,MAAKC,OAAQ;IAC1C,WAAW,CACV,GAAG,OAAO,MAAM,EAChB,OAAO,aAAa,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG,SAC3D;IACD,CAAC;;;CAIJ,IAAI,EACH,WAAW,CAAC,OAAO,UAAU,OAC7B,iBAQ+D;AAC/D,UAAQ,OACP,GAAG,SAAS;GACX,QAAQ,GAAG,MAAKD,QAAS,IAAI,MAAKC,OAAQ;GAC1C,WAAW;IACV,GAAG,OAAO,MAAM;IAChB,OAAO,aAAa,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG;IAC3D,GAAG,OAAO,KAAK;IACf;GACc;GACf,CAAC;;CAGJ,WAAW,EAAE,WAAW,CAAC,UAAsE;AAC9F,UAAQ,OAAoB;GAC3B,MAAM,CAAC,KAAK,cAAc,GAAG,SAAS;IACrC,QAAQ,GAAG,MAAKD,QAAS,IAAI,MAAKC,OAAQ;IAC1C,WAAW,CAAC,GAAG,OAAO,MAAM,CAAC;IAC7B,CAAC;AAEF,UAAO,CAAC,KAAK,WAAW;;;CAI1B,QAAQ,EACP,WAAW,CAAC,OAAO,aAGjB;AACF,UAAQ,OAAoB;GAC3B,MAAM,CAAC,KAAK,cAAc,GAAG,SAAS;IACrC,QAAQ,GAAG,MAAKD,QAAS,IAAI,MAAKC,OAAQ;IAC1C,WAAW,CACV,GAAG,OAAO,MAAM,EAChB,OAAO,aAAa,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG,SAC3D;IACD,CAAC;AAEF,UAAO,CAAC,KAAK,WAAW;;;CAI1B,MAAM,EACL,WAAW,CAAC,KAAK,OAAO,KACxB,iBAQ+D;AAC/D,UAAQ,OACP,GAAG,SAAS;GACX,QAAQ,GAAG,MAAKD,QAAS,IAAI,MAAKC,OAAQ;GAC1C,WAAW;IAAC,GAAG,OAAO,IAAI;IAAE,GAAG,OAAO,MAAM;IAAE,OAAO,OAAO,WAAW,GAAG,OAAO,GAAG,GAAG;IAAG;GAC1F;GACA,CAAC;;CAGJ,SAAS,EACR,WAAW,CAAC,KAAK,UAMf;AACF,UAAQ,OAAoB;AAC3B,MAAG,SAAS;IACX,QAAQ,GAAG,MAAKD,QAAS,IAAI,MAAKC,OAAQ;IAC1C,WAAW,CAAC,GAAG,OAAO,IAAI,EAAE,GAAG,OAAO,MAAM,CAAC;IAC7C,CAAC;;;CAIJ,gBAAgB,EACf,WAAW,CAAC,KAAK,MAAM,OAOrB;AACF,UAAQ,OAAoB;AAC3B,MAAG,SAAS;IACX,QAAQ,GAAG,MAAKD,QAAS,IAAI,MAAKC,OAAQ;IAC1C,WAAW;KACV,GAAG,OAAO,IAAI;KACd,OAAO,SAAS,WAAW,GAAG,KAAK,QAAQ,KAAK,GAAG;KACnD,OAAO,OAAO,WAAW,GAAG,KAAK,QAAQ,GAAG,GAAG;KAC/C;IACD,CAAC"}