UNPKG

@mysten/suins

Version:
1 lines 6.67 kB
{"version":3,"file":"discounts.mjs","names":[],"sources":["../../../src/contracts/suins_discounts/discounts.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * A module that allows purchasing names in a different price by presenting a\n * reference of type T. Each `T` can have a separate configuration for a discount\n * percentage. If a `T` doesn't exist, registration will fail.\n *\n * Can be called only when promotions are active for a specific type T. Activation\n * / deactivation happens through PTBs.\n */\n\nimport { MoveTuple, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';\nimport { bcs, type BcsType } from '@mysten/sui/bcs';\nimport { type Transaction } from '@mysten/sui/transactions';\nconst $moduleName = '@suins/discounts::discounts';\nexport const RegularDiscountsApp = new MoveTuple({\n\tname: `${$moduleName}::RegularDiscountsApp`,\n\tfields: [bcs.bool()],\n});\nexport const DiscountKey = new MoveTuple({\n\tname: `${$moduleName}::DiscountKey<phantom T>`,\n\tfields: [bcs.bool()],\n});\nexport interface ApplyPercentageDiscountArguments<T extends BcsType<any>> {\n\tself: RawTransactionArgument<string>;\n\tintent: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\t_: RawTransactionArgument<T>;\n}\nexport interface ApplyPercentageDiscountOptions<T extends BcsType<any>> {\n\tpackage?: string;\n\targuments:\n\t\t| ApplyPercentageDiscountArguments<T>\n\t\t| [\n\t\t\t\tself: RawTransactionArgument<string>,\n\t\t\t\tintent: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\t_: RawTransactionArgument<T>,\n\t\t ];\n\ttypeArguments: [string];\n}\n/** A function to register a name with a discount using type `T`. */\nexport function applyPercentageDiscount<T extends BcsType<any>>(\n\toptions: ApplyPercentageDiscountOptions<T>,\n) {\n\tconst packageAddress = options.package ?? '@suins/discounts';\n\tconst argumentsTypes = [null, null, null, `${options.typeArguments[0]}`] satisfies (\n\t\t| string\n\t\t| null\n\t)[];\n\tconst parameterNames = ['self', 'intent', 'suins', '_'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'discounts',\n\t\t\tfunction: 'apply_percentage_discount',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface ApplyDayOneDiscountArguments {\n\tself: RawTransactionArgument<string>;\n\tintent: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\tdayOne: RawTransactionArgument<string>;\n}\nexport interface ApplyDayOneDiscountOptions {\n\tpackage?: string;\n\targuments:\n\t\t| ApplyDayOneDiscountArguments\n\t\t| [\n\t\t\t\tself: RawTransactionArgument<string>,\n\t\t\t\tintent: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tdayOne: RawTransactionArgument<string>,\n\t\t ];\n}\n/**\n * A special function for DayOne registration. We separate it from the normal\n * registration flow because we only want it to be usable for activated DayOnes.\n */\nexport function applyDayOneDiscount(options: ApplyDayOneDiscountOptions) {\n\tconst packageAddress = options.package ?? '@suins/discounts';\n\tconst argumentsTypes = [null, null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['self', 'intent', 'suins', 'dayOne'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'discounts',\n\t\t\tfunction: 'apply_day_one_discount',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface AuthorizeTypeArguments {\n\tself: RawTransactionArgument<string>;\n\t_: RawTransactionArgument<string>;\n\tpricingConfig: RawTransactionArgument<string>;\n}\nexport interface AuthorizeTypeOptions {\n\tpackage?: string;\n\targuments:\n\t\t| AuthorizeTypeArguments\n\t\t| [\n\t\t\t\tself: RawTransactionArgument<string>,\n\t\t\t\t_: RawTransactionArgument<string>,\n\t\t\t\tpricingConfig: RawTransactionArgument<string>,\n\t\t ];\n\ttypeArguments: [string];\n}\n/**\n * An admin action to authorize a type T for special pricing.\n *\n * When authorizing, we reuse the core `PricingConfig` struct, and only accept it\n * if all the values are in the [0, 100] range. make sure that all the percentages\n * are in the [0, 99] range. We can use `free_claims` to giveaway free names.\n */\nexport function authorizeType(options: AuthorizeTypeOptions) {\n\tconst packageAddress = options.package ?? '@suins/discounts';\n\tconst argumentsTypes = [null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['self', '_', 'pricingConfig'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'discounts',\n\t\t\tfunction: 'authorize_type',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface DeauthorizeTypeArguments {\n\t_: RawTransactionArgument<string>;\n\tself: RawTransactionArgument<string>;\n}\nexport interface DeauthorizeTypeOptions {\n\tpackage?: string;\n\targuments:\n\t\t| DeauthorizeTypeArguments\n\t\t| [_: RawTransactionArgument<string>, self: RawTransactionArgument<string>];\n\ttypeArguments: [string];\n}\n/** An admin action to deauthorize type T from getting discounts. */\nexport function deauthorizeType(options: DeauthorizeTypeOptions) {\n\tconst packageAddress = options.package ?? '@suins/discounts';\n\tconst argumentsTypes = [null, 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: 'discounts',\n\t\t\tfunction: 'deauthorize_type',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAM,cAAc;AACpB,MAAa,sBAAsB,IAAI,UAAU;CAChD,MAAM,GAAG,YAAY;CACrB,QAAQ,CAAC,IAAI,MAAM,CAAC;CACpB,CAAC;AACF,MAAa,cAAc,IAAI,UAAU;CACxC,MAAM,GAAG,YAAY;CACrB,QAAQ,CAAC,IAAI,MAAM,CAAC;CACpB,CAAC;;AAoBF,SAAgB,wBACf,SACC;CACD,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAM,GAAG,QAAQ,cAAc;EAAK;CAIxE,MAAM,iBAAiB;EAAC;EAAQ;EAAU;EAAS;EAAI;AACvD,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,eAAe,QAAQ;EACvB,CAAC"}