{"version":3,"file":"payments.mjs","names":["type_name.TypeName","vec_map.VecMap"],"sources":["../../../src/contracts/suins_payments/payments.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\nimport {\n\tMoveTuple,\n\tMoveStruct,\n\tnormalizeMoveArguments,\n\ttype RawTransactionArgument,\n} from '../utils/index.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';\nimport * as type_name from './deps/std/type_name.js';\nimport * as vec_map from './deps/sui/vec_map.js';\nconst $moduleName = '@suins/payments::payments';\nexport const PaymentsApp = new MoveTuple({\n\tname: `${$moduleName}::PaymentsApp`,\n\tfields: [bcs.bool()],\n});\nexport const CoinTypeData = new MoveStruct({\n\tname: `${$moduleName}::CoinTypeData`,\n\tfields: {\n\t\t/** The coin's decimals. */\n\t\tdecimals: bcs.u8(),\n\t\tdiscount_percentage: bcs.u8(),\n\t\tprice_feed_id: bcs.vector(bcs.u8()),\n\t\ttype_name: type_name.TypeName,\n\t},\n});\nexport const PaymentsConfig = new MoveStruct({\n\tname: `${$moduleName}::PaymentsConfig`,\n\tfields: {\n\t\tcurrencies: vec_map.VecMap(type_name.TypeName, CoinTypeData),\n\t\tbase_currency: type_name.TypeName,\n\t\tmax_age: bcs.u64(),\n\t\t/** The percentage of the payment that gets burned, in basis points. */\n\t\tburn_bps: bcs.u64(),\n\t},\n});\nexport interface HandleBasePaymentArguments {\n\tsuins: RawTransactionArgument<string>;\n\tbbbVault: RawTransactionArgument<string>;\n\tintent: TransactionArgument;\n\tpayment: RawTransactionArgument<string>;\n}\nexport interface HandleBasePaymentOptions {\n\tpackage?: string;\n\targuments:\n\t\t| HandleBasePaymentArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tbbbVault: RawTransactionArgument<string>,\n\t\t\t\tintent: TransactionArgument,\n\t\t\t\tpayment: RawTransactionArgument<string>,\n\t\t  ];\n\ttypeArguments: [string];\n}\n/**\n * This has to be called with our base payment currency. The payment has to be\n * equal to the base price of the domain. We do not need to check the price feed\n * for the base currency.\n */\nexport function handleBasePayment(options: HandleBasePaymentOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = [null, null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'bbbVault', 'intent', 'payment'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'handle_base_payment',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface HandlePaymentArguments {\n\tSuins: RawTransactionArgument<string>;\n\tBbbVault: RawTransactionArgument<string>;\n\tIntent: TransactionArgument;\n\tPayment: RawTransactionArgument<string>;\n\tPriceInfoObject: RawTransactionArgument<string>;\n\tUserPriceGuard: RawTransactionArgument<number | bigint>;\n}\nexport interface HandlePaymentOptions {\n\tpackage?: string;\n\targuments:\n\t\t| HandlePaymentArguments\n\t\t| [\n\t\t\t\tSuins: RawTransactionArgument<string>,\n\t\t\t\tBbbVault: RawTransactionArgument<string>,\n\t\t\t\tIntent: TransactionArgument,\n\t\t\t\tPayment: RawTransactionArgument<string>,\n\t\t\t\tPriceInfoObject: RawTransactionArgument<string>,\n\t\t\t\tUserPriceGuard: RawTransactionArgument<number | bigint>,\n\t\t  ];\n\ttypeArguments: [string];\n}\n/**\n * Deprecated after the Pyth Core to Pro cutover: reads the Core feed, which stops\n * updating. The signature is retained for upgrade compatibility, but the body is\n * disabled. Use `handle_payment_pro` instead. Callers needing the Core feed can\n * still target the pre-upgrade package version.\n */\nexport function handlePayment(options: HandlePaymentOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = [null, null, null, null, '0x2::clock::Clock', null, 'u64'] satisfies (\n\t\tstring | null\n\t)[];\n\tconst parameterNames = [\n\t\t'Suins',\n\t\t'BbbVault',\n\t\t'Intent',\n\t\t'Payment',\n\t\t'PriceInfoObject',\n\t\t'UserPriceGuard',\n\t];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'handle_payment',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface HandlePaymentProArguments {\n\tsuins: RawTransactionArgument<string>;\n\tbbbVault: RawTransactionArgument<string>;\n\tintent: TransactionArgument;\n\tpayment: RawTransactionArgument<string>;\n\tpriceInfoObject: RawTransactionArgument<string>;\n\tuserPriceGuard: RawTransactionArgument<number | bigint>;\n}\nexport interface HandlePaymentProOptions {\n\tpackage?: string;\n\targuments:\n\t\t| HandlePaymentProArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tbbbVault: RawTransactionArgument<string>,\n\t\t\t\tintent: TransactionArgument,\n\t\t\t\tpayment: RawTransactionArgument<string>,\n\t\t\t\tpriceInfoObject: RawTransactionArgument<string>,\n\t\t\t\tuserPriceGuard: RawTransactionArgument<number | bigint>,\n\t\t  ];\n\ttypeArguments: [string];\n}\n/**\n * `handle_payment` variant that reads the Pro-compatible Pyth feed, for use after\n * the Pyth Core to Pro cutover. Behaviour matches `handle_payment`; only the price\n * source differs.\n */\nexport function handlePaymentPro(options: HandlePaymentProOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = [null, null, null, null, '0x2::clock::Clock', null, 'u64'] satisfies (\n\t\tstring | null\n\t)[];\n\tconst parameterNames = [\n\t\t'suins',\n\t\t'bbbVault',\n\t\t'intent',\n\t\t'payment',\n\t\t'priceInfoObject',\n\t\t'userPriceGuard',\n\t];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'handle_payment_pro',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface CalculatePriceArguments {\n\tSuins: RawTransactionArgument<string>;\n\tBaseAmount: RawTransactionArgument<number | bigint>;\n\tPriceInfoObject: RawTransactionArgument<string>;\n}\nexport interface CalculatePriceOptions {\n\tpackage?: string;\n\targuments:\n\t\t| CalculatePriceArguments\n\t\t| [\n\t\t\t\tSuins: RawTransactionArgument<string>,\n\t\t\t\tBaseAmount: RawTransactionArgument<number | bigint>,\n\t\t\t\tPriceInfoObject: RawTransactionArgument<string>,\n\t\t  ];\n\ttypeArguments: [string];\n}\n/**\n * Deprecated after the Pyth Core to Pro cutover: reads the Core feed, which stops\n * updating. The signature is retained for upgrade compatibility, but the body is\n * disabled. Use `calculate_price_pro` instead. Callers needing the Core feed can\n * still target the pre-upgrade package version.\n */\nexport function calculatePrice(options: CalculatePriceOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = [null, 'u64', '0x2::clock::Clock', null] satisfies (string | null)[];\n\tconst parameterNames = ['Suins', 'BaseAmount', 'PriceInfoObject'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'calculate_price',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface CalculatePriceProArguments {\n\tsuins: RawTransactionArgument<string>;\n\tbaseAmount: RawTransactionArgument<number | bigint>;\n\tpriceInfoObject: RawTransactionArgument<string>;\n}\nexport interface CalculatePriceProOptions {\n\tpackage?: string;\n\targuments:\n\t\t| CalculatePriceProArguments\n\t\t| [\n\t\t\t\tsuins: RawTransactionArgument<string>,\n\t\t\t\tbaseAmount: RawTransactionArgument<number | bigint>,\n\t\t\t\tpriceInfoObject: RawTransactionArgument<string>,\n\t\t  ];\n\ttypeArguments: [string];\n}\n/**\n * `calculate_price` variant that reads the Pro-compatible Pyth feed, for use after\n * the Pyth Core to Pro cutover. Behaviour matches `calculate_price`; only the\n * price source differs.\n */\nexport function calculatePricePro(options: CalculatePriceProOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = [null, 'u64', '0x2::clock::Clock', null] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'baseAmount', 'priceInfoObject'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'calculate_price_pro',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface CalculatePriceAfterDiscountArguments {\n\tsuins: RawTransactionArgument<string>;\n\tintent: TransactionArgument;\n}\nexport interface CalculatePriceAfterDiscountOptions {\n\tpackage?: string;\n\targuments:\n\t\t| CalculatePriceAfterDiscountArguments\n\t\t| [suins: RawTransactionArgument<string>, intent: TransactionArgument];\n\ttypeArguments: [string];\n}\nexport function calculatePriceAfterDiscount(options: CalculatePriceAfterDiscountOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = [null, null] satisfies (string | null)[];\n\tconst parameterNames = ['suins', 'intent'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'calculate_price_after_discount',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface NewCoinTypeDataArguments {\n\tcoinMetadata: RawTransactionArgument<string>;\n\tdiscountPercentage: RawTransactionArgument<number>;\n\tpriceFeedId: RawTransactionArgument<Array<number>>;\n}\nexport interface NewCoinTypeDataOptions {\n\tpackage?: string;\n\targuments:\n\t\t| NewCoinTypeDataArguments\n\t\t| [\n\t\t\t\tcoinMetadata: RawTransactionArgument<string>,\n\t\t\t\tdiscountPercentage: RawTransactionArgument<number>,\n\t\t\t\tpriceFeedId: RawTransactionArgument<Array<number>>,\n\t\t  ];\n\ttypeArguments: [string];\n}\n/** Creates a new CoinTypeData struct. Leave price_feed_id empty for base currency. */\nexport function newCoinTypeData(options: NewCoinTypeDataOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = [null, 'u8', 'vector<u8>'] satisfies (string | null)[];\n\tconst parameterNames = ['coinMetadata', 'discountPercentage', 'priceFeedId'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'new_coin_type_data',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t\ttypeArguments: options.typeArguments,\n\t\t});\n}\nexport interface NewPaymentsConfigArguments {\n\tsetups: TransactionArgument;\n\tbaseCurrency: TransactionArgument;\n\tmaxAge: RawTransactionArgument<number | bigint>;\n\tburnBps: RawTransactionArgument<number | bigint>;\n}\nexport interface NewPaymentsConfigOptions {\n\tpackage?: string;\n\targuments:\n\t\t| NewPaymentsConfigArguments\n\t\t| [\n\t\t\t\tsetups: TransactionArgument,\n\t\t\t\tbaseCurrency: TransactionArgument,\n\t\t\t\tmaxAge: RawTransactionArgument<number | bigint>,\n\t\t\t\tburnBps: RawTransactionArgument<number | bigint>,\n\t\t  ];\n}\n/**\n * Creates a new PaymentsConfig struct. Can be attached by the Admin to SuiNS to\n * allow the payments module to work.\n */\nexport function newPaymentsConfig(options: NewPaymentsConfigOptions) {\n\tconst packageAddress = options.package ?? '@suins/payments';\n\tconst argumentsTypes = ['vector<null>', null, 'u64', 'u64'] satisfies (string | null)[];\n\tconst parameterNames = ['setups', 'baseCurrency', 'maxAge', 'burnBps'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'payments',\n\t\t\tfunction: 'new_payments_config',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\n"],"mappings":";;;;;;;;;AAaA,MAAM,cAAc;AACpB,MAAa,cAAc,IAAI,UAAU;CACxC,MAAM,GAAG,YAAY;CACrB,QAAQ,CAAC,IAAI,MAAM,CAAC;CACpB,CAAC;AACF,MAAa,eAAe,IAAI,WAAW;CAC1C,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,UAAU,IAAI,IAAI;EAClB,qBAAqB,IAAI,IAAI;EAC7B,eAAe,IAAI,OAAO,IAAI,IAAI,CAAC;EACnC,WAAWA;EACX;CACD,CAAC;AACF,MAAa,iBAAiB,IAAI,WAAW;CAC5C,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,YAAYC,OAAeD,UAAoB,aAAa;EAC5D,eAAeA;EACf,SAAS,IAAI,KAAK;EAElB,UAAU,IAAI,KAAK;EACnB;CACD,CAAC;;;;;;AAwBF,SAAgB,kBAAkB,SAAmC;CACpE,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAM;EAAK;CAC/C,MAAM,iBAAiB;EAAC;EAAS;EAAY;EAAU;EAAU;AACjE,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,eAAe,QAAQ;EACvB,CAAC;;;;;;;AA+EJ,SAAgB,iBAAiB,SAAkC;CAClE,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAM;EAAM;EAAqB;EAAM;EAAM;CAGjF,MAAM,iBAAiB;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;AACD,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,eAAe,QAAQ;EACvB,CAAC;;;;;;;AA0DJ,SAAgB,kBAAkB,SAAmC;CACpE,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB;EAAC;EAAM;EAAO;EAAqB;EAAK;CAC/D,MAAM,iBAAiB;EAAC;EAAS;EAAc;EAAkB;AACjE,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,eAAe,QAAQ;EACvB,CAAC;;AAaJ,SAAgB,4BAA4B,SAA6C;CACxF,MAAM,iBAAiB,QAAQ,WAAW;CAC1C,MAAM,iBAAiB,CAAC,MAAM,KAAK;CACnC,MAAM,iBAAiB,CAAC,SAAS,SAAS;AAC1C,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,eAAe,QAAQ;EACvB,CAAC"}