UNPKG

@mysten/suins

Version:
1 lines 17.8 kB
{"version":3,"file":"payment.mjs","names":["domain_1.Domain","vec_map.VecMap","type_name.TypeName"],"sources":["../../../src/contracts/suins/payment.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\nimport {\n\tMoveStruct,\n\tMoveEnum,\n\tnormalizeMoveArguments,\n\ttype RawTransactionArgument,\n} from '../utils/index.js';\nimport { bcs, type BcsType } from '@mysten/sui/bcs';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport * as domain_1 from './domain.js';\nimport * as vec_map from './deps/sui/vec_map.js';\nimport * as type_name from './deps/std/type_name.js';\nconst $moduleName = '@suins/core::payment';\nexport const RequestData = new MoveStruct({\n\tname: `${$moduleName}::RequestData`,\n\tfields: {\n\t\t/** The version of the payment module. */\n\t\tversion: bcs.u8(),\n\t\t/** The domain for which the payment is being made. */\n\t\tdomain: domain_1.Domain,\n\t\t/** The years for which the payment is being made. Defaults to 1 for registration. */\n\t\tyears: bcs.u8(),\n\t\t/** The amount the user has to pay in base units. */\n\t\tbase_amount: bcs.u64(),\n\t\t/**\n\t\t * The discounts (each app can add a key for its discount) to avoid multiple\n\t\t * additions of the same discount.\n\t\t */\n\t\tdiscounts_applied: vec_map.VecMap(bcs.string(), bcs.u64()),\n\t\t/**\n\t\t * a metadata field for future-proofness. No use-cases are enabled in the current\n\t\t * release.\n\t\t */\n\t\tmetadata: vec_map.VecMap(bcs.string(), bcs.string()),\n\t},\n});\nexport const TransactionEvent = new MoveStruct({\n\tname: `${$moduleName}::TransactionEvent`,\n\tfields: {\n\t\tapp: type_name.TypeName,\n\t\tdomain: domain_1.Domain,\n\t\tyears: bcs.u8(),\n\t\trequest_data_version: bcs.u8(),\n\t\tbase_amount: bcs.u64(),\n\t\tdiscounts_applied: vec_map.VecMap(bcs.string(), bcs.u64()),\n\t\tmetadata: vec_map.VecMap(bcs.string(), bcs.string()),\n\t\tis_renewal: bcs.bool(),\n\t\tcurrency: type_name.TypeName,\n\t\tcurrency_amount: bcs.u64(),\n\t},\n});\n/**\n * The payment intent for a given domain\n *\n * - Registration: The user is registering a new domain.\n * - Renewal: The user is renewing an existing domain.\n */\nexport const PaymentIntent = new MoveEnum({\n\tname: `${$moduleName}::PaymentIntent`,\n\tfields: {\n\t\tRegistration: RequestData,\n\t\tRenewal: RequestData,\n\t},\n});\n/**\n * A receipt that is generated after a successful payment. Can be used to:\n *\n * - Prove that the payment was successful.\n * - Register a new name, or renew an existing one.\n */\nexport const Receipt = new MoveEnum({\n\tname: `${$moduleName}::Receipt`,\n\tfields: {\n\t\tRegistration: new MoveStruct({\n\t\t\tname: `Receipt.Registration`,\n\t\t\tfields: {\n\t\t\t\tdomain: domain_1.Domain,\n\t\t\t\tyears: bcs.u8(),\n\t\t\t\tversion: bcs.u8(),\n\t\t\t},\n\t\t}),\n\t\tRenewal: new MoveStruct({\n\t\t\tname: `Receipt.Renewal`,\n\t\t\tfields: {\n\t\t\t\tdomain: domain_1.Domain,\n\t\t\t\tyears: bcs.u8(),\n\t\t\t\tversion: bcs.u8(),\n\t\t\t},\n\t\t}),\n\t},\n});\nexport interface ApplyPercentageDiscountArguments<A extends BcsType<any>> {\n\tintent: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\t_: RawTransactionArgument<A>;\n\tdiscountKey: RawTransactionArgument<string>;\n\tdiscount: RawTransactionArgument<number>;\n\tallowMultipleDiscounts: RawTransactionArgument<boolean>;\n}\nexport interface ApplyPercentageDiscountOptions<A extends BcsType<any>> {\n\tpackage?: string;\n\targuments:\n\t\t| ApplyPercentageDiscountArguments<A>\n\t\t| [\n\t\t\t\tintent: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\t_: RawTransactionArgument<A>,\n\t\t\t\tdiscountKey: RawTransactionArgument<string>,\n\t\t\t\tdiscount: RawTransactionArgument<number>,\n\t\t\t\tallowMultipleDiscounts: RawTransactionArgument<boolean>,\n\t\t ];\n\ttypeArguments: [string];\n}\n/**\n * Allow an authorized app to apply a percentage discount to the payment intent.\n * E.g. an NS payment can apply a 10% discount on top of a user's 20% discount if\n * allow_multiple_discounts is true\n */\nexport function applyPercentageDiscount<A extends BcsType<any>>(\n\toptions: ApplyPercentageDiscountOptions<A>,\n) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\tnull,\n\t\t`${options.typeArguments[0]}`,\n\t\t'0x1::string::String',\n\t\t'u8',\n\t\t'bool',\n\t] satisfies (string | null)[];\n\tconst parameterNames = [\n\t\t'intent',\n\t\t'suins',\n\t\t'_',\n\t\t'discountKey',\n\t\t'discount',\n\t\t'allowMultipleDiscounts',\n\t];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\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 FinalizePaymentArguments<A extends BcsType<any>> {\n\tintent: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\tapp: RawTransactionArgument<A>;\n\tcoin: RawTransactionArgument<string>;\n}\nexport interface FinalizePaymentOptions<A extends BcsType<any>> {\n\tpackage?: string;\n\targuments:\n\t\t| FinalizePaymentArguments<A>\n\t\t| [\n\t\t\t\tintent: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tapp: RawTransactionArgument<A>,\n\t\t\t\tcoin: RawTransactionArgument<string>,\n\t\t ];\n\ttypeArguments: [string, string];\n}\n/**\n * Allow an authorized app to finalize a payment. Returns a receipt that can be\n * used to register or renew a domain.\n *\n * SAFETY: Only authorized packages can call this. We do not check the amount of\n * funds in this helper. This is the responsibility of the `payments` app.\n */\nexport function finalizePayment<A extends BcsType<any>>(options: FinalizePaymentOptions<A>) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, `${options.typeArguments[0]}`, null] satisfies (\n\t\t| string\n\t\t| null\n\t)[];\n\tconst parameterNames = ['intent', 'suins', 'app', 'coin'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\n\t\t\tfunction: 'finalize_payment',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface InitRegistrationArguments {\n\tsuins: RawTransactionArgument<string>;\n\tdomain: RawTransactionArgument<string>;\n}\nexport interface InitRegistrationOptions {\n\tpackage?: string;\n\targuments:\n\t\t| InitRegistrationArguments\n\t\t| [suins: RawTransactionArgument<string>, domain: RawTransactionArgument<string>];\n}\n/**\n * Creates a `PaymentIntent` for registering a new domain. This is a hot-potato and\n * can only be consumed in a single transaction.\n */\nexport function initRegistration(options: InitRegistrationOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, '0x1::string::String'] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'domain'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\n\t\t\tfunction: 'init_registration',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface InitRenewalArguments {\n\tsuins: RawTransactionArgument<string>;\n\tnft: RawTransactionArgument<string>;\n\tyears: RawTransactionArgument<number>;\n}\nexport interface InitRenewalOptions {\n\tpackage?: string;\n\targuments:\n\t\t| InitRenewalArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tnft: RawTransactionArgument<string>,\n\t\t\t\tyears: RawTransactionArgument<number>,\n\t\t ];\n}\n/**\n * Creates a `PaymentIntent` for renewing an existing domain. This is a hot-potato\n * and can only be consumed in a single transaction.\n */\nexport function initRenewal(options: InitRenewalOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, 'u8'] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'nft', 'years'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\n\t\t\tfunction: 'init_renewal',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface RegisterArguments {\n\treceipt: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n}\nexport interface RegisterOptions {\n\tpackage?: string;\n\targuments:\n\t\t| RegisterArguments\n\t\t| [receipt: RawTransactionArgument<string>, suins: RawTransactionArgument<string>];\n}\n/**\n * Register a domain with the given receipt. This is a hot-potato and can only be\n * consumed in a single transaction.\n */\nexport function register(options: RegisterOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, '0x2::clock::Clock'] satisfies (string | null)[];\n\tconst parameterNames = ['receipt', 'suins'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\n\t\t\tfunction: 'register',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface RenewArguments {\n\treceipt: RawTransactionArgument<string>;\n\tsuins: RawTransactionArgument<string>;\n\tnft: RawTransactionArgument<string>;\n}\nexport interface RenewOptions {\n\tpackage?: string;\n\targuments:\n\t\t| RenewArguments\n\t\t| [\n\t\t\t\treceipt: RawTransactionArgument<string>,\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tnft: RawTransactionArgument<string>,\n\t\t ];\n}\n/**\n * Renew a domain with the given receipt. This is a hot-potato and can only be\n * consumed in a single transaction.\n */\nexport function renew(options: RenewOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, null, null, '0x2::clock::Clock'] satisfies (string | null)[];\n\tconst parameterNames = ['receipt', 'suins', 'nft'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\n\t\t\tfunction: 'renew',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface RequestDataArguments {\n\tintent: RawTransactionArgument<string>;\n}\nexport interface RequestDataOptions {\n\tpackage?: string;\n\targuments: RequestDataArguments | [intent: RawTransactionArgument<string>];\n}\n/** Getters */\nexport function requestData(options: RequestDataOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null] satisfies (string | null)[];\n\tconst parameterNames = ['intent'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\n\t\t\tfunction: 'request_data',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface YearsArguments {\n\tself: RawTransactionArgument<string>;\n}\nexport interface YearsOptions {\n\tpackage?: string;\n\targuments: YearsArguments | [self: RawTransactionArgument<string>];\n}\nexport function years(options: YearsOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\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: 'payment',\n\t\t\tfunction: 'years',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface BaseAmountArguments {\n\tself: RawTransactionArgument<string>;\n}\nexport interface BaseAmountOptions {\n\tpackage?: string;\n\targuments: BaseAmountArguments | [self: RawTransactionArgument<string>];\n}\nexport function baseAmount(options: BaseAmountOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\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: 'payment',\n\t\t\tfunction: 'base_amount',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface DomainArguments {\n\tself: RawTransactionArgument<string>;\n}\nexport interface DomainOptions {\n\tpackage?: string;\n\targuments: DomainArguments | [self: RawTransactionArgument<string>];\n}\nexport function domain(options: DomainOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\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: 'payment',\n\t\t\tfunction: 'domain',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface DiscountAppliedArguments {\n\tself: RawTransactionArgument<string>;\n}\nexport interface DiscountAppliedOptions {\n\tpackage?: string;\n\targuments: DiscountAppliedArguments | [self: RawTransactionArgument<string>];\n}\n/** Returns true if at least one discount has been applied to the payment intent. */\nexport function discountApplied(options: DiscountAppliedOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\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: 'payment',\n\t\t\tfunction: 'discount_applied',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface DiscountsAppliedArguments {\n\tself: RawTransactionArgument<string>;\n}\nexport interface DiscountsAppliedOptions {\n\tpackage?: string;\n\targuments: DiscountsAppliedArguments | [self: RawTransactionArgument<string>];\n}\n/** A list of discounts that have been applied to the payment intent. */\nexport function discountsApplied(options: DiscountsAppliedOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\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: 'payment',\n\t\t\tfunction: 'discounts_applied',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface CalculateTotalAfterDiscountArguments {\n\tdata: RawTransactionArgument<string>;\n\tdiscount: RawTransactionArgument<number>;\n}\nexport interface CalculateTotalAfterDiscountOptions {\n\tpackage?: string;\n\targuments:\n\t\t| CalculateTotalAfterDiscountArguments\n\t\t| [data: RawTransactionArgument<string>, discount: RawTransactionArgument<number>];\n}\n/** Public helper to calculate price after a percentage discount has been applied. */\nexport function calculateTotalAfterDiscount(options: CalculateTotalAfterDiscountOptions) {\n\tconst packageAddress = options.package ?? '@suins/core';\n\tconst argumentsTypes = [null, 'u8'] satisfies (string | null)[];\n\tconst parameterNames = ['data', 'discount'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payment',\n\t\t\tfunction: 'calculate_total_after_discount',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\n"],"mappings":";;;;;;;;;;AAcA,MAAM,cAAc;AACpB,MAAa,cAAc,IAAI,WAAW;CACzC,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,SAAS,IAAI,IAAI;EAEjB,QAAQA;EAER,OAAO,IAAI,IAAI;EAEf,aAAa,IAAI,KAAK;EAKtB,mBAAmBC,OAAe,IAAI,QAAQ,EAAE,IAAI,KAAK,CAAC;EAK1D,UAAUA,OAAe,IAAI,QAAQ,EAAE,IAAI,QAAQ,CAAC;EACpD;CACD,CAAC;AACF,MAAa,mBAAmB,IAAI,WAAW;CAC9C,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,KAAKC;EACL,QAAQF;EACR,OAAO,IAAI,IAAI;EACf,sBAAsB,IAAI,IAAI;EAC9B,aAAa,IAAI,KAAK;EACtB,mBAAmBC,OAAe,IAAI,QAAQ,EAAE,IAAI,KAAK,CAAC;EAC1D,UAAUA,OAAe,IAAI,QAAQ,EAAE,IAAI,QAAQ,CAAC;EACpD,YAAY,IAAI,MAAM;EACtB,UAAUC;EACV,iBAAiB,IAAI,KAAK;EAC1B;CACD,CAAC;;;;;;;AAOF,MAAa,gBAAgB,IAAI,SAAS;CACzC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,cAAc;EACd,SAAS;EACT;CACD,CAAC;;;;;;;AAOF,MAAa,UAAU,IAAI,SAAS;CACnC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,cAAc,IAAI,WAAW;GAC5B,MAAM;GACN,QAAQ;IACP,QAAQF;IACR,OAAO,IAAI,IAAI;IACf,SAAS,IAAI,IAAI;IACjB;GACD,CAAC;EACF,SAAS,IAAI,WAAW;GACvB,MAAM;GACN,QAAQ;IACP,QAAQA;IACR,OAAO,IAAI,IAAI;IACf,SAAS,IAAI,IAAI;IACjB;GACD,CAAC;EACF;CACD,CAAC;;;;;AAgHF,SAAgB,iBAAiB,SAAkC;CAClE,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB,CAAC,MAAM,sBAAsB;CACpD,MAAM,iBAAiB,CAAC,SAAS,SAAS;AAC1C,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC;;;;;;AAqBJ,SAAgB,YAAY,SAA6B;CACxD,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAK;CACzC,MAAM,iBAAiB;EAAC;EAAS;EAAO;EAAQ;AAChD,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC;;;;;;AAgBJ,SAAgB,SAAS,SAA0B;CAClD,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAoB;CACxD,MAAM,iBAAiB,CAAC,WAAW,QAAQ;AAC3C,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC;;;;;;AAqBJ,SAAgB,MAAM,SAAuB;CAC5C,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAM;EAAoB;CAC9D,MAAM,iBAAiB;EAAC;EAAW;EAAS;EAAM;AAClD,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC"}