@mysten/suins
Version:
1 lines • 15.9 kB
Source Map (JSON)
{"version":3,"file":"coupon_house.mjs","names":["data.Data"],"sources":["../../../src/contracts/suins_coupons/coupon_house.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * A module to support coupons for SuiNS. This module allows secondary modules\n * (e.g. Discord) to add or remove coupons too. This allows for separation of logic\n * & ease of de-authorization in case we don't want some functionality anymore.\n *\n * Coupons are unique string codes, that can be used (based on the business rules)\n * to claim discounts in the app. Each coupon is validated towards a list of rules.\n * View `rules` module for explanation. The app is authorized on `SuiNS` to be able\n * to claim names and add earnings to the registry.\n */\n\nimport { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';\nimport { bcs, type BcsType } from '@mysten/sui/bcs';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport * as data from './data.js';\nconst $moduleName = '@suins/coupons::coupon_house';\nexport const CouponsApp = new MoveStruct({\n\tname: `${$moduleName}::CouponsApp`,\n\tfields: {\n\t\tdummy_field: bcs.bool(),\n\t},\n});\nexport const AppKey = new MoveStruct({\n\tname: `${$moduleName}::AppKey<phantom A>`,\n\tfields: {\n\t\tdummy_field: bcs.bool(),\n\t},\n});\nexport const CouponHouse = new MoveStruct({\n\tname: `${$moduleName}::CouponHouse`,\n\tfields: {\n\t\tdata: data.Data,\n\t\tversion: bcs.u8(),\n\t\tstorage: bcs.Address,\n\t},\n});\nexport interface SetupArguments {\n\tsuins: RawTransactionArgument<string>;\n\tcap: RawTransactionArgument<string>;\n}\nexport interface SetupOptions {\n\tpackage?: string;\n\targuments:\n\t\t| SetupArguments\n\t\t| [suins: RawTransactionArgument<string>, cap: RawTransactionArgument<string>];\n}\n/** Called once to setup the CouponHouse on SuiNS. */\nexport function setup(options: SetupOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, null] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'cap'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'setup',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface ApplyCouponArguments {\n\tsuins: RawTransactionArgument<string>;\n\tintent: RawTransactionArgument<string>;\n\tcouponCode: RawTransactionArgument<string>;\n}\nexport interface ApplyCouponOptions {\n\tpackage?: string;\n\targuments:\n\t\t| ApplyCouponArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tintent: RawTransactionArgument<string>,\n\t\t\t\tcouponCode: RawTransactionArgument<string>,\n\t\t ];\n}\nexport function applyCoupon(options: ApplyCouponOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\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', 'intent', 'couponCode'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'apply_coupon',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface RegisterWithCouponArguments {\n\tSuins: RawTransactionArgument<string>;\n\tCouponCode: RawTransactionArgument<string>;\n\tDomainName: RawTransactionArgument<string>;\n\tNoYears: RawTransactionArgument<number>;\n\tPayment: RawTransactionArgument<string>;\n}\nexport interface RegisterWithCouponOptions {\n\tpackage?: string;\n\targuments:\n\t\t| RegisterWithCouponArguments\n\t\t| [\n\t\t\t\tSuins: RawTransactionArgument<string>,\n\t\t\t\tCouponCode: RawTransactionArgument<string>,\n\t\t\t\tDomainName: RawTransactionArgument<string>,\n\t\t\t\tNoYears: RawTransactionArgument<number>,\n\t\t\t\tPayment: RawTransactionArgument<string>,\n\t\t ];\n}\nexport function registerWithCoupon(options: RegisterWithCouponOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\t'0x1::string::String',\n\t\t'0x1::string::String',\n\t\t'u8',\n\t\tnull,\n\t\t'0x2::clock::Clock',\n\t] satisfies (string | null)[];\n\tconst parameterNames = ['Suins', 'CouponCode', 'DomainName', 'NoYears', 'Payment'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'register_with_coupon',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface CalculateSalePriceArguments {\n\tSuins: RawTransactionArgument<string>;\n\tPrice: RawTransactionArgument<number | bigint>;\n\tCouponCode: RawTransactionArgument<string>;\n}\nexport interface CalculateSalePriceOptions {\n\tpackage?: string;\n\targuments:\n\t\t| CalculateSalePriceArguments\n\t\t| [\n\t\t\t\tSuins: RawTransactionArgument<string>,\n\t\t\t\tPrice: RawTransactionArgument<number | bigint>,\n\t\t\t\tCouponCode: RawTransactionArgument<string>,\n\t\t ];\n}\nexport function calculateSalePrice(options: CalculateSalePriceOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, 'u64', '0x1::string::String'] satisfies (string | null)[];\n\tconst parameterNames = ['Suins', 'Price', 'CouponCode'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'calculate_sale_price',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface AppDataMutArguments<A extends BcsType<any>> {\n\tsuins: RawTransactionArgument<string>;\n\t_: RawTransactionArgument<A>;\n}\nexport interface AppDataMutOptions<A extends BcsType<any>> {\n\tpackage?: string;\n\targuments:\n\t\t| AppDataMutArguments<A>\n\t\t| [suins: RawTransactionArgument<string>, _: RawTransactionArgument<A>];\n\ttypeArguments: [string];\n}\nexport function appDataMut<A extends BcsType<any>>(options: AppDataMutOptions<A>) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, `${options.typeArguments[0]}`] satisfies (string | null)[];\n\tconst parameterNames = ['suins', '_'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'app_data_mut',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface AuthorizeAppArguments {\n\t_: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n}\nexport interface AuthorizeAppOptions {\n\tpackage?: string;\n\targuments:\n\t\t| AuthorizeAppArguments\n\t\t| [_: RawTransactionArgument<string>, suins: RawTransactionArgument<string>];\n\ttypeArguments: [string];\n}\n/**\n * Authorize an app on the coupon house. This allows to a secondary module to\n * add/remove coupons.\n */\nexport function authorizeApp(options: AuthorizeAppOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, 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: 'coupon_house',\n\t\t\tfunction: 'authorize_app',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface DeauthorizeAppArguments {\n\t_: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n}\nexport interface DeauthorizeAppOptions {\n\tpackage?: string;\n\targuments:\n\t\t| DeauthorizeAppArguments\n\t\t| [_: RawTransactionArgument<string>, suins: RawTransactionArgument<string>];\n\ttypeArguments: [string];\n}\n/** De-authorize an app. The app can no longer add or remove */\nexport function deauthorizeApp(options: DeauthorizeAppOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, 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: 'coupon_house',\n\t\t\tfunction: 'deauthorize_app',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface SetVersionArguments {\n\t_: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\tversion: RawTransactionArgument<number>;\n}\nexport interface SetVersionOptions {\n\tpackage?: string;\n\targuments:\n\t\t| SetVersionArguments\n\t\t| [\n\t\t\t\t_: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tversion: RawTransactionArgument<number>,\n\t\t ];\n}\n/**\n * An admin helper to set the version of the shared object. Registrations are only\n * possible if the latest version is being used.\n */\nexport function setVersion(options: SetVersionOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, null, 'u8'] satisfies (string | null)[];\n\tconst parameterNames = ['_', 'suins', 'version'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'set_version',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface AssertVersionIsValidArguments {\n\tself: RawTransactionArgument<string>;\n}\nexport interface AssertVersionIsValidOptions {\n\tpackage?: string;\n\targuments: AssertVersionIsValidArguments | [self: RawTransactionArgument<string>];\n}\n/** Validate that the version of the app is the latest. */\nexport function assertVersionIsValid(options: AssertVersionIsValidOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null] satisfies (string | null)[];\n\tconst parameterNames = ['self'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'assert_version_is_valid',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface AdminAddCouponArguments {\n\t_: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\tcode: RawTransactionArgument<string>;\n\tkind: RawTransactionArgument<number>;\n\tamount: RawTransactionArgument<number | bigint>;\n\trules: RawTransactionArgument<string>;\n}\nexport interface AdminAddCouponOptions {\n\tpackage?: string;\n\targuments:\n\t\t| AdminAddCouponArguments\n\t\t| [\n\t\t\t\t_: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tcode: RawTransactionArgument<string>,\n\t\t\t\tkind: RawTransactionArgument<number>,\n\t\t\t\tamount: RawTransactionArgument<number | bigint>,\n\t\t\t\trules: RawTransactionArgument<string>,\n\t\t ];\n}\n/**\n * To create a coupon, you have to call the PTB in the specific order\n *\n * 1. (Optional) Call rules::new_domain_length_rule(type, length) // generate a\n * length specific rule (e.g. only domains of size 5)\n * 2. Call rules::coupon_rules(...) to create the coupon's ruleset.\n */\nexport function adminAddCoupon(options: AdminAddCouponOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, null, '0x1::string::String', 'u8', 'u64', null] satisfies (\n\t\t| string\n\t\t| null\n\t)[];\n\tconst parameterNames = ['_', 'suins', 'code', 'kind', 'amount', 'rules'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'admin_add_coupon',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface AdminRemoveCouponArguments {\n\t_: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\tcode: RawTransactionArgument<string>;\n}\nexport interface AdminRemoveCouponOptions {\n\tpackage?: string;\n\targuments:\n\t\t| AdminRemoveCouponArguments\n\t\t| [\n\t\t\t\t_: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tcode: RawTransactionArgument<string>,\n\t\t ];\n}\nexport function adminRemoveCoupon(options: AdminRemoveCouponOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, null, '0x1::string::String'] satisfies (string | null)[];\n\tconst parameterNames = ['_', 'suins', 'code'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'admin_remove_coupon',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface AppAddCouponArguments {\n\tdata: RawTransactionArgument<string>;\n\tcode: RawTransactionArgument<string>;\n\tkind: RawTransactionArgument<number>;\n\tamount: RawTransactionArgument<number | bigint>;\n\trules: RawTransactionArgument<string>;\n}\nexport interface AppAddCouponOptions {\n\tpackage?: string;\n\targuments:\n\t\t| AppAddCouponArguments\n\t\t| [\n\t\t\t\tdata: RawTransactionArgument<string>,\n\t\t\t\tcode: RawTransactionArgument<string>,\n\t\t\t\tkind: RawTransactionArgument<number>,\n\t\t\t\tamount: RawTransactionArgument<number | bigint>,\n\t\t\t\trules: RawTransactionArgument<string>,\n\t\t ];\n}\nexport function appAddCoupon(options: AppAddCouponOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, '0x1::string::String', 'u8', 'u64', null] satisfies (\n\t\t| string\n\t\t| null\n\t)[];\n\tconst parameterNames = ['data', 'code', 'kind', 'amount', 'rules'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'app_add_coupon',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface AppRemoveCouponArguments {\n\tdata: RawTransactionArgument<string>;\n\tcode: RawTransactionArgument<string>;\n}\nexport interface AppRemoveCouponOptions {\n\tpackage?: string;\n\targuments:\n\t\t| AppRemoveCouponArguments\n\t\t| [data: RawTransactionArgument<string>, code: RawTransactionArgument<string>];\n}\nexport function appRemoveCoupon(options: AppRemoveCouponOptions) {\n\tconst packageAddress = options.package ?? '@suins/coupons';\n\tconst argumentsTypes = [null, '0x1::string::String'] satisfies (string | null)[];\n\tconst parameterNames = ['data', 'code'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'coupon_house',\n\t\t\tfunction: 'app_remove_coupon',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,MAAM,cAAc;AACpB,MAAa,aAAa,IAAI,WAAW;CACxC,MAAM,GAAG,YAAY;CACrB,QAAQ,EACP,aAAa,IAAI,MAAM,EACvB;CACD,CAAC;AACF,MAAa,SAAS,IAAI,WAAW;CACpC,MAAM,GAAG,YAAY;CACrB,QAAQ,EACP,aAAa,IAAI,MAAM,EACvB;CACD,CAAC;AACF,MAAa,cAAc,IAAI,WAAW;CACzC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,MAAMA;EACN,SAAS,IAAI,IAAI;EACjB,SAAS,IAAI;EACb;CACD,CAAC;AAuCF,SAAgB,YAAY,SAA6B;CACxD,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAuB;EAAoB;CAI/E,MAAM,iBAAiB;EAAC;EAAS;EAAU;EAAa;AACxD,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC"}