{"version":3,"file":"controller.mjs","names":["domain.Domain"],"sources":["../../../src/contracts/suins/controller.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\nimport {\n\tMoveStruct,\n\tMoveTuple,\n\tnormalizeMoveArguments,\n\ttype RawTransactionArgument,\n} from '../utils/index.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport * as domain from './domain.js';\nconst $moduleName = '@suins/core::controller';\nexport const SubnamePrunedEvent = new MoveStruct({\n\tname: `${$moduleName}::SubnamePrunedEvent`,\n\tfields: {\n\t\tsubdomain: domain.Domain,\n\t\tparent_domain: domain.Domain,\n\t},\n});\nexport const ControllerV2 = new MoveTuple({\n\tname: `${$moduleName}::ControllerV2`,\n\tfields: [bcs.bool()],\n});\nexport const Controller = new MoveStruct({\n\tname: `${$moduleName}::Controller`,\n\tfields: {\n\t\tdummy_field: bcs.bool(),\n\t},\n});\nexport interface SetTargetAddressArguments {\n\tsuins: RawTransactionArgument<string>;\n\tnft: RawTransactionArgument<string>;\n\tnewTarget: RawTransactionArgument<string | null>;\n}\nexport interface SetTargetAddressOptions {\n\tpackage?: string;\n\targuments:\n\t\t| SetTargetAddressArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tnft: RawTransactionArgument<string>,\n\t\t\t\tnewTarget: RawTransactionArgument<string | null>,\n\t\t  ];\n}\n/** Set the target address of a domain. */\nexport function setTargetAddress(options: SetTargetAddressOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\tnull,\n\t\t'0x1::option::Option<address>',\n\t\t'0x2::clock::Clock',\n\t] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'nft', 'newTarget'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'set_target_address',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface SetReverseLookupArguments {\n\tsuins: RawTransactionArgument<string>;\n\tdomainName: RawTransactionArgument<string>;\n}\nexport interface SetReverseLookupOptions {\n\tpackage?: string;\n\targuments:\n\t\t| SetReverseLookupArguments\n\t\t| [suins: RawTransactionArgument<string>, domainName: RawTransactionArgument<string>];\n}\n/** Set the reverse lookup address for the domain */\nexport function setReverseLookup(options: SetReverseLookupOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, '0x1::string::String'] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'domainName'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'set_reverse_lookup',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface UnsetReverseLookupArguments {\n\tsuins: RawTransactionArgument<string>;\n}\nexport interface UnsetReverseLookupOptions {\n\tpackage?: string;\n\targuments: UnsetReverseLookupArguments | [suins: RawTransactionArgument<string>];\n}\n/** User-facing function - unset the reverse lookup address for the domain. */\nexport function unsetReverseLookup(options: UnsetReverseLookupOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null] satisfies (string | null)[];\n\tconst parameterNames = ['suins'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'unset_reverse_lookup',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface SetObjectReverseLookupArguments {\n\tsuins: RawTransactionArgument<string>;\n\tobj: RawTransactionArgument<string>;\n\tdomainName: RawTransactionArgument<string>;\n}\nexport interface SetObjectReverseLookupOptions {\n\tpackage?: string;\n\targuments:\n\t\t| SetObjectReverseLookupArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tobj: RawTransactionArgument<string>,\n\t\t\t\tdomainName: RawTransactionArgument<string>,\n\t\t  ];\n}\n/**\n * Allows setting the reverse lookup address for an object. Expects a mutable\n * reference of the object.\n */\nexport function setObjectReverseLookup(options: SetObjectReverseLookupOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, '0x2::object::ID', '0x1::string::String'] satisfies (\n\t\t| string\n\t\t| null\n\t)[];\n\tconst parameterNames = ['suins', 'obj', 'domainName'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'set_object_reverse_lookup',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface UnsetObjectReverseLookupArguments {\n\tsuins: RawTransactionArgument<string>;\n\tobj: RawTransactionArgument<string>;\n}\nexport interface UnsetObjectReverseLookupOptions {\n\tpackage?: string;\n\targuments:\n\t\t| UnsetObjectReverseLookupArguments\n\t\t| [suins: RawTransactionArgument<string>, obj: RawTransactionArgument<string>];\n}\n/**\n * Allows unsetting the reverse lookup address for an object. Expects a mutable\n * reference of the object.\n */\nexport function unsetObjectReverseLookup(options: UnsetObjectReverseLookupOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, '0x2::object::ID'] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'obj'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'unset_object_reverse_lookup',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface SetUserDataArguments {\n\tsuins: RawTransactionArgument<string>;\n\tnft: RawTransactionArgument<string>;\n\tkey: RawTransactionArgument<string>;\n\tvalue: RawTransactionArgument<string>;\n}\nexport interface SetUserDataOptions {\n\tpackage?: string;\n\targuments:\n\t\t| SetUserDataArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tnft: RawTransactionArgument<string>,\n\t\t\t\tkey: RawTransactionArgument<string>,\n\t\t\t\tvalue: RawTransactionArgument<string>,\n\t\t  ];\n}\n/** User-facing function - add a new key-value pair to the name record's data. */\nexport function setUserData(options: SetUserDataOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\tnull,\n\t\t'0x1::string::String',\n\t\t'0x1::string::String',\n\t\t'0x2::clock::Clock',\n\t] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'nft', 'key', 'value'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'set_user_data',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface UnsetUserDataArguments {\n\tsuins: RawTransactionArgument<string>;\n\tnft: RawTransactionArgument<string>;\n\tkey: RawTransactionArgument<string>;\n}\nexport interface UnsetUserDataOptions {\n\tpackage?: string;\n\targuments:\n\t\t| UnsetUserDataArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tnft: RawTransactionArgument<string>,\n\t\t\t\tkey: RawTransactionArgument<string>,\n\t\t  ];\n}\n/** User-facing function - remove a key from the name record's data. */\nexport function unsetUserData(options: UnsetUserDataOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, '0x1::string::String', '0x2::clock::Clock'] satisfies (\n\t\t| string\n\t\t| null\n\t)[];\n\tconst parameterNames = ['suins', 'nft', 'key'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'unset_user_data',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface BurnExpiredArguments {\n\tsuins: RawTransactionArgument<string>;\n\tnft: RawTransactionArgument<string>;\n}\nexport interface BurnExpiredOptions {\n\tpackage?: string;\n\targuments:\n\t\t| BurnExpiredArguments\n\t\t| [suins: RawTransactionArgument<string>, nft: RawTransactionArgument<string>];\n}\nexport function burnExpired(options: BurnExpiredOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, '0x2::clock::Clock'] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'nft'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'burn_expired',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface BurnExpiredSubnameArguments {\n\tsuins: RawTransactionArgument<string>;\n\tnft: RawTransactionArgument<string>;\n}\nexport interface BurnExpiredSubnameOptions {\n\tpackage?: string;\n\targuments:\n\t\t| BurnExpiredSubnameArguments\n\t\t| [suins: RawTransactionArgument<string>, nft: RawTransactionArgument<string>];\n}\nexport function burnExpiredSubname(options: BurnExpiredSubnameOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, '0x2::clock::Clock'] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'nft'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'burn_expired_subname',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface PruneExpiredSubnameArguments {\n\tsuins: RawTransactionArgument<string>;\n\tparent: RawTransactionArgument<string>;\n\tsubdomainName: RawTransactionArgument<string>;\n}\nexport interface PruneExpiredSubnameOptions {\n\tpackage?: string;\n\targuments:\n\t\t| PruneExpiredSubnameArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tparent: RawTransactionArgument<string>,\n\t\t\t\tsubdomainName: RawTransactionArgument<string>,\n\t\t  ];\n}\n/**\n * Prunes an expired subdomain record from the registry by name, gated by ownership\n * of the parent. This allows the parent holder to clean up expired subdomain\n * records even when they don't possess the SubDomainRegistration object. After\n * pruning, the subdomain name becomes available for re-registration. The orphaned\n * SubDomainRegistration object (if it still exists) becomes useless.\n *\n * Use this when you control the parent domain but someone else holds the expired\n * subdomain NFT.\n */\nexport function pruneExpiredSubname(options: PruneExpiredSubnameOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, '0x1::string::String', '0x2::clock::Clock'] satisfies (\n\t\t| string\n\t\t| null\n\t)[];\n\tconst parameterNames = ['suins', 'parent', 'subdomainName'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'prune_expired_subname',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface PruneExpiredSubnamesArguments {\n\tsuins: RawTransactionArgument<string>;\n\tparent: RawTransactionArgument<string>;\n\tsubdomainNames: RawTransactionArgument<Array<string>>;\n}\nexport interface PruneExpiredSubnamesOptions {\n\tpackage?: string;\n\targuments:\n\t\t| PruneExpiredSubnamesArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tparent: RawTransactionArgument<string>,\n\t\t\t\tsubdomainNames: RawTransactionArgument<Array<string>>,\n\t\t  ];\n}\n/**\n * Best-effort pruning of multiple expired subdomain records for a given parent.\n *\n * This function does **not** abort if individual entries are:\n *\n * - not subdomains,\n * - not direct children of the parent,\n * - missing from the registry,\n * - not expired,\n * - leaf records.\n *\n * It prunes what it can, emitting `SubnamePrunedEvent` for each successfully\n * pruned record, and returns the total count of pruned entries.\n */\nexport function pruneExpiredSubnames(options: PruneExpiredSubnamesOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\tnull,\n\t\t'vector<0x1::string::String>',\n\t\t'0x2::clock::Clock',\n\t] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'parent', 'subdomainNames'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'controller',\n\t\t\tfunction: 'prune_expired_subnames',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\n"],"mappings":";;;;;;;;AAYA,MAAM,cAAc;AACpB,MAAa,qBAAqB,IAAI,WAAW;CAChD,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,WAAWA;EACX,eAAeA;EACf;CACD,CAAC;AACF,MAAa,eAAe,IAAI,UAAU;CACzC,MAAM,GAAG,YAAY;CACrB,QAAQ,CAAC,IAAI,MAAM,CAAC;CACpB,CAAC;AACF,MAAa,aAAa,IAAI,WAAW;CACxC,MAAM,GAAG,YAAY;CACrB,QAAQ,EACP,aAAa,IAAI,MAAM,EACvB;CACD,CAAC;;AA6CF,SAAgB,iBAAiB,SAAkC;CAClE,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB,CAAC,MAAM,sBAAsB;CACpD,MAAM,iBAAiB,CAAC,SAAS,aAAa;AAC9C,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC;;AA+JJ,SAAgB,YAAY,SAA6B;CACxD,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAoB;CACxD,MAAM,iBAAiB,CAAC,SAAS,MAAM;AACvC,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC;;AAYJ,SAAgB,mBAAmB,SAAoC;CACtE,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAoB;CACxD,MAAM,iBAAiB,CAAC,SAAS,MAAM;AACvC,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC"}