diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8dae4a0 --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ +.PHONY: generate-client + + +generate-client: + ogen -clean -config .ogen.yml -package tonapi -target . api/openapi.yml + diff --git a/api/openapi.yml b/api/openapi.yml index d07ca0f..7f6aa17 100644 --- a/api/openapi.yml +++ b/api/openapi.yml @@ -1,4 +1,4 @@ -openapi: 3.1.0 +openapi: 3.0.0 info: title: REST api to TON blockchain explorer version: 2.0.0 @@ -71,7 +71,7 @@ tags: - name: Lite Server externalDocs: description: Additional documentation - url: https://docs.tonconsole.com/tonapi/rest-api/liteserver + url: https://docs.tonconsole.com/tonapi/rest-api/lite-server - name: Emulation externalDocs: description: Additional documentation @@ -84,6 +84,11 @@ tags: externalDocs: description: Additional documentation url: https://docs.tonconsole.com/tonapi/rest-api/extra-currency + - name: Purchases + +security: + - bearerAuth: [] + - {} paths: /v2/openapi.json: @@ -94,6 +99,7 @@ paths: - Utilities responses: '200': + description: openapi.json content: application/json: schema: { } # Free-form JSON value @@ -107,6 +113,7 @@ paths: - Utilities responses: '200': + description: openapi.yml content: application/yaml: schema: @@ -164,6 +171,29 @@ paths: $ref: '#/components/schemas/BlockchainBlock' 'default': $ref: '#/components/responses/Error' + /v2/blockchain/blocks/{block_id}/boc: + get: + description: Download blockchain block BOC + operationId: downloadBlockchainBlockBoc + tags: + - Blockchain + parameters: + - $ref: '#/components/parameters/blockchainBlockIDParameter' + responses: + '200': + description: Block BOC file + content: + application/octet-stream: + schema: + type: string + format: binary + headers: + Content-Disposition: + schema: + type: string + example: 'attachment; filename="block.boc"' + 'default': + $ref: '#/components/responses/Error' /v2/blockchain/masterchain/{masterchain_seqno}/shards: get: description: Get blockchain block shards @@ -413,14 +443,14 @@ paths: schema: type: array description: |- - Supported values: - "NaN" for NaN type, - "Null" for Null type, - 10-base digits for tiny int type (Example: 100500), - 0x-prefixed hex digits for int257 (Example: 0xfa01d78381ae32), - all forms of addresses for slice type (Example: 0:6e731f2e28b73539a7f85ac47ca104d5840b229351189977bb6151d36b5e3f5e), - single-root base64-encoded BOC for cell (Example: "te6ccgEBAQEAAgAAAA=="), - single-root hex-encoded BOC for slice (Example: b5ee9c72010101010002000000) + Array of method arguments in string format. Supported value formats: + - "NaN" for Not-a-Number type + - "Null" for Null type + - Decimal integers for tinyint type (e.g., "100500") + - 0x-prefixed hex strings for int257 type (e.g., "0xfa01d78381ae32") + - TON blockchain addresses for slice type (e.g., "0:6e731f2e28b73539a7f85ac47ca104d5840b229351189977bb6151d36b5e3f5e") + - Base64-encoded BOC for cell type (e.g., "te6ccgEBAQEAAgAAAA==") + - Hex-encoded BOC for slice type (e.g., "b5ee9c72010101010002000000") items: type: string example: [ "0:9a33970f617bcd71acf2cd28357c067aa31859c02820d8f01d74c88063a8f4d8" ] @@ -433,6 +463,25 @@ paths: $ref: '#/components/schemas/MethodExecutionResult' 'default': $ref: '#/components/responses/Error' + post: + description: Execute get method for account + operationId: execGetMethodWithBodyForBlockchainAccount + tags: + - Blockchain + parameters: + - $ref: '#/components/parameters/accountIDParameter' + - $ref: '#/components/parameters/methodNameParameter' + requestBody: + $ref: "#/components/requestBodies/ExecGetMethodArgs" + responses: + '200': + description: method execution result + content: + application/json: + schema: + $ref: '#/components/schemas/MethodExecutionResult' + 'default': + $ref: '#/components/responses/Error' /v2/blockchain/message: post: description: Send message to blockchain @@ -645,7 +694,6 @@ paths: - Accounts parameters: - $ref: '#/components/parameters/accountIDParameter' - - $ref: '#/components/parameters/i18n' - name: before_lt in: query description: "omit this parameter to get last events" @@ -663,34 +711,19 @@ paths: example: 100 maximum: 1000 minimum: 1 - - name: start_date - in: query - required: false - schema: - type: integer - format: int64 - maximum: 2114380800 - example: 1668436763 - - name: end_date - in: query - required: false - schema: - type: integer - format: int64 - maximum: 2114380800 - example: 1668436763 responses: '200': description: account jettons history content: application/json: schema: - $ref: '#/components/schemas/AccountEvents' + $ref: '#/components/schemas/JettonOperations' 'default': $ref: '#/components/responses/Error' /v2/accounts/{account_id}/jettons/{jetton_id}/history: get: - description: Get the transfer jetton history for account and jetton + deprecated: true + description: Please use `getJettonAccountHistoryByID`` instead operationId: getAccountJettonHistoryByID tags: - Accounts @@ -769,7 +802,6 @@ paths: $ref: '#/components/responses/Error' /v2/accounts/{account_id}/nfts/history: get: - x-question: duplicate of getNftHistoryByID ? description: Get the transfer nft history operationId: getAccountNftHistory tags: @@ -794,29 +826,13 @@ paths: example: 100 maximum: 1000 minimum: 1 - - name: start_date - in: query - required: false - schema: - type: integer - format: int64 - maximum: 2114380800 - example: 1668436763 - - name: end_date - in: query - required: false - schema: - type: integer - format: int64 - maximum: 2114380800 - example: 1668436763 responses: '200': description: nft history content: application/json: schema: - $ref: '#/components/schemas/AccountEvents' + $ref: '#/components/schemas/NftOperations' 'default': $ref: '#/components/responses/Error' /v2/accounts/{account_id}/events: @@ -1049,7 +1065,7 @@ paths: $ref: '#/components/schemas/Multisigs' 'default': $ref: '#/components/responses/Error' - + /v2/accounts/{account_id}/diff: get: description: Get account's balance change @@ -1090,7 +1106,7 @@ paths: example: 1000000000 'default': $ref: '#/components/responses/Error' - + /v2/accounts/{account_id}/extra-currency/{id}/history: get: description: Get the transfer history of extra currencies for an account. @@ -1143,7 +1159,7 @@ paths: $ref: '#/components/schemas/AccountEvents' 'default': $ref: '#/components/responses/Error' - + /v2/dns/{domain_name}: get: description: Get full information about domain name @@ -1335,7 +1351,8 @@ paths: $ref: '#/components/responses/Error' /v2/nfts/{account_id}/history: get: - description: Get the transfer nfts history for account + deprecated: true + description: Please use `getAccountNftHistory`` instead operationId: getNftHistoryByID tags: - NFT @@ -1497,7 +1514,14 @@ paths: parameters: - $ref: '#/components/parameters/accountIDParameter' - $ref: '#/components/parameters/limitQuery' - - $ref: '#/components/parameters/offsetQuery' + - in: query + name: offset + required: false + schema: + type: integer + default: 0 + minimum: 0 + maximum: 9000 responses: '200': description: jetton's holders @@ -1543,7 +1567,58 @@ paths: $ref: '#/components/schemas/Event' 'default': $ref: '#/components/responses/Error' - + /v2/jettons/{jetton_id}/accounts/{account_id}/history: + get: + description: Get the transfer jetton history for account and jetton + operationId: getJettonAccountHistoryByID + tags: + - Accounts + parameters: + - $ref: '#/components/parameters/accountIDParameter' + - $ref: '#/components/parameters/jettonIDParameter' + - name: before_lt + in: query + description: "omit this parameter to get last events" + required: false + schema: + type: integer + format: int64 + example: 25758317000002 + x-js-format: bigint + - name: limit + in: query + required: true + schema: + type: integer + example: 100 + maximum: 1000 + minimum: 1 + - name: start_date + in: query + required: false + schema: + type: integer + format: int64 + maximum: 2114380800 + example: 1668436763 + - name: end_date + in: query + required: false + schema: + type: integer + format: int64 + maximum: 2114380800 + example: 1668436763 + responses: + '200': + description: account jetton history + content: + application/json: + schema: + $ref: '#/components/schemas/JettonOperations' + 'default': + $ref: '#/components/responses/Error' + /v2/extra-currency/{id}: get: description: Get extra currency info by id @@ -1696,7 +1771,7 @@ paths: $ref: '#/components/schemas/StorageProvider' 'default': $ref: '#/components/responses/Error' - + /v2/rates: get: description: Get the token price in the chosen currency for display only. Don’t use this for financial transactions. @@ -1798,9 +1873,7 @@ paths: - points properties: points: - type: array - items: - $ref: '#/components/schemas/ChartPoints' + $ref: '#/components/schemas/ChartPoints' 'default': $ref: '#/components/responses/Error' /v2/rates/markets: @@ -1825,7 +1898,7 @@ paths: $ref: '#/components/schemas/MarketTonRates' 'default': $ref: '#/components/responses/Error' - + /v2/tonconnect/payload: get: description: Get a payload for further token receipt @@ -1904,6 +1977,23 @@ paths: $ref: '#/components/schemas/Seqno' 'default': $ref: '#/components/responses/Error' + /v2/wallet/{account_id}: + get: + description: Get human-friendly information about a wallet without low-level details. + operationId: getWalletInfo + tags: + - Wallet + parameters: + - $ref: '#/components/parameters/accountIDParameter' + responses: + '200': + description: wallet + content: + application/json: + schema: + $ref: '#/components/schemas/Wallet' + 'default': + $ref: '#/components/responses/Error' /v2/gasless/config: get: description: Returns configuration of gasless transfers @@ -1977,7 +2067,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Accounts' + $ref: '#/components/schemas/Wallets' 'default': $ref: '#/components/responses/Error' @@ -2619,7 +2709,7 @@ paths: format: uint32 'default': $ref: '#/components/responses/Error' - + /v2/multisig/{account_id}: get: description: Get multisig account info @@ -2637,6 +2727,25 @@ paths: $ref: '#/components/schemas/Multisig' 'default': $ref: '#/components/responses/Error' + + /v2/multisig/order/{account_id}: + get: + description: Get multisig order + operationId: getMultisigOrder + tags: + - Multisig + parameters: + - $ref: '#/components/parameters/accountIDParameter' + responses: + '200': + description: multisig order + content: + application/json: + schema: + $ref: '#/components/schemas/MultisigOrder' + 'default': + $ref: '#/components/responses/Error' + /v2/message/decode: post: description: Decode a given message. Only external incoming messages can be decoded currently. @@ -2749,9 +2858,41 @@ paths: $ref: '#/components/schemas/AccountEvent' 'default': $ref: '#/components/responses/Error' -security: - - bearerAuth: [ ] - - { } + /v2/purchases/{account_id}/history: + get: + description: Get history of purchases + operationId: getPurchaseHistory + tags: + - Purchases + parameters: + - $ref: '#/components/parameters/accountIDParameter' + - name: before_lt + in: query + description: "omit this parameter to get last invoices" + required: false + schema: + type: integer + format: int64 + example: 25758317000002 + x-js-format: bigint + - name: limit + in: query + required: false + schema: + type: integer + default: 100 + example: 100 + maximum: 1000 + minimum: 1 + responses: + '200': + description: account purchase history + content: + application/json: + schema: + $ref: '#/components/schemas/AccountPurchases' + 'default': + $ref: '#/components/responses/Error' components: securitySchemes: bearerAuth: @@ -3283,7 +3424,22 @@ components: body: type: string format: cell-base64 - + ExecGetMethodArgs: + description: > + Request body for executing a GET method on a blockchain account via POST. + This format allows passing arguments in the request body instead of query parameters, + which is especially useful for large or complex input data. + content: + application/json: + schema: + type: object + required: + - args + properties: + args: + type: array + items: + $ref: '#/components/schemas/ExecGetMethodArg' schemas: Error: type: object @@ -4498,11 +4654,9 @@ components: x-js-format: bigint example: 123456789 extra_balance: - type: object - additionalProperties: - type: string - # x-js-format: bigint ??? - # example ??? + type: array + items: + $ref: '#/components/schemas/ExtraCurrency' code: type: string format: cell @@ -4540,42 +4694,153 @@ components: root: type: string format: cell - Account: + WalletStats: + type: object + required: + - nfts_count + - jettons_count + - multisig_count + - staking_count + properties: + nfts_count: + type: integer + format: int32 + example: 123456789 + jettons_count: + type: integer + format: int32 + example: 123456789 + multisig_count: + type: integer + format: int32 + example: 123456789 + staking_count: + type: integer + format: int32 + example: 123456789 + WalletPlugin: + type: object + required: + - address + - type + - status + properties: + address: + type: string + format: address + example: 0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf + type: + type: string + example: "subscription_v1" + status: + '$ref': '#/components/schemas/AccountStatus' + Wallets: + type: object + required: + - accounts + properties: + accounts: + type: array + items: + $ref: '#/components/schemas/Wallet' + Wallet: type: object required: - address - balance + - stats + - plugins - status - last_activity - get_methods - is_wallet + - last_lt properties: address: type: string format: address example: 0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf + is_wallet: + type: boolean balance: type: integer format: int64 example: 123456789 x-js-format: bigint - extra_balance: + stats: + $ref: '#/components/schemas/WalletStats' + plugins: type: array items: - $ref: '#/components/schemas/ExtraCurrency' - currencies_balance: - description: "{'USD': 1, 'IDR': 1000}" - type: object - additionalProperties: true - example: { } + $ref: '#/components/schemas/WalletPlugin' + status: + '$ref': '#/components/schemas/AccountStatus' last_activity: type: integer description: unix timestamp format: int64 example: 1720860269 - status: - '$ref': '#/components/schemas/AccountStatus' - interfaces: + name: + type: string + example: "Ton foundation" + icon: + type: string + example: "https://ton.org/logo.png" + get_methods: + type: array + deprecated: true + items: + type: string + example: [ 'get_item_data' ] + is_suspended: + type: boolean + signature_disabled: + type: boolean + interfaces: + type: array + items: + type: string + last_lt: + type: integer + format: int64 + example: 25713146000001 + x-js-format: bigint + Account: + type: object + required: + - address + - balance + - status + - last_activity + - get_methods + - is_wallet + properties: + address: + type: string + format: address + example: 0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf + balance: + type: integer + format: int64 + example: 123456789 + x-js-format: bigint + extra_balance: + type: array + items: + $ref: '#/components/schemas/ExtraCurrency' + currencies_balance: + description: "{'USD': 1, 'IDR': 1000}" + type: object + additionalProperties: true + example: { } + last_activity: + type: integer + description: unix timestamp + format: int64 + example: 1720860269 + status: + '$ref': '#/components/schemas/AccountStatus' + interfaces: type: array items: type: string @@ -5422,19 +5687,45 @@ components: type: array items: $ref: '#/components/schemas/JettonBalance' + CurrencyType: + type: string + example: jetton + enum: + - native + - extra_currency + - jetton + - fiat Price: type: object required: + - currency_type - value + - decimals - token_name + - verification + - image properties: + currency_type: + $ref: '#/components/schemas/CurrencyType' value: type: string x-js-format: bigint example: "123000000000" + decimals: + type: integer + example: 9 token_name: type: string example: TON + verification: + $ref: '#/components/schemas/TrustType' + image: + type: string + example: https://cache.tonapi.io/images/jetton.jpg + jetton: + type: string + format: address + example: 0:0BB5A9F69043EEBDDA5AD2E946EB953242BD8F603FE795D90698CEEC6BFC60A0 ImagePreview: type: object required: @@ -5535,9 +5826,10 @@ components: type: string example: crypto.ton approved_by: + allOf: + - $ref: '#/components/schemas/NftApprovedBy' deprecated: true - description: "please use trust field" - $ref: '#/components/schemas/NftApprovedBy' + description: Please use trust field include_cnft: type: boolean example: false @@ -5611,6 +5903,7 @@ components: - risk - creation_date - signed_by + - multisig_address properties: address: type: string @@ -5649,6 +5942,31 @@ components: type: string format: address example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" + multisig_address: + type: string + format: address + example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" + changing_parameters: + type: object + required: + - threshold + - signers + - proposers + properties: + threshold: + type: integer + format: int32 + signers: + type: array + items: + type: string + format: address + example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" + proposers: + type: array + items: + type: string + format: address Refund: type: object required: @@ -5722,11 +6040,11 @@ components: enum: - TonTransfer - ExtraCurrencyTransfer + - ContractDeploy - JettonTransfer - JettonBurn - JettonMint - NftItemTransfer - - ContractDeploy - Subscribe - UnSubscribe - AuctionBid @@ -5734,11 +6052,12 @@ components: - DepositStake - WithdrawStake - WithdrawStakeRequest + - ElectionsDepositStake + - ElectionsRecoverStake - JettonSwap - SmartContractExec - - ElectionsRecoverStake - - ElectionsDepositStake - DomainRenew + - Purchase - Unknown status: type: string @@ -5784,6 +6103,10 @@ components: $ref: '#/components/schemas/SmartContractAction' DomainRenew: $ref: '#/components/schemas/DomainRenewAction' + Purchase: + $ref: '#/components/schemas/PurchaseAction' + GasRelay: + $ref: '#/components/schemas/GasRelayAction' simple_preview: $ref: '#/components/schemas/ActionSimplePreview' base_transactions: @@ -5912,6 +6235,42 @@ components: example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" renewer: $ref: '#/components/schemas/AccountAddress' + GasRelayAction: + type: object + required: + - amount + - relayer + - target + properties: + amount: + type: integer + format: int64 + x-js-format: bigint + example: 1000000000 + relayer: + $ref: '#/components/schemas/AccountAddress' + target: + $ref: '#/components/schemas/AccountAddress' + PurchaseAction: + type: object + required: + - source + - destination + - invoice_id + - amount + - metadata + properties: + source: + $ref: '#/components/schemas/AccountAddress' + destination: + $ref: '#/components/schemas/AccountAddress' + invoice_id: + type: string + example: 03cfc582-b1c3-410a-a9a7-1f3afe326b3b + amount: + $ref: '#/components/schemas/Price' + metadata: + $ref: '#/components/schemas/Metadata' NftItemTransferAction: type: object required: @@ -6278,6 +6637,7 @@ components: - lt - in_progress - extra + - progress properties: event_id: type: string @@ -6310,6 +6670,12 @@ components: type: integer format: int64 example: 3 + progress: + type: number + format: float + minimum: 0 + maximum: 1 + example: 0.5 AccountEvents: type: object required: @@ -6324,6 +6690,67 @@ components: type: integer format: int64 example: 25713146000001 + Purchase: + type: object + required: + - event_id + - invoice_id + - source + - destination + - lt + - utime + - amount + - metadata + properties: + event_id: + type: string + example: e8b0e3fee4a26bd2317ac1f9952fcdc87dc08fdb617656b5202416323337372e + invoice_id: + type: string + example: 03cfc582-b1c3-410a-a9a7-1f3afe326b3b + source: + $ref: '#/components/schemas/AccountAddress' + destination: + $ref: '#/components/schemas/AccountAddress' + lt: + type: integer + format: int64 + example: 25713146000001 + x-js-format: bigint + utime: + type: integer + format: int64 + example: 1645544908 + amount: + $ref: '#/components/schemas/Price' + metadata: + $ref: '#/components/schemas/Metadata' + AccountPurchases: + type: object + required: + - purchases + - next_from + properties: + purchases: + type: array + items: + $ref: '#/components/schemas/Purchase' + next_from: + type: integer + format: int64 + example: 25713146000001 + Metadata: + type: object + required: + - encrypted_binary + properties: + encrypted_binary: + type: string + description: hex encoded bytes + decryption_key: + type: string + description: hex encoded bytes + example: "dead.....beef" TraceID: type: object required: @@ -6359,62 +6786,50 @@ components: Subscription: type: object required: - - address - - wallet_address - - beneficiary_address - - amount + - type + - status - period - - start_time - - timeout - - last_payment_time - - last_request_time - subscription_id - - failed_attempts + - payment_per_period + - wallet + - next_charge_at + - metadata properties: - address: - type: string - format: address - example: 0:dea8f638b789172ce36d10a20318125e52c649aa84893cd77858224fe2b9b0ee - wallet_address: + type: type: string - format: address - example: 0:567DE86AF2B6A557D7085807CF7C26338124987A5179344F0D0FA2657EB710F1 - beneficiary_address: + description: type of subscription + example: v2 + status: type: string - format: address - example: 0:c704dadfabac88eab58e340de03080df81ff76636431f48624ad6e26fb2da0a4 - amount: - type: integer - format: int64 - example: 1000000000 + enum: + - not_ready + - active + - suspended + - cancelled period: type: integer + description: payment period in seconds format: int64 example: 2592000 - start_time: - type: integer - format: int64 - example: 1653996832 - timeout: - type: integer - format: int64 - example: 10800 - last_payment_time: - type: integer - format: int64 - example: 1653996834 - last_request_time: - type: integer - format: int64 - example: 0 subscription_id: + type: string + description: common identifier + payment_per_period: + $ref: '#/components/schemas/Price' + wallet: + $ref: '#/components/schemas/AccountAddress' + next_charge_at: type: integer format: int64 - example: 217477 - failed_attempts: - type: integer - format: int32 - example: 0 + example: 1653996834 + metadata: + $ref: '#/components/schemas/Metadata' + address: + type: string + format: address + example: 0:dea8f638b789172ce36d10a20318125e52c649aa84893cd77858224fe2b9b0ee + beneficiary: + $ref: '#/components/schemas/AccountAddress' Subscriptions: type: object required: @@ -6780,6 +7195,7 @@ components: - is_scam - lt - in_progress + - progress properties: event_id: type: string @@ -6809,6 +7225,12 @@ components: type: boolean example: false description: Event is not finished yet. Transactions still happening + progress: + type: number + format: float + minimum: 0 + maximum: 1 + example: 0.5 JettonMetadata: type: object required: @@ -7169,13 +7591,16 @@ components: ChartPoints: type: array items: - - type: integer - format: int64 - description: Unix timestamp of the data point - - type: number - description: Decimal price of the token in the requested currency - additionalItems: false - example: [ 1668436763, 97.21323234 ] + type: array + minItems: 2 + maxItems: 2 + items: + type: number + description: | + Each inner array is a pair [timestamp, price]: + • index 0 — Unix timestamp (int64) + • index 1 — token price (decimal) in the requested currency. + example: [[1668436763, 97.21323234]] AccountInfoByStateInit: type: object required: @@ -7385,7 +7810,143 @@ components: method: type: string example: "get_something" - + NftOperations: + type: object + required: + - operations + properties: + operations: + type: array + items: + $ref: '#/components/schemas/NftOperation' + next_from: + type: integer + format: int64 + example: 25713146000001 + x-js-format: bigint + NftOperation: + type: object + required: + - operation + - utime + - lt + - transaction_hash + - item + properties: + operation: + type: string + example: "transfer" + utime: + type: integer + format: int64 + example: 1234567890 + lt: + type: integer + format: int64 + example: 25713146000001 + x-js-format: bigint + transaction_hash: + type: string + example: "0xdeadbeaf" + source: + $ref: '#/components/schemas/AccountAddress' + destination: + $ref: '#/components/schemas/AccountAddress' + item: + $ref: '#/components/schemas/NftItem' + JettonOperations: + type: object + required: + - operations + properties: + operations: + type: array + items: + $ref: '#/components/schemas/JettonOperation' + next_from: + type: integer + format: int64 + example: 25713146000001 + x-js-format: bigint + JettonOperation: + type: object + required: + - operation + - utime + - lt + - jetton + - transaction_hash + - amount + - trace_id + - query_id + properties: + operation: + type: string + example: "transfer" + enum: [ "transfer", "mint", "burn" ] + utime: + type: integer + format: int64 + example: 1234567890 + lt: + type: integer + format: int64 + example: 25713146000001 + x-js-format: bigint + transaction_hash: + type: string + example: "cbf3e3d70ecf6f69643dd430761cd6004de2cacbdbc3029b0abd30ca3cc1c67e" + source: + $ref: '#/components/schemas/AccountAddress' + destination: + $ref: '#/components/schemas/AccountAddress' + amount: + type: string + x-js-format: bigint + example: "1000000000" + jetton: + $ref: '#/components/schemas/JettonPreview' + trace_id: + type: string + example: "8fa19eec7bd6d00d0d76048cebe31e34082a859410c9fcf7d55ef4ff8f7fcb47" + query_id: + type: string + example: "17286061481122318000" + x-js-format: bigint + payload: { } # free from json + ExecGetMethodArgType: + type: string + description: | + Data type of the argument value: + - `nan`: Not-a-Number value + - `null`: Null value + - `tinyint`: Decimal integer (e.g., `100500`) + - `int257`: 257-bit integer in hex format with 0x prefix (e.g., `0xfa01d78381ae32`) + - `slice`: TON blockchain address (e.g., `0:6e731f2e...`) + - `cell_boc_base64`: Base64-encoded cell BOC (Binary Object Code) (e.g., `te6ccgEBAQEAAgAAAA==`) + - `slice_boc_hex`: Hex-encoded slice BOC (e.g., `b5ee9c72...`) + enum: + - "nan" + - "null" + - "tinyint" + - "int257" + - "slice" + - "cell_boc_base64" + - "slice_boc_hex" + example: int257 + ExecGetMethodArg: + type: object + required: + - type + - value + properties: + type: + $ref: '#/components/schemas/ExecGetMethodArgType' + value: + type: string + description: String representation of the value according to the specified type + example: "0xfa01d78381ae32" + responses: Error: description: Some error during request processing @@ -7400,4 +7961,4 @@ components: type: string error_code: type: integer - format: int64 \ No newline at end of file + format: int64 diff --git a/oas_client_gen.go b/oas_client_gen.go index 42f1e14..6b10c8a 100644 --- a/oas_client_gen.go +++ b/oas_client_gen.go @@ -23,6 +23,11 @@ import ( "github.com/ogen-go/ogen/uri" ) +func trimTrailingSlashes(u *url.URL) { + u.Path = strings.TrimRight(u.Path, "/") + u.RawPath = strings.TrimRight(u.RawPath, "/") +} + // Invoker invokes operations described by OpenAPI v3 specification. type Invoker interface { // AccountDnsBackResolve invokes accountDnsBackResolve operation. @@ -55,6 +60,12 @@ type Invoker interface { // // GET /v2/dns/{domain_name}/resolve DnsResolve(ctx context.Context, params DnsResolveParams) (*DnsRecord, error) + // DownloadBlockchainBlockBoc invokes downloadBlockchainBlockBoc operation. + // + // Download blockchain block BOC. + // + // GET /v2/blockchain/blocks/{block_id}/boc + DownloadBlockchainBlockBoc(ctx context.Context, params DownloadBlockchainBlockBocParams) (*DownloadBlockchainBlockBocOKHeaders, error) // EmulateMessageToAccountEvent invokes emulateMessageToAccountEvent operation. // // Emulate sending message to retrieve account-specific events. @@ -85,6 +96,12 @@ type Invoker interface { // // GET /v2/blockchain/accounts/{account_id}/methods/{method_name} ExecGetMethodForBlockchainAccount(ctx context.Context, params ExecGetMethodForBlockchainAccountParams) (*MethodExecutionResult, error) + // ExecGetMethodWithBodyForBlockchainAccount invokes execGetMethodWithBodyForBlockchainAccount operation. + // + // Execute get method for account. + // + // POST /v2/blockchain/accounts/{account_id}/methods/{method_name} + ExecGetMethodWithBodyForBlockchainAccount(ctx context.Context, request OptExecGetMethodWithBodyForBlockchainAccountReq, params ExecGetMethodWithBodyForBlockchainAccountParams) (*MethodExecutionResult, error) // GaslessConfig invokes gaslessConfig operation. // // Returns configuration of gasless transfers. @@ -157,7 +174,9 @@ type Invoker interface { GetAccountJettonBalance(ctx context.Context, params GetAccountJettonBalanceParams) (*JettonBalance, error) // GetAccountJettonHistoryByID invokes getAccountJettonHistoryByID operation. // - // Get the transfer jetton history for account and jetton. + // Please use `getJettonAccountHistoryByID`` instead. + // + // Deprecated: schema marks this operation as deprecated. // // GET /v2/accounts/{account_id}/jettons/{jetton_id}/history GetAccountJettonHistoryByID(ctx context.Context, params GetAccountJettonHistoryByIDParams) (*AccountEvents, error) @@ -172,7 +191,7 @@ type Invoker interface { // Get the transfer jettons history for account. // // GET /v2/accounts/{account_id}/jettons/history - GetAccountJettonsHistory(ctx context.Context, params GetAccountJettonsHistoryParams) (*AccountEvents, error) + GetAccountJettonsHistory(ctx context.Context, params GetAccountJettonsHistoryParams) (*JettonOperations, error) // GetAccountMultisigs invokes getAccountMultisigs operation. // // Get account's multisigs. @@ -184,7 +203,7 @@ type Invoker interface { // Get the transfer nft history. // // GET /v2/accounts/{account_id}/nfts/history - GetAccountNftHistory(ctx context.Context, params GetAccountNftHistoryParams) (*AccountEvents, error) + GetAccountNftHistory(ctx context.Context, params GetAccountNftHistoryParams) (*NftOperations, error) // GetAccountNftItems invokes getAccountNftItems operation. // // Get all NFT items by owner address. @@ -362,6 +381,12 @@ type Invoker interface { // // GET /v2/nfts/collections/{account_id}/items GetItemsFromCollection(ctx context.Context, params GetItemsFromCollectionParams) (*NftItems, error) + // GetJettonAccountHistoryByID invokes getJettonAccountHistoryByID operation. + // + // Get the transfer jetton history for account and jetton. + // + // GET /v2/jettons/{jetton_id}/accounts/{account_id}/history + GetJettonAccountHistoryByID(ctx context.Context, params GetJettonAccountHistoryByIDParams) (*JettonOperations, error) // GetJettonHolders invokes getJettonHolders operation. // // Get jetton's holders. @@ -410,6 +435,12 @@ type Invoker interface { // // GET /v2/multisig/{account_id} GetMultisigAccount(ctx context.Context, params GetMultisigAccountParams) (*Multisig, error) + // GetMultisigOrder invokes getMultisigOrder operation. + // + // Get multisig order. + // + // GET /v2/multisig/order/{account_id} + GetMultisigOrder(ctx context.Context, params GetMultisigOrderParams) (*MultisigOrder, error) // GetNftCollection invokes getNftCollection operation. // // Get NFT collection by collection address. @@ -430,7 +461,9 @@ type Invoker interface { GetNftCollections(ctx context.Context, params GetNftCollectionsParams) (*NftCollections, error) // GetNftHistoryByID invokes getNftHistoryByID operation. // - // Get the transfer nfts history for account. + // Please use `getAccountNftHistory`` instead. + // + // Deprecated: schema marks this operation as deprecated. // // GET /v2/nfts/{account_id}/history GetNftHistoryByID(ctx context.Context, params GetNftHistoryByIDParams) (*AccountEvents, error) @@ -464,6 +497,12 @@ type Invoker interface { // // GET /v2/liteserver/get_out_msg_queue_sizes GetOutMsgQueueSizes(ctx context.Context) (*GetOutMsgQueueSizesOK, error) + // GetPurchaseHistory invokes getPurchaseHistory operation. + // + // Get history of purchases. + // + // GET /v2/purchases/{account_id}/history + GetPurchaseHistory(ctx context.Context, params GetPurchaseHistoryParams) (*AccountPurchases, error) // GetRates invokes getRates operation. // // Get the token price in the chosen currency for display only. Don’t use this for financial @@ -603,12 +642,18 @@ type Invoker interface { // // GET /v2/traces/{trace_id} GetTrace(ctx context.Context, params GetTraceParams) (*Trace, error) + // GetWalletInfo invokes getWalletInfo operation. + // + // Get human-friendly information about a wallet without low-level details. + // + // GET /v2/wallet/{account_id} + GetWalletInfo(ctx context.Context, params GetWalletInfoParams) (*Wallet, error) // GetWalletsByPublicKey invokes getWalletsByPublicKey operation. // // Get wallets by public key. // // GET /v2/pubkeys/{public_key}/wallets - GetWalletsByPublicKey(ctx context.Context, params GetWalletsByPublicKeyParams) (*Accounts, error) + GetWalletsByPublicKey(ctx context.Context, params GetWalletsByPublicKeyParams) (*Wallets, error) // ReindexAccount invokes reindexAccount operation. // // Update internal cache for a particular account. @@ -654,11 +699,6 @@ type Client struct { baseClient } -func trimTrailingSlashes(u *url.URL) { - u.Path = strings.TrimRight(u.Path, "/") - u.RawPath = strings.TrimRight(u.RawPath, "/") -} - // NewClient initializes new Client defined by OAS. func NewClient(serverURL string, sec SecuritySource, opts ...ClientOption) (*Client, error) { u, err := url.Parse(serverURL) @@ -1302,6 +1342,131 @@ func (c *Client) sendDnsResolve(ctx context.Context, params DnsResolveParams) (r return result, nil } +// DownloadBlockchainBlockBoc invokes downloadBlockchainBlockBoc operation. +// +// Download blockchain block BOC. +// +// GET /v2/blockchain/blocks/{block_id}/boc +func (c *Client) DownloadBlockchainBlockBoc(ctx context.Context, params DownloadBlockchainBlockBocParams) (*DownloadBlockchainBlockBocOKHeaders, error) { + res, err := c.sendDownloadBlockchainBlockBoc(ctx, params) + return res, err +} + +func (c *Client) sendDownloadBlockchainBlockBoc(ctx context.Context, params DownloadBlockchainBlockBocParams) (res *DownloadBlockchainBlockBocOKHeaders, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("downloadBlockchainBlockBoc"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/blockchain/blocks/{block_id}/boc"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, DownloadBlockchainBlockBocOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/v2/blockchain/blocks/" + { + // Encode "block_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "block_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.BlockID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/boc" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, DownloadBlockchainBlockBocOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"BearerAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeDownloadBlockchainBlockBocResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // EmulateMessageToAccountEvent invokes emulateMessageToAccountEvent operation. // // Emulate sending message to retrieve account-specific events. @@ -2044,21 +2209,37 @@ func (c *Client) sendExecGetMethodForBlockchainAccount(ctx context.Context, para return result, nil } -// GaslessConfig invokes gaslessConfig operation. +// ExecGetMethodWithBodyForBlockchainAccount invokes execGetMethodWithBodyForBlockchainAccount operation. // -// Returns configuration of gasless transfers. +// Execute get method for account. // -// GET /v2/gasless/config -func (c *Client) GaslessConfig(ctx context.Context) (*GaslessConfig, error) { - res, err := c.sendGaslessConfig(ctx) +// POST /v2/blockchain/accounts/{account_id}/methods/{method_name} +func (c *Client) ExecGetMethodWithBodyForBlockchainAccount(ctx context.Context, request OptExecGetMethodWithBodyForBlockchainAccountReq, params ExecGetMethodWithBodyForBlockchainAccountParams) (*MethodExecutionResult, error) { + res, err := c.sendExecGetMethodWithBodyForBlockchainAccount(ctx, request, params) return res, err } -func (c *Client) sendGaslessConfig(ctx context.Context) (res *GaslessConfig, err error) { +func (c *Client) sendExecGetMethodWithBodyForBlockchainAccount(ctx context.Context, request OptExecGetMethodWithBodyForBlockchainAccountReq, params ExecGetMethodWithBodyForBlockchainAccountParams) (res *MethodExecutionResult, err error) { + // Validate request before sending. + if err := func() error { + if value, ok := request.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("gaslessConfig"), - semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/v2/gasless/config"), + otelogen.OperationID("execGetMethodWithBodyForBlockchainAccount"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/v2/blockchain/accounts/{account_id}/methods/{method_name}"), } // Run stopwatch. @@ -2073,7 +2254,7 @@ func (c *Client) sendGaslessConfig(ctx context.Context) (res *GaslessConfig, err c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GaslessConfigOperation, + ctx, span := c.cfg.Tracer.Start(ctx, ExecGetMethodWithBodyForBlockchainAccountOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -2090,22 +2271,62 @@ func (c *Client) sendGaslessConfig(ctx context.Context) (res *GaslessConfig, err stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/v2/gasless/config" + var pathParts [4]string + pathParts[0] = "/v2/blockchain/accounts/" + { + // Encode "account_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/methods/" + { + // Encode "method_name" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "method_name", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.MethodName)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[3] = encoded + } uri.AddPathParts(u, pathParts[:]...) stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "GET", u) + r, err := ht.NewRequest(ctx, "POST", u) if err != nil { return res, errors.Wrap(err, "create request") } + if err := encodeExecGetMethodWithBodyForBlockchainAccountRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } { type bitset = [1]uint8 var satisfied bitset { stage = "Security:BearerAuth" - switch err := c.securityBearerAuth(ctx, GaslessConfigOperation, r); { + switch err := c.securityBearerAuth(ctx, ExecGetMethodWithBodyForBlockchainAccountOperation, r); { case err == nil: // if NO error satisfied[0] |= 1 << 0 case errors.Is(err, ogenerrors.ErrSkipClientSecurity): @@ -2142,7 +2363,7 @@ func (c *Client) sendGaslessConfig(ctx context.Context) (res *GaslessConfig, err defer resp.Body.Close() stage = "DecodeResponse" - result, err := decodeGaslessConfigResponse(resp) + result, err := decodeExecGetMethodWithBodyForBlockchainAccountResponse(resp) if err != nil { return res, errors.Wrap(err, "decode response") } @@ -2150,30 +2371,21 @@ func (c *Client) sendGaslessConfig(ctx context.Context) (res *GaslessConfig, err return result, nil } -// GaslessEstimate invokes gaslessEstimate operation. +// GaslessConfig invokes gaslessConfig operation. // -// Estimates the cost of the given messages and returns a payload to sign. +// Returns configuration of gasless transfers. // -// POST /v2/gasless/estimate/{master_id} -func (c *Client) GaslessEstimate(ctx context.Context, request *GaslessEstimateReq, params GaslessEstimateParams) (*SignRawParams, error) { - res, err := c.sendGaslessEstimate(ctx, request, params) +// GET /v2/gasless/config +func (c *Client) GaslessConfig(ctx context.Context) (*GaslessConfig, error) { + res, err := c.sendGaslessConfig(ctx) return res, err } -func (c *Client) sendGaslessEstimate(ctx context.Context, request *GaslessEstimateReq, params GaslessEstimateParams) (res *SignRawParams, err error) { - // Validate request before sending. - if err := func() error { - if err := request.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } +func (c *Client) sendGaslessConfig(ctx context.Context) (res *GaslessConfig, err error) { otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("gaslessEstimate"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/v2/gasless/estimate/{master_id}"), + otelogen.OperationID("gaslessConfig"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/gasless/config"), } // Run stopwatch. @@ -2188,7 +2400,7 @@ func (c *Client) sendGaslessEstimate(ctx context.Context, request *GaslessEstima c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GaslessEstimateOperation, + ctx, span := c.cfg.Tracer.Start(ctx, GaslessConfigOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -2205,17 +2417,132 @@ func (c *Client) sendGaslessEstimate(ctx context.Context, request *GaslessEstima stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) - var pathParts [2]string - pathParts[0] = "/v2/gasless/estimate/" - { - // Encode "master_id" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "master_id", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.StringToString(params.MasterID)) + var pathParts [1]string + pathParts[0] = "/v2/gasless/config" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, GaslessConfigOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"BearerAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGaslessConfigResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GaslessEstimate invokes gaslessEstimate operation. +// +// Estimates the cost of the given messages and returns a payload to sign. +// +// POST /v2/gasless/estimate/{master_id} +func (c *Client) GaslessEstimate(ctx context.Context, request *GaslessEstimateReq, params GaslessEstimateParams) (*SignRawParams, error) { + res, err := c.sendGaslessEstimate(ctx, request, params) + return res, err +} + +func (c *Client) sendGaslessEstimate(ctx context.Context, request *GaslessEstimateReq, params GaslessEstimateParams) (res *SignRawParams, err error) { + // Validate request before sending. + if err := func() error { + if err := request.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("gaslessEstimate"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/v2/gasless/estimate/{master_id}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, GaslessEstimateOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/v2/gasless/estimate/" + { + // Encode "master_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "master_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.MasterID)) }(); err != nil { return res, errors.Wrap(err, "encode path") } @@ -3809,7 +4136,9 @@ func (c *Client) sendGetAccountJettonBalance(ctx context.Context, params GetAcco // GetAccountJettonHistoryByID invokes getAccountJettonHistoryByID operation. // -// Get the transfer jetton history for account and jetton. +// Please use `getJettonAccountHistoryByID“ instead. +// +// Deprecated: schema marks this operation as deprecated. // // GET /v2/accounts/{account_id}/jettons/{jetton_id}/history func (c *Client) GetAccountJettonHistoryByID(ctx context.Context, params GetAccountJettonHistoryByIDParams) (*AccountEvents, error) { @@ -4223,12 +4552,12 @@ func (c *Client) sendGetAccountJettonsBalances(ctx context.Context, params GetAc // Get the transfer jettons history for account. // // GET /v2/accounts/{account_id}/jettons/history -func (c *Client) GetAccountJettonsHistory(ctx context.Context, params GetAccountJettonsHistoryParams) (*AccountEvents, error) { +func (c *Client) GetAccountJettonsHistory(ctx context.Context, params GetAccountJettonsHistoryParams) (*JettonOperations, error) { res, err := c.sendGetAccountJettonsHistory(ctx, params) return res, err } -func (c *Client) sendGetAccountJettonsHistory(ctx context.Context, params GetAccountJettonsHistoryParams) (res *AccountEvents, err error) { +func (c *Client) sendGetAccountJettonsHistory(ctx context.Context, params GetAccountJettonsHistoryParams) (res *JettonOperations, err error) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("getAccountJettonsHistory"), semconv.HTTPRequestMethodKey.String("GET"), @@ -4320,40 +4649,6 @@ func (c *Client) sendGetAccountJettonsHistory(ctx context.Context, params GetAcc return res, errors.Wrap(err, "encode query") } } - { - // Encode "start_date" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "start_date", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.StartDate.Get(); ok { - return e.EncodeValue(conv.Int64ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "end_date" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "end_date", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.EndDate.Get(); ok { - return e.EncodeValue(conv.Int64ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } u.RawQuery = q.Values().Encode() stage = "EncodeRequest" @@ -4362,23 +4657,6 @@ func (c *Client) sendGetAccountJettonsHistory(ctx context.Context, params GetAcc return res, errors.Wrap(err, "create request") } - stage = "EncodeHeaderParams" - h := uri.NewHeaderEncoder(r.Header) - { - cfg := uri.HeaderParameterEncodingConfig{ - Name: "Accept-Language", - Explode: false, - } - if err := h.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.AcceptLanguage.Get(); ok { - return e.EncodeValue(conv.StringToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode header") - } - } - { type bitset = [1]uint8 var satisfied bitset @@ -4559,12 +4837,12 @@ func (c *Client) sendGetAccountMultisigs(ctx context.Context, params GetAccountM // Get the transfer nft history. // // GET /v2/accounts/{account_id}/nfts/history -func (c *Client) GetAccountNftHistory(ctx context.Context, params GetAccountNftHistoryParams) (*AccountEvents, error) { +func (c *Client) GetAccountNftHistory(ctx context.Context, params GetAccountNftHistoryParams) (*NftOperations, error) { res, err := c.sendGetAccountNftHistory(ctx, params) return res, err } -func (c *Client) sendGetAccountNftHistory(ctx context.Context, params GetAccountNftHistoryParams) (res *AccountEvents, err error) { +func (c *Client) sendGetAccountNftHistory(ctx context.Context, params GetAccountNftHistoryParams) (res *NftOperations, err error) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("getAccountNftHistory"), semconv.HTTPRequestMethodKey.String("GET"), @@ -4656,40 +4934,6 @@ func (c *Client) sendGetAccountNftHistory(ctx context.Context, params GetAccount return res, errors.Wrap(err, "encode query") } } - { - // Encode "start_date" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "start_date", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.StartDate.Get(); ok { - return e.EncodeValue(conv.Int64ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "end_date" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "end_date", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.EndDate.Get(); ok { - return e.EncodeValue(conv.Int64ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } u.RawQuery = q.Values().Encode() stage = "EncodeRequest" @@ -8537,21 +8781,21 @@ func (c *Client) sendGetItemsFromCollection(ctx context.Context, params GetItems return result, nil } -// GetJettonHolders invokes getJettonHolders operation. +// GetJettonAccountHistoryByID invokes getJettonAccountHistoryByID operation. // -// Get jetton's holders. +// Get the transfer jetton history for account and jetton. // -// GET /v2/jettons/{account_id}/holders -func (c *Client) GetJettonHolders(ctx context.Context, params GetJettonHoldersParams) (*JettonHolders, error) { - res, err := c.sendGetJettonHolders(ctx, params) +// GET /v2/jettons/{jetton_id}/accounts/{account_id}/history +func (c *Client) GetJettonAccountHistoryByID(ctx context.Context, params GetJettonAccountHistoryByIDParams) (*JettonOperations, error) { + res, err := c.sendGetJettonAccountHistoryByID(ctx, params) return res, err } -func (c *Client) sendGetJettonHolders(ctx context.Context, params GetJettonHoldersParams) (res *JettonHolders, err error) { +func (c *Client) sendGetJettonAccountHistoryByID(ctx context.Context, params GetJettonAccountHistoryByIDParams) (res *JettonOperations, err error) { otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getJettonHolders"), + otelogen.OperationID("getJettonAccountHistoryByID"), semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/v2/jettons/{account_id}/holders"), + semconv.HTTPRouteKey.String("/v2/jettons/{jetton_id}/accounts/{account_id}/history"), } // Run stopwatch. @@ -8566,7 +8810,7 @@ func (c *Client) sendGetJettonHolders(ctx context.Context, params GetJettonHolde c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GetJettonHoldersOperation, + ctx, span := c.cfg.Tracer.Start(ctx, GetJettonAccountHistoryByIDOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -8583,8 +8827,27 @@ func (c *Client) sendGetJettonHolders(ctx context.Context, params GetJettonHolde stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string + var pathParts [5]string pathParts[0] = "/v2/jettons/" + { + // Encode "jetton_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "jetton_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.JettonID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/accounts/" { // Encode "account_id" parameter. e := uri.NewPathEncoder(uri.PathEncoderConfig{ @@ -8601,24 +8864,24 @@ func (c *Client) sendGetJettonHolders(ctx context.Context, params GetJettonHolde if err != nil { return res, errors.Wrap(err, "encode path") } - pathParts[1] = encoded + pathParts[3] = encoded } - pathParts[2] = "/holders" + pathParts[4] = "/history" uri.AddPathParts(u, pathParts[:]...) stage = "EncodeQueryParams" q := uri.NewQueryEncoder() { - // Encode "limit" parameter. + // Encode "before_lt" parameter. cfg := uri.QueryParameterEncodingConfig{ - Name: "limit", + Name: "before_lt", Style: uri.QueryStyleForm, Explode: true, } if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.Limit.Get(); ok { - return e.EncodeValue(conv.IntToString(val)) + if val, ok := params.BeforeLt.Get(); ok { + return e.EncodeValue(conv.Int64ToString(val)) } return nil }); err != nil { @@ -8626,7 +8889,201 @@ func (c *Client) sendGetJettonHolders(ctx context.Context, params GetJettonHolde } } { - // Encode "offset" parameter. + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.IntToString(params.Limit)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "start_date" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "start_date", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.StartDate.Get(); ok { + return e.EncodeValue(conv.Int64ToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "end_date" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "end_date", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.EndDate.Get(); ok { + return e.EncodeValue(conv.Int64ToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, GetJettonAccountHistoryByIDOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"BearerAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGetJettonAccountHistoryByIDResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GetJettonHolders invokes getJettonHolders operation. +// +// Get jetton's holders. +// +// GET /v2/jettons/{account_id}/holders +func (c *Client) GetJettonHolders(ctx context.Context, params GetJettonHoldersParams) (*JettonHolders, error) { + res, err := c.sendGetJettonHolders(ctx, params) + return res, err +} + +func (c *Client) sendGetJettonHolders(ctx context.Context, params GetJettonHoldersParams) (res *JettonHolders, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getJettonHolders"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/jettons/{account_id}/holders"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, GetJettonHoldersOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [3]string + pathParts[0] = "/v2/jettons/" + { + // Encode "account_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/holders" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Limit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "offset" parameter. cfg := uri.QueryParameterEncodingConfig{ Name: "offset", Style: uri.QueryStyleForm, @@ -9609,6 +10066,130 @@ func (c *Client) sendGetMultisigAccount(ctx context.Context, params GetMultisigA return result, nil } +// GetMultisigOrder invokes getMultisigOrder operation. +// +// Get multisig order. +// +// GET /v2/multisig/order/{account_id} +func (c *Client) GetMultisigOrder(ctx context.Context, params GetMultisigOrderParams) (*MultisigOrder, error) { + res, err := c.sendGetMultisigOrder(ctx, params) + return res, err +} + +func (c *Client) sendGetMultisigOrder(ctx context.Context, params GetMultisigOrderParams) (res *MultisigOrder, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getMultisigOrder"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/multisig/order/{account_id}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, GetMultisigOrderOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/v2/multisig/order/" + { + // Encode "account_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, GetMultisigOrderOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"BearerAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGetMultisigOrderResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // GetNftCollection invokes getNftCollection operation. // // Get NFT collection by collection address. @@ -10004,7 +10585,9 @@ func (c *Client) sendGetNftCollections(ctx context.Context, params GetNftCollect // GetNftHistoryByID invokes getNftHistoryByID operation. // -// Get the transfer nfts history for account. +// Please use `getAccountNftHistory“ instead. +// +// Deprecated: schema marks this operation as deprecated. // // GET /v2/nfts/{account_id}/history func (c *Client) GetNftHistoryByID(ctx context.Context, params GetNftHistoryByIDParams) (*AccountEvents, error) { @@ -10365,9 +10948,118 @@ func (c *Client) sendGetNftItemsByAddresses(ctx context.Context, request OptGetN return res, errors.Wrap(err, "validate") } otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getNftItemsByAddresses"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/v2/nfts/_bulk"), + otelogen.OperationID("getNftItemsByAddresses"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/v2/nfts/_bulk"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, GetNftItemsByAddressesOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/v2/nfts/_bulk" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + if err := encodeGetNftItemsByAddressesRequest(request, r); err != nil { + return res, errors.Wrap(err, "encode request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, GetNftItemsByAddressesOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"BearerAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGetNftItemsByAddressesResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GetOpenapiJson invokes getOpenapiJson operation. +// +// Get the openapi.json file. +// +// GET /v2/openapi.json +func (c *Client) GetOpenapiJson(ctx context.Context) (jx.Raw, error) { + res, err := c.sendGetOpenapiJson(ctx) + return res, err +} + +func (c *Client) sendGetOpenapiJson(ctx context.Context) (res jx.Raw, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getOpenapiJson"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/openapi.json"), } // Run stopwatch. @@ -10382,7 +11074,7 @@ func (c *Client) sendGetNftItemsByAddresses(ctx context.Context, request OptGetN c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GetNftItemsByAddressesOperation, + ctx, span := c.cfg.Tracer.Start(ctx, GetOpenapiJsonOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -10400,24 +11092,21 @@ func (c *Client) sendGetNftItemsByAddresses(ctx context.Context, request OptGetN stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) var pathParts [1]string - pathParts[0] = "/v2/nfts/_bulk" + pathParts[0] = "/v2/openapi.json" uri.AddPathParts(u, pathParts[:]...) stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) + r, err := ht.NewRequest(ctx, "GET", u) if err != nil { return res, errors.Wrap(err, "create request") } - if err := encodeGetNftItemsByAddressesRequest(request, r); err != nil { - return res, errors.Wrap(err, "encode request") - } { type bitset = [1]uint8 var satisfied bitset { stage = "Security:BearerAuth" - switch err := c.securityBearerAuth(ctx, GetNftItemsByAddressesOperation, r); { + switch err := c.securityBearerAuth(ctx, GetOpenapiJsonOperation, r); { case err == nil: // if NO error satisfied[0] |= 1 << 0 case errors.Is(err, ogenerrors.ErrSkipClientSecurity): @@ -10454,7 +11143,7 @@ func (c *Client) sendGetNftItemsByAddresses(ctx context.Context, request OptGetN defer resp.Body.Close() stage = "DecodeResponse" - result, err := decodeGetNftItemsByAddressesResponse(resp) + result, err := decodeGetOpenapiJsonResponse(resp) if err != nil { return res, errors.Wrap(err, "decode response") } @@ -10462,21 +11151,21 @@ func (c *Client) sendGetNftItemsByAddresses(ctx context.Context, request OptGetN return result, nil } -// GetOpenapiJson invokes getOpenapiJson operation. +// GetOpenapiYml invokes getOpenapiYml operation. // -// Get the openapi.json file. +// Get the openapi.yml file. // -// GET /v2/openapi.json -func (c *Client) GetOpenapiJson(ctx context.Context) (jx.Raw, error) { - res, err := c.sendGetOpenapiJson(ctx) +// GET /v2/openapi.yml +func (c *Client) GetOpenapiYml(ctx context.Context) (GetOpenapiYmlOK, error) { + res, err := c.sendGetOpenapiYml(ctx) return res, err } -func (c *Client) sendGetOpenapiJson(ctx context.Context) (res jx.Raw, err error) { +func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, err error) { otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getOpenapiJson"), + otelogen.OperationID("getOpenapiYml"), semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/v2/openapi.json"), + semconv.HTTPRouteKey.String("/v2/openapi.yml"), } // Run stopwatch. @@ -10491,7 +11180,7 @@ func (c *Client) sendGetOpenapiJson(ctx context.Context) (res jx.Raw, err error) c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GetOpenapiJsonOperation, + ctx, span := c.cfg.Tracer.Start(ctx, GetOpenapiYmlOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -10509,7 +11198,7 @@ func (c *Client) sendGetOpenapiJson(ctx context.Context) (res jx.Raw, err error) stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) var pathParts [1]string - pathParts[0] = "/v2/openapi.json" + pathParts[0] = "/v2/openapi.yml" uri.AddPathParts(u, pathParts[:]...) stage = "EncodeRequest" @@ -10523,7 +11212,7 @@ func (c *Client) sendGetOpenapiJson(ctx context.Context) (res jx.Raw, err error) var satisfied bitset { stage = "Security:BearerAuth" - switch err := c.securityBearerAuth(ctx, GetOpenapiJsonOperation, r); { + switch err := c.securityBearerAuth(ctx, GetOpenapiYmlOperation, r); { case err == nil: // if NO error satisfied[0] |= 1 << 0 case errors.Is(err, ogenerrors.ErrSkipClientSecurity): @@ -10560,7 +11249,7 @@ func (c *Client) sendGetOpenapiJson(ctx context.Context) (res jx.Raw, err error) defer resp.Body.Close() stage = "DecodeResponse" - result, err := decodeGetOpenapiJsonResponse(resp) + result, err := decodeGetOpenapiYmlResponse(resp) if err != nil { return res, errors.Wrap(err, "decode response") } @@ -10568,21 +11257,21 @@ func (c *Client) sendGetOpenapiJson(ctx context.Context) (res jx.Raw, err error) return result, nil } -// GetOpenapiYml invokes getOpenapiYml operation. +// GetOutMsgQueueSizes invokes getOutMsgQueueSizes operation. // -// Get the openapi.yml file. +// Get out msg queue sizes. // -// GET /v2/openapi.yml -func (c *Client) GetOpenapiYml(ctx context.Context) (GetOpenapiYmlOK, error) { - res, err := c.sendGetOpenapiYml(ctx) +// GET /v2/liteserver/get_out_msg_queue_sizes +func (c *Client) GetOutMsgQueueSizes(ctx context.Context) (*GetOutMsgQueueSizesOK, error) { + res, err := c.sendGetOutMsgQueueSizes(ctx) return res, err } -func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, err error) { +func (c *Client) sendGetOutMsgQueueSizes(ctx context.Context) (res *GetOutMsgQueueSizesOK, err error) { otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getOpenapiYml"), + otelogen.OperationID("getOutMsgQueueSizes"), semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/v2/openapi.yml"), + semconv.HTTPRouteKey.String("/v2/liteserver/get_out_msg_queue_sizes"), } // Run stopwatch. @@ -10597,7 +11286,7 @@ func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, er c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GetOpenapiYmlOperation, + ctx, span := c.cfg.Tracer.Start(ctx, GetOutMsgQueueSizesOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -10615,7 +11304,7 @@ func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, er stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) var pathParts [1]string - pathParts[0] = "/v2/openapi.yml" + pathParts[0] = "/v2/liteserver/get_out_msg_queue_sizes" uri.AddPathParts(u, pathParts[:]...) stage = "EncodeRequest" @@ -10629,7 +11318,7 @@ func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, er var satisfied bitset { stage = "Security:BearerAuth" - switch err := c.securityBearerAuth(ctx, GetOpenapiYmlOperation, r); { + switch err := c.securityBearerAuth(ctx, GetOutMsgQueueSizesOperation, r); { case err == nil: // if NO error satisfied[0] |= 1 << 0 case errors.Is(err, ogenerrors.ErrSkipClientSecurity): @@ -10666,7 +11355,7 @@ func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, er defer resp.Body.Close() stage = "DecodeResponse" - result, err := decodeGetOpenapiYmlResponse(resp) + result, err := decodeGetOutMsgQueueSizesResponse(resp) if err != nil { return res, errors.Wrap(err, "decode response") } @@ -10674,21 +11363,21 @@ func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, er return result, nil } -// GetOutMsgQueueSizes invokes getOutMsgQueueSizes operation. +// GetPurchaseHistory invokes getPurchaseHistory operation. // -// Get out msg queue sizes. +// Get history of purchases. // -// GET /v2/liteserver/get_out_msg_queue_sizes -func (c *Client) GetOutMsgQueueSizes(ctx context.Context) (*GetOutMsgQueueSizesOK, error) { - res, err := c.sendGetOutMsgQueueSizes(ctx) +// GET /v2/purchases/{account_id}/history +func (c *Client) GetPurchaseHistory(ctx context.Context, params GetPurchaseHistoryParams) (*AccountPurchases, error) { + res, err := c.sendGetPurchaseHistory(ctx, params) return res, err } -func (c *Client) sendGetOutMsgQueueSizes(ctx context.Context) (res *GetOutMsgQueueSizesOK, err error) { +func (c *Client) sendGetPurchaseHistory(ctx context.Context, params GetPurchaseHistoryParams) (res *AccountPurchases, err error) { otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getOutMsgQueueSizes"), + otelogen.OperationID("getPurchaseHistory"), semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/v2/liteserver/get_out_msg_queue_sizes"), + semconv.HTTPRouteKey.String("/v2/purchases/{account_id}/history"), } // Run stopwatch. @@ -10703,7 +11392,7 @@ func (c *Client) sendGetOutMsgQueueSizes(ctx context.Context) (res *GetOutMsgQue c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GetOutMsgQueueSizesOperation, + ctx, span := c.cfg.Tracer.Start(ctx, GetPurchaseHistoryOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -10720,10 +11409,67 @@ func (c *Client) sendGetOutMsgQueueSizes(ctx context.Context) (res *GetOutMsgQue stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/v2/liteserver/get_out_msg_queue_sizes" + var pathParts [3]string + pathParts[0] = "/v2/purchases/" + { + // Encode "account_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + pathParts[2] = "/history" uri.AddPathParts(u, pathParts[:]...) + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "before_lt" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "before_lt", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.BeforeLt.Get(); ok { + return e.EncodeValue(conv.Int64ToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Limit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + stage = "EncodeRequest" r, err := ht.NewRequest(ctx, "GET", u) if err != nil { @@ -10735,7 +11481,7 @@ func (c *Client) sendGetOutMsgQueueSizes(ctx context.Context) (res *GetOutMsgQue var satisfied bitset { stage = "Security:BearerAuth" - switch err := c.securityBearerAuth(ctx, GetOutMsgQueueSizesOperation, r); { + switch err := c.securityBearerAuth(ctx, GetPurchaseHistoryOperation, r); { case err == nil: // if NO error satisfied[0] |= 1 << 0 case errors.Is(err, ogenerrors.ErrSkipClientSecurity): @@ -10772,7 +11518,7 @@ func (c *Client) sendGetOutMsgQueueSizes(ctx context.Context) (res *GetOutMsgQue defer resp.Body.Close() stage = "DecodeResponse" - result, err := decodeGetOutMsgQueueSizesResponse(resp) + result, err := decodeGetPurchaseHistoryResponse(resp) if err != nil { return res, errors.Wrap(err, "decode response") } @@ -13891,17 +14637,141 @@ func (c *Client) sendGetTrace(ctx context.Context, params GetTraceParams) (res * return result, nil } +// GetWalletInfo invokes getWalletInfo operation. +// +// Get human-friendly information about a wallet without low-level details. +// +// GET /v2/wallet/{account_id} +func (c *Client) GetWalletInfo(ctx context.Context, params GetWalletInfoParams) (*Wallet, error) { + res, err := c.sendGetWalletInfo(ctx, params) + return res, err +} + +func (c *Client) sendGetWalletInfo(ctx context.Context, params GetWalletInfoParams) (res *Wallet, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getWalletInfo"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/wallet/{account_id}"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, GetWalletInfoOperation, + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [2]string + pathParts[0] = "/v2/wallet/" + { + // Encode "account_id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "account_id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.StringToString(params.AccountID)) + }(); err != nil { + return res, errors.Wrap(err, "encode path") + } + encoded, err := e.Result() + if err != nil { + return res, errors.Wrap(err, "encode path") + } + pathParts[1] = encoded + } + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, GetWalletInfoOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"BearerAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + {}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodeGetWalletInfoResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // GetWalletsByPublicKey invokes getWalletsByPublicKey operation. // // Get wallets by public key. // // GET /v2/pubkeys/{public_key}/wallets -func (c *Client) GetWalletsByPublicKey(ctx context.Context, params GetWalletsByPublicKeyParams) (*Accounts, error) { +func (c *Client) GetWalletsByPublicKey(ctx context.Context, params GetWalletsByPublicKeyParams) (*Wallets, error) { res, err := c.sendGetWalletsByPublicKey(ctx, params) return res, err } -func (c *Client) sendGetWalletsByPublicKey(ctx context.Context, params GetWalletsByPublicKeyParams) (res *Accounts, err error) { +func (c *Client) sendGetWalletsByPublicKey(ctx context.Context, params GetWalletsByPublicKeyParams) (res *Wallets, err error) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("getWalletsByPublicKey"), semconv.HTTPRequestMethodKey.String("GET"), diff --git a/oas_json_gen.go b/oas_json_gen.go index 1410179..c52e6f0 100644 --- a/oas_json_gen.go +++ b/oas_json_gen.go @@ -673,9 +673,13 @@ func (s *AccountEvent) encodeFields(e *jx.Encoder) { e.FieldStart("extra") e.Int64(s.Extra) } + { + e.FieldStart("progress") + e.Float32(s.Progress) + } } -var jsonFieldsNameOfAccountEvent = [8]string{ +var jsonFieldsNameOfAccountEvent = [9]string{ 0: "event_id", 1: "account", 2: "timestamp", @@ -684,6 +688,7 @@ var jsonFieldsNameOfAccountEvent = [8]string{ 5: "lt", 6: "in_progress", 7: "extra", + 8: "progress", } // Decode decodes AccountEvent from json. @@ -691,7 +696,7 @@ func (s *AccountEvent) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode AccountEvent to nil") } - var requiredBitSet [1]uint8 + var requiredBitSet [2]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { @@ -795,6 +800,18 @@ func (s *AccountEvent) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"extra\"") } + case "progress": + requiredBitSet[1] |= 1 << 0 + if err := func() error { + v, err := d.Float32() + s.Progress = float32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"progress\"") + } default: return d.Skip() } @@ -804,8 +821,9 @@ func (s *AccountEvent) Decode(d *jx.Decoder) error { } // Validate required fields. var failures []validate.FieldError - for i, mask := range [1]uint8{ + for i, mask := range [2]uint8{ 0b11111111, + 0b00000001, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -1087,6 +1105,129 @@ func (s *AccountInfoByStateInit) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *AccountPurchases) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *AccountPurchases) encodeFields(e *jx.Encoder) { + { + e.FieldStart("purchases") + e.ArrStart() + for _, elem := range s.Purchases { + elem.Encode(e) + } + e.ArrEnd() + } + { + e.FieldStart("next_from") + e.Int64(s.NextFrom) + } +} + +var jsonFieldsNameOfAccountPurchases = [2]string{ + 0: "purchases", + 1: "next_from", +} + +// Decode decodes AccountPurchases from json. +func (s *AccountPurchases) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode AccountPurchases to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "purchases": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Purchases = make([]Purchase, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Purchase + if err := elem.Decode(d); err != nil { + return err + } + s.Purchases = append(s.Purchases, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"purchases\"") + } + case "next_from": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int64() + s.NextFrom = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"next_from\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode AccountPurchases") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfAccountPurchases) { + name = jsonFieldsNameOfAccountPurchases[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *AccountPurchases) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *AccountPurchases) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *AccountStaking) Encode(e *jx.Encoder) { e.ObjStart() @@ -1802,6 +1943,18 @@ func (s *Action) encodeFields(e *jx.Encoder) { s.DomainRenew.Encode(e) } } + { + if s.Purchase.Set { + e.FieldStart("Purchase") + s.Purchase.Encode(e) + } + } + { + if s.GasRelay.Set { + e.FieldStart("GasRelay") + s.GasRelay.Encode(e) + } + } { e.FieldStart("simple_preview") s.SimplePreview.Encode(e) @@ -1816,7 +1969,7 @@ func (s *Action) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfAction = [23]string{ +var jsonFieldsNameOfAction = [25]string{ 0: "type", 1: "status", 2: "TonTransfer", @@ -1838,8 +1991,10 @@ var jsonFieldsNameOfAction = [23]string{ 18: "JettonSwap", 19: "SmartContractExec", 20: "DomainRenew", - 21: "simple_preview", - 22: "base_transactions", + 21: "Purchase", + 22: "GasRelay", + 23: "simple_preview", + 24: "base_transactions", } // Decode decodes Action from json. @@ -1847,7 +2002,7 @@ func (s *Action) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Action to nil") } - var requiredBitSet [3]uint8 + var requiredBitSet [4]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { @@ -2061,8 +2216,28 @@ func (s *Action) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"DomainRenew\"") } + case "Purchase": + if err := func() error { + s.Purchase.Reset() + if err := s.Purchase.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"Purchase\"") + } + case "GasRelay": + if err := func() error { + s.GasRelay.Reset() + if err := s.GasRelay.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"GasRelay\"") + } case "simple_preview": - requiredBitSet[2] |= 1 << 5 + requiredBitSet[2] |= 1 << 7 if err := func() error { if err := s.SimplePreview.Decode(d); err != nil { return err @@ -2072,7 +2247,7 @@ func (s *Action) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"simple_preview\"") } case "base_transactions": - requiredBitSet[2] |= 1 << 6 + requiredBitSet[3] |= 1 << 0 if err := func() error { s.BaseTransactions = make([]string, 0) if err := d.Arr(func(d *jx.Decoder) error { @@ -2100,10 +2275,11 @@ func (s *Action) Decode(d *jx.Decoder) error { } // Validate required fields. var failures []validate.FieldError - for i, mask := range [3]uint8{ + for i, mask := range [4]uint8{ 0b00000011, 0b00000000, - 0b01100000, + 0b10000000, + 0b00000001, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -2598,6 +2774,8 @@ func (s *ActionType) Decode(d *jx.Decoder) error { *s = ActionTypeTonTransfer case ActionTypeExtraCurrencyTransfer: *s = ActionTypeExtraCurrencyTransfer + case ActionTypeContractDeploy: + *s = ActionTypeContractDeploy case ActionTypeJettonTransfer: *s = ActionTypeJettonTransfer case ActionTypeJettonBurn: @@ -2606,8 +2784,6 @@ func (s *ActionType) Decode(d *jx.Decoder) error { *s = ActionTypeJettonMint case ActionTypeNftItemTransfer: *s = ActionTypeNftItemTransfer - case ActionTypeContractDeploy: - *s = ActionTypeContractDeploy case ActionTypeSubscribe: *s = ActionTypeSubscribe case ActionTypeUnSubscribe: @@ -2622,16 +2798,18 @@ func (s *ActionType) Decode(d *jx.Decoder) error { *s = ActionTypeWithdrawStake case ActionTypeWithdrawStakeRequest: *s = ActionTypeWithdrawStakeRequest + case ActionTypeElectionsDepositStake: + *s = ActionTypeElectionsDepositStake + case ActionTypeElectionsRecoverStake: + *s = ActionTypeElectionsRecoverStake case ActionTypeJettonSwap: *s = ActionTypeJettonSwap case ActionTypeSmartContractExec: *s = ActionTypeSmartContractExec - case ActionTypeElectionsRecoverStake: - *s = ActionTypeElectionsRecoverStake - case ActionTypeElectionsDepositStake: - *s = ActionTypeElectionsDepositStake case ActionTypeDomainRenew: *s = ActionTypeDomainRenew + case ActionTypePurchase: + *s = ActionTypePurchase case ActionTypeUnknown: *s = ActionTypeUnknown default: @@ -10723,9 +10901,13 @@ func (s *BlockchainRawAccount) encodeFields(e *jx.Encoder) { e.Int64(s.Balance) } { - if s.ExtraBalance.Set { + if s.ExtraBalance != nil { e.FieldStart("extra_balance") - s.ExtraBalance.Encode(e) + e.ArrStart() + for _, elem := range s.ExtraBalance { + elem.Encode(e) + } + e.ArrEnd() } } { @@ -10825,8 +11007,15 @@ func (s *BlockchainRawAccount) Decode(d *jx.Decoder) error { } case "extra_balance": if err := func() error { - s.ExtraBalance.Reset() - if err := s.ExtraBalance.Decode(d); err != nil { + s.ExtraBalance = make([]ExtraCurrency, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ExtraCurrency + if err := elem.Decode(d); err != nil { + return err + } + s.ExtraBalance = append(s.ExtraBalance, elem) + return nil + }); err != nil { return err } return nil @@ -10979,62 +11168,6 @@ func (s *BlockchainRawAccount) UnmarshalJSON(data []byte) error { return s.Decode(d) } -// Encode implements json.Marshaler. -func (s BlockchainRawAccountExtraBalance) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields implements json.Marshaler. -func (s BlockchainRawAccountExtraBalance) encodeFields(e *jx.Encoder) { - for k, elem := range s { - e.FieldStart(k) - - e.Str(elem) - } -} - -// Decode decodes BlockchainRawAccountExtraBalance from json. -func (s *BlockchainRawAccountExtraBalance) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode BlockchainRawAccountExtraBalance to nil") - } - m := s.init() - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - var elem string - if err := func() error { - v, err := d.Str() - elem = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrapf(err, "decode field %q", k) - } - m[string(k)] = elem - return nil - }); err != nil { - return errors.Wrap(err, "decode BlockchainRawAccountExtraBalance") - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s BlockchainRawAccountExtraBalance) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *BlockchainRawAccountExtraBalance) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - // Encode implements json.Marshaler. func (s *BlockchainRawAccountLibrariesItem) Encode(e *jx.Encoder) { e.ObjStart() @@ -11190,23 +11323,19 @@ func (s *BouncePhaseType) UnmarshalJSON(data []byte) error { return s.Decode(d) } -// Encode implements json.Marshaler. -func (s *ChartPoints) Encode(e *jx.Encoder) { - e.ArrStart() - s.encodeTuple(e) - e.ArrEnd() -} +// Encode encodes ChartPoints as json. +func (s ChartPoints) Encode(e *jx.Encoder) { + unwrapped := [][]float64(s) -// encodeTuple encodes fields. -func (s *ChartPoints) encodeTuple(e *jx.Encoder) { - { - elem := s.V0 - e.Int64(elem) - } - { - elem := s.V1 - e.Float64(elem) + e.ArrStart() + for _, elem := range unwrapped { + e.ArrStart() + for _, elem := range elem { + e.Float64(elem) + } + e.ArrEnd() } + e.ArrEnd() } // Decode decodes ChartPoints from json. @@ -11214,39 +11343,39 @@ func (s *ChartPoints) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode ChartPoints to nil") } - n := 0 - if err := d.Arr(func(d *jx.Decoder) error { - switch n { - case 0: - n++ - v, err := d.Int64() - s.V0 = int64(v) - if err != nil { - return err - } - return nil - case 1: - n++ - v, err := d.Float64() - s.V1 = float64(v) - if err != nil { + var unwrapped [][]float64 + if err := func() error { + unwrapped = make([][]float64, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem []float64 + elem = make([]float64, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elemElem float64 + v, err := d.Float64() + elemElem = float64(v) + if err != nil { + return err + } + elem = append(elem, elemElem) + return nil + }); err != nil { return err } + unwrapped = append(unwrapped, elem) return nil - default: - return errors.Errorf("expected 2 elements, got %d", n) + }); err != nil { + return err } - }); err != nil { - return err - } - if n == 0 { - return errors.Errorf("expected 2 elements, got %d", n) + return nil + }(); err != nil { + return errors.Wrap(err, "alias") } + *s = ChartPoints(unwrapped) return nil } // MarshalJSON implements stdjson.Marshaler. -func (s *ChartPoints) MarshalJSON() ([]byte, error) { +func (s ChartPoints) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -11970,6 +12099,50 @@ func (s *CreditPhase) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes CurrencyType as json. +func (s CurrencyType) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes CurrencyType from json. +func (s *CurrencyType) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode CurrencyType to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch CurrencyType(v) { + case CurrencyTypeNative: + *s = CurrencyTypeNative + case CurrencyTypeExtraCurrency: + *s = CurrencyTypeExtraCurrency + case CurrencyTypeJetton: + *s = CurrencyTypeJetton + case CurrencyTypeFiat: + *s = CurrencyTypeFiat + default: + *s = CurrencyType(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s CurrencyType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *CurrencyType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *DecodeMessageReq) Encode(e *jx.Encoder) { e.ObjStart() @@ -15497,9 +15670,13 @@ func (s *Event) encodeFields(e *jx.Encoder) { e.FieldStart("in_progress") e.Bool(s.InProgress) } + { + e.FieldStart("progress") + e.Float32(s.Progress) + } } -var jsonFieldsNameOfEvent = [7]string{ +var jsonFieldsNameOfEvent = [8]string{ 0: "event_id", 1: "timestamp", 2: "actions", @@ -15507,6 +15684,7 @@ var jsonFieldsNameOfEvent = [7]string{ 4: "is_scam", 5: "lt", 6: "in_progress", + 7: "progress", } // Decode decodes Event from json. @@ -15614,6 +15792,18 @@ func (s *Event) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"in_progress\"") } + case "progress": + requiredBitSet[0] |= 1 << 7 + if err := func() error { + v, err := d.Float32() + s.Progress = float32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"progress\"") + } default: return d.Skip() } @@ -15624,7 +15814,7 @@ func (s *Event) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b01111111, + 0b11111111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -15670,6 +15860,273 @@ func (s *Event) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *ExecGetMethodArg) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ExecGetMethodArg) encodeFields(e *jx.Encoder) { + { + e.FieldStart("type") + s.Type.Encode(e) + } + { + e.FieldStart("value") + e.Str(s.Value) + } +} + +var jsonFieldsNameOfExecGetMethodArg = [2]string{ + 0: "type", + 1: "value", +} + +// Decode decodes ExecGetMethodArg from json. +func (s *ExecGetMethodArg) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ExecGetMethodArg to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "type": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Type.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"type\"") + } + case "value": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Value = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"value\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ExecGetMethodArg") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfExecGetMethodArg) { + name = jsonFieldsNameOfExecGetMethodArg[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ExecGetMethodArg) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ExecGetMethodArg) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes ExecGetMethodArgType as json. +func (s ExecGetMethodArgType) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes ExecGetMethodArgType from json. +func (s *ExecGetMethodArgType) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ExecGetMethodArgType to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch ExecGetMethodArgType(v) { + case ExecGetMethodArgTypeNan: + *s = ExecGetMethodArgTypeNan + case ExecGetMethodArgTypeNull: + *s = ExecGetMethodArgTypeNull + case ExecGetMethodArgTypeTinyint: + *s = ExecGetMethodArgTypeTinyint + case ExecGetMethodArgTypeInt257: + *s = ExecGetMethodArgTypeInt257 + case ExecGetMethodArgTypeSlice: + *s = ExecGetMethodArgTypeSlice + case ExecGetMethodArgTypeCellBocBase64: + *s = ExecGetMethodArgTypeCellBocBase64 + case ExecGetMethodArgTypeSliceBocHex: + *s = ExecGetMethodArgTypeSliceBocHex + default: + *s = ExecGetMethodArgType(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s ExecGetMethodArgType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ExecGetMethodArgType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) encodeFields(e *jx.Encoder) { + { + e.FieldStart("args") + e.ArrStart() + for _, elem := range s.Args { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfExecGetMethodWithBodyForBlockchainAccountReq = [1]string{ + 0: "args", +} + +// Decode decodes ExecGetMethodWithBodyForBlockchainAccountReq from json. +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ExecGetMethodWithBodyForBlockchainAccountReq to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "args": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Args = make([]ExecGetMethodArg, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem ExecGetMethodArg + if err := elem.Decode(d); err != nil { + return err + } + s.Args = append(s.Args, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"args\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ExecGetMethodWithBodyForBlockchainAccountReq") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfExecGetMethodWithBodyForBlockchainAccountReq) { + name = jsonFieldsNameOfExecGetMethodWithBodyForBlockchainAccountReq[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *ExtraCurrency) Encode(e *jx.Encoder) { e.ObjStart() @@ -16440,6 +16897,132 @@ func (s *GasLimitPrices) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *GasRelayAction) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GasRelayAction) encodeFields(e *jx.Encoder) { + { + e.FieldStart("amount") + e.Int64(s.Amount) + } + { + e.FieldStart("relayer") + s.Relayer.Encode(e) + } + { + e.FieldStart("target") + s.Target.Encode(e) + } +} + +var jsonFieldsNameOfGasRelayAction = [3]string{ + 0: "amount", + 1: "relayer", + 2: "target", +} + +// Decode decodes GasRelayAction from json. +func (s *GasRelayAction) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GasRelayAction to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "amount": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int64() + s.Amount = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + case "relayer": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Relayer.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"relayer\"") + } + case "target": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + if err := s.Target.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"target\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GasRelayAction") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfGasRelayAction) { + name = jsonFieldsNameOfGasRelayAction[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *GasRelayAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GasRelayAction) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *GaslessConfig) Encode(e *jx.Encoder) { e.ObjStart() @@ -17674,11 +18257,7 @@ func (s *GetChartRatesOK) Encode(e *jx.Encoder) { func (s *GetChartRatesOK) encodeFields(e *jx.Encoder) { { e.FieldStart("points") - e.ArrStart() - for _, elem := range s.Points { - elem.Encode(e) - } - e.ArrEnd() + s.Points.Encode(e) } } @@ -17698,15 +18277,7 @@ func (s *GetChartRatesOK) Decode(d *jx.Decoder) error { case "points": requiredBitSet[0] |= 1 << 0 if err := func() error { - s.Points = make([]ChartPoints, 0) - if err := d.Arr(func(d *jx.Decoder) error { - var elem ChartPoints - if err := elem.Decode(d); err != nil { - return err - } - s.Points = append(s.Points, elem) - return nil - }); err != nil { + if err := s.Points.Decode(d); err != nil { return err } return nil @@ -23934,6 +24505,435 @@ func (s *JettonMintAction) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *JettonOperation) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *JettonOperation) encodeFields(e *jx.Encoder) { + { + e.FieldStart("operation") + s.Operation.Encode(e) + } + { + e.FieldStart("utime") + e.Int64(s.Utime) + } + { + e.FieldStart("lt") + e.Int64(s.Lt) + } + { + e.FieldStart("transaction_hash") + e.Str(s.TransactionHash) + } + { + if s.Source.Set { + e.FieldStart("source") + s.Source.Encode(e) + } + } + { + if s.Destination.Set { + e.FieldStart("destination") + s.Destination.Encode(e) + } + } + { + e.FieldStart("amount") + e.Str(s.Amount) + } + { + e.FieldStart("jetton") + s.Jetton.Encode(e) + } + { + e.FieldStart("trace_id") + e.Str(s.TraceID) + } + { + e.FieldStart("query_id") + e.Str(s.QueryID) + } + { + if len(s.Payload) != 0 { + e.FieldStart("payload") + e.Raw(s.Payload) + } + } +} + +var jsonFieldsNameOfJettonOperation = [11]string{ + 0: "operation", + 1: "utime", + 2: "lt", + 3: "transaction_hash", + 4: "source", + 5: "destination", + 6: "amount", + 7: "jetton", + 8: "trace_id", + 9: "query_id", + 10: "payload", +} + +// Decode decodes JettonOperation from json. +func (s *JettonOperation) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode JettonOperation to nil") + } + var requiredBitSet [2]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "operation": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Operation.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"operation\"") + } + case "utime": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int64() + s.Utime = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"utime\"") + } + case "lt": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Int64() + s.Lt = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"lt\"") + } + case "transaction_hash": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + v, err := d.Str() + s.TransactionHash = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"transaction_hash\"") + } + case "source": + if err := func() error { + s.Source.Reset() + if err := s.Source.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"source\"") + } + case "destination": + if err := func() error { + s.Destination.Reset() + if err := s.Destination.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"destination\"") + } + case "amount": + requiredBitSet[0] |= 1 << 6 + if err := func() error { + v, err := d.Str() + s.Amount = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + case "jetton": + requiredBitSet[0] |= 1 << 7 + if err := func() error { + if err := s.Jetton.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"jetton\"") + } + case "trace_id": + requiredBitSet[1] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.TraceID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"trace_id\"") + } + case "query_id": + requiredBitSet[1] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.QueryID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"query_id\"") + } + case "payload": + if err := func() error { + v, err := d.RawAppend(nil) + s.Payload = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"payload\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode JettonOperation") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [2]uint8{ + 0b11001111, + 0b00000011, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfJettonOperation) { + name = jsonFieldsNameOfJettonOperation[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *JettonOperation) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *JettonOperation) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes JettonOperationOperation as json. +func (s JettonOperationOperation) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes JettonOperationOperation from json. +func (s *JettonOperationOperation) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode JettonOperationOperation to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch JettonOperationOperation(v) { + case JettonOperationOperationTransfer: + *s = JettonOperationOperationTransfer + case JettonOperationOperationMint: + *s = JettonOperationOperationMint + case JettonOperationOperationBurn: + *s = JettonOperationOperationBurn + default: + *s = JettonOperationOperation(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s JettonOperationOperation) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *JettonOperationOperation) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *JettonOperations) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *JettonOperations) encodeFields(e *jx.Encoder) { + { + e.FieldStart("operations") + e.ArrStart() + for _, elem := range s.Operations { + elem.Encode(e) + } + e.ArrEnd() + } + { + if s.NextFrom.Set { + e.FieldStart("next_from") + s.NextFrom.Encode(e) + } + } +} + +var jsonFieldsNameOfJettonOperations = [2]string{ + 0: "operations", + 1: "next_from", +} + +// Decode decodes JettonOperations from json. +func (s *JettonOperations) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode JettonOperations to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "operations": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Operations = make([]JettonOperation, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem JettonOperation + if err := elem.Decode(d); err != nil { + return err + } + s.Operations = append(s.Operations, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"operations\"") + } + case "next_from": + if err := func() error { + s.NextFrom.Reset() + if err := s.NextFrom.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"next_from\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode JettonOperations") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfJettonOperations) { + name = jsonFieldsNameOfJettonOperations[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *JettonOperations) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *JettonOperations) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *JettonPreview) Encode(e *jx.Encoder) { e.ObjStart() @@ -25817,6 +26817,119 @@ func (s *MessageMsgType) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *Metadata) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Metadata) encodeFields(e *jx.Encoder) { + { + e.FieldStart("encrypted_binary") + e.Str(s.EncryptedBinary) + } + { + if s.DecryptionKey.Set { + e.FieldStart("decryption_key") + s.DecryptionKey.Encode(e) + } + } +} + +var jsonFieldsNameOfMetadata = [2]string{ + 0: "encrypted_binary", + 1: "decryption_key", +} + +// Decode decodes Metadata from json. +func (s *Metadata) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Metadata to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "encrypted_binary": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.EncryptedBinary = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"encrypted_binary\"") + } + case "decryption_key": + if err := func() error { + s.DecryptionKey.Reset() + if err := s.DecryptionKey.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"decryption_key\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Metadata") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfMetadata) { + name = jsonFieldsNameOfMetadata[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Metadata) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Metadata) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *Method) Encode(e *jx.Encoder) { e.ObjStart() @@ -26808,19 +27921,31 @@ func (s *MultisigOrder) encodeFields(e *jx.Encoder) { } e.ArrEnd() } + { + e.FieldStart("multisig_address") + e.Str(s.MultisigAddress) + } + { + if s.ChangingParameters.Set { + e.FieldStart("changing_parameters") + s.ChangingParameters.Encode(e) + } + } } -var jsonFieldsNameOfMultisigOrder = [10]string{ - 0: "address", - 1: "order_seqno", - 2: "threshold", - 3: "sent_for_execution", - 4: "signers", - 5: "approvals_num", - 6: "expiration_date", - 7: "risk", - 8: "creation_date", - 9: "signed_by", +var jsonFieldsNameOfMultisigOrder = [12]string{ + 0: "address", + 1: "order_seqno", + 2: "threshold", + 3: "sent_for_execution", + 4: "signers", + 5: "approvals_num", + 6: "expiration_date", + 7: "risk", + 8: "creation_date", + 9: "signed_by", + 10: "multisig_address", + 11: "changing_parameters", } // Decode decodes MultisigOrder from json. @@ -26966,6 +28091,28 @@ func (s *MultisigOrder) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"signed_by\"") } + case "multisig_address": + requiredBitSet[1] |= 1 << 2 + if err := func() error { + v, err := d.Str() + s.MultisigAddress = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"multisig_address\"") + } + case "changing_parameters": + if err := func() error { + s.ChangingParameters.Reset() + if err := s.ChangingParameters.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"changing_parameters\"") + } default: return d.Skip() } @@ -26977,7 +28124,7 @@ func (s *MultisigOrder) Decode(d *jx.Decoder) error { var failures []validate.FieldError for i, mask := range [2]uint8{ 0b11111111, - 0b00000011, + 0b00000111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -27023,6 +28170,160 @@ func (s *MultisigOrder) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *MultisigOrderChangingParameters) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *MultisigOrderChangingParameters) encodeFields(e *jx.Encoder) { + { + e.FieldStart("threshold") + e.Int32(s.Threshold) + } + { + e.FieldStart("signers") + e.ArrStart() + for _, elem := range s.Signers { + e.Str(elem) + } + e.ArrEnd() + } + { + e.FieldStart("proposers") + e.ArrStart() + for _, elem := range s.Proposers { + e.Str(elem) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfMultisigOrderChangingParameters = [3]string{ + 0: "threshold", + 1: "signers", + 2: "proposers", +} + +// Decode decodes MultisigOrderChangingParameters from json. +func (s *MultisigOrderChangingParameters) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode MultisigOrderChangingParameters to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "threshold": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int32() + s.Threshold = int32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"threshold\"") + } + case "signers": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + s.Signers = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Signers = append(s.Signers, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"signers\"") + } + case "proposers": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + s.Proposers = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Proposers = append(s.Proposers, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"proposers\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode MultisigOrderChangingParameters") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfMultisigOrderChangingParameters) { + name = jsonFieldsNameOfMultisigOrderChangingParameters[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *MultisigOrderChangingParameters) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *MultisigOrderChangingParameters) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *Multisigs) Encode(e *jx.Encoder) { e.ObjStart() @@ -28372,114 +29673,156 @@ func (s *NftItems) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *NftPurchaseAction) Encode(e *jx.Encoder) { +func (s *NftOperation) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. -func (s *NftPurchaseAction) encodeFields(e *jx.Encoder) { +func (s *NftOperation) encodeFields(e *jx.Encoder) { { - e.FieldStart("auction_type") - s.AuctionType.Encode(e) + e.FieldStart("operation") + e.Str(s.Operation) } { - e.FieldStart("amount") - s.Amount.Encode(e) + e.FieldStart("utime") + e.Int64(s.Utime) } { - e.FieldStart("nft") - s.Nft.Encode(e) + e.FieldStart("lt") + e.Int64(s.Lt) } { - e.FieldStart("seller") - s.Seller.Encode(e) + e.FieldStart("transaction_hash") + e.Str(s.TransactionHash) } { - e.FieldStart("buyer") - s.Buyer.Encode(e) + if s.Source.Set { + e.FieldStart("source") + s.Source.Encode(e) + } + } + { + if s.Destination.Set { + e.FieldStart("destination") + s.Destination.Encode(e) + } + } + { + e.FieldStart("item") + s.Item.Encode(e) } } -var jsonFieldsNameOfNftPurchaseAction = [5]string{ - 0: "auction_type", - 1: "amount", - 2: "nft", - 3: "seller", - 4: "buyer", +var jsonFieldsNameOfNftOperation = [7]string{ + 0: "operation", + 1: "utime", + 2: "lt", + 3: "transaction_hash", + 4: "source", + 5: "destination", + 6: "item", } -// Decode decodes NftPurchaseAction from json. -func (s *NftPurchaseAction) Decode(d *jx.Decoder) error { +// Decode decodes NftOperation from json. +func (s *NftOperation) Decode(d *jx.Decoder) error { if s == nil { - return errors.New("invalid: unable to decode NftPurchaseAction to nil") + return errors.New("invalid: unable to decode NftOperation to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { - case "auction_type": + case "operation": requiredBitSet[0] |= 1 << 0 if err := func() error { - if err := s.AuctionType.Decode(d); err != nil { + v, err := d.Str() + s.Operation = string(v) + if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"auction_type\"") + return errors.Wrap(err, "decode field \"operation\"") } - case "amount": + case "utime": requiredBitSet[0] |= 1 << 1 if err := func() error { - if err := s.Amount.Decode(d); err != nil { + v, err := d.Int64() + s.Utime = int64(v) + if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"amount\"") + return errors.Wrap(err, "decode field \"utime\"") } - case "nft": + case "lt": requiredBitSet[0] |= 1 << 2 if err := func() error { - if err := s.Nft.Decode(d); err != nil { + v, err := d.Int64() + s.Lt = int64(v) + if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"nft\"") + return errors.Wrap(err, "decode field \"lt\"") } - case "seller": + case "transaction_hash": requiredBitSet[0] |= 1 << 3 if err := func() error { - if err := s.Seller.Decode(d); err != nil { + v, err := d.Str() + s.TransactionHash = string(v) + if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"seller\"") + return errors.Wrap(err, "decode field \"transaction_hash\"") } - case "buyer": - requiredBitSet[0] |= 1 << 4 + case "source": if err := func() error { - if err := s.Buyer.Decode(d); err != nil { + s.Source.Reset() + if err := s.Source.Decode(d); err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"buyer\"") + return errors.Wrap(err, "decode field \"source\"") + } + case "destination": + if err := func() error { + s.Destination.Reset() + if err := s.Destination.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"destination\"") + } + case "item": + requiredBitSet[0] |= 1 << 6 + if err := func() error { + if err := s.Item.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"item\"") } default: return d.Skip() } return nil }); err != nil { - return errors.Wrap(err, "decode NftPurchaseAction") + return errors.Wrap(err, "decode NftOperation") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00011111, + 0b01001111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -28491,8 +29834,8 @@ func (s *NftPurchaseAction) Decode(d *jx.Decoder) error { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string - if fieldIdx < len(jsonFieldsNameOfNftPurchaseAction) { - name = jsonFieldsNameOfNftPurchaseAction[fieldIdx] + if fieldIdx < len(jsonFieldsNameOfNftOperation) { + name = jsonFieldsNameOfNftOperation[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } @@ -28513,117 +29856,394 @@ func (s *NftPurchaseAction) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *NftPurchaseAction) MarshalJSON() ([]byte, error) { +func (s *NftOperation) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *NftPurchaseAction) UnmarshalJSON(data []byte) error { +func (s *NftOperation) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes NftPurchaseActionAuctionType as json. -func (s NftPurchaseActionAuctionType) Encode(e *jx.Encoder) { - e.Str(string(s)) +// Encode implements json.Marshaler. +func (s *NftOperations) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() } -// Decode decodes NftPurchaseActionAuctionType from json. -func (s *NftPurchaseActionAuctionType) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode NftPurchaseActionAuctionType to nil") - } - v, err := d.StrBytes() - if err != nil { - return err +// encodeFields encodes fields. +func (s *NftOperations) encodeFields(e *jx.Encoder) { + { + e.FieldStart("operations") + e.ArrStart() + for _, elem := range s.Operations { + elem.Encode(e) + } + e.ArrEnd() } - // Try to use constant string. - switch NftPurchaseActionAuctionType(v) { - case NftPurchaseActionAuctionTypeDNSTon: - *s = NftPurchaseActionAuctionTypeDNSTon - case NftPurchaseActionAuctionTypeDNSTg: - *s = NftPurchaseActionAuctionTypeDNSTg - case NftPurchaseActionAuctionTypeNUMBERTg: - *s = NftPurchaseActionAuctionTypeNUMBERTg - case NftPurchaseActionAuctionTypeGetgems: - *s = NftPurchaseActionAuctionTypeGetgems - default: - *s = NftPurchaseActionAuctionType(v) + { + if s.NextFrom.Set { + e.FieldStart("next_from") + s.NextFrom.Encode(e) + } } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s NftPurchaseActionAuctionType) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil } -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *NftPurchaseActionAuctionType) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) +var jsonFieldsNameOfNftOperations = [2]string{ + 0: "operations", + 1: "next_from", } -// Encode encodes AccountAddress as json. -func (o OptAccountAddress) Encode(e *jx.Encoder) { - if !o.Set { - return +// Decode decodes NftOperations from json. +func (s *NftOperations) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode NftOperations to nil") } - o.Value.Encode(e) -} + var requiredBitSet [1]uint8 -// Decode decodes AccountAddress from json. -func (o *OptAccountAddress) Decode(d *jx.Decoder) error { - if o == nil { - return errors.New("invalid: unable to decode OptAccountAddress to nil") + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "operations": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Operations = make([]NftOperation, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem NftOperation + if err := elem.Decode(d); err != nil { + return err + } + s.Operations = append(s.Operations, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"operations\"") + } + case "next_from": + if err := func() error { + s.NextFrom.Reset() + if err := s.NextFrom.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"next_from\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode NftOperations") } - o.Set = true - if err := o.Value.Decode(d); err != nil { - return err + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfNftOperations) { + name = jsonFieldsNameOfNftOperations[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} } + return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptAccountAddress) MarshalJSON() ([]byte, error) { +func (s *NftOperations) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptAccountAddress) UnmarshalJSON(data []byte) error { +func (s *NftOperations) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes AccountCurrenciesBalance as json. -func (o OptAccountCurrenciesBalance) Encode(e *jx.Encoder) { - if !o.Set { - return - } - o.Value.Encode(e) +// Encode implements json.Marshaler. +func (s *NftPurchaseAction) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() } -// Decode decodes AccountCurrenciesBalance from json. -func (o *OptAccountCurrenciesBalance) Decode(d *jx.Decoder) error { - if o == nil { - return errors.New("invalid: unable to decode OptAccountCurrenciesBalance to nil") +// encodeFields encodes fields. +func (s *NftPurchaseAction) encodeFields(e *jx.Encoder) { + { + e.FieldStart("auction_type") + s.AuctionType.Encode(e) } - o.Set = true - o.Value = make(AccountCurrenciesBalance) - if err := o.Value.Decode(d); err != nil { - return err + { + e.FieldStart("amount") + s.Amount.Encode(e) } - return nil -} - -// MarshalJSON implements stdjson.Marshaler. + { + e.FieldStart("nft") + s.Nft.Encode(e) + } + { + e.FieldStart("seller") + s.Seller.Encode(e) + } + { + e.FieldStart("buyer") + s.Buyer.Encode(e) + } +} + +var jsonFieldsNameOfNftPurchaseAction = [5]string{ + 0: "auction_type", + 1: "amount", + 2: "nft", + 3: "seller", + 4: "buyer", +} + +// Decode decodes NftPurchaseAction from json. +func (s *NftPurchaseAction) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode NftPurchaseAction to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "auction_type": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.AuctionType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"auction_type\"") + } + case "amount": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Amount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + case "nft": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + if err := s.Nft.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nft\"") + } + case "seller": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + if err := s.Seller.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"seller\"") + } + case "buyer": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + if err := s.Buyer.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"buyer\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode NftPurchaseAction") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00011111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfNftPurchaseAction) { + name = jsonFieldsNameOfNftPurchaseAction[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *NftPurchaseAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *NftPurchaseAction) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes NftPurchaseActionAuctionType as json. +func (s NftPurchaseActionAuctionType) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes NftPurchaseActionAuctionType from json. +func (s *NftPurchaseActionAuctionType) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode NftPurchaseActionAuctionType to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch NftPurchaseActionAuctionType(v) { + case NftPurchaseActionAuctionTypeDNSTon: + *s = NftPurchaseActionAuctionTypeDNSTon + case NftPurchaseActionAuctionTypeDNSTg: + *s = NftPurchaseActionAuctionTypeDNSTg + case NftPurchaseActionAuctionTypeNUMBERTg: + *s = NftPurchaseActionAuctionTypeNUMBERTg + case NftPurchaseActionAuctionTypeGetgems: + *s = NftPurchaseActionAuctionTypeGetgems + default: + *s = NftPurchaseActionAuctionType(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s NftPurchaseActionAuctionType) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *NftPurchaseActionAuctionType) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes AccountAddress as json. +func (o OptAccountAddress) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes AccountAddress from json. +func (o *OptAccountAddress) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAccountAddress to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAccountAddress) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAccountAddress) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes AccountCurrenciesBalance as json. +func (o OptAccountCurrenciesBalance) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes AccountCurrenciesBalance from json. +func (o *OptAccountCurrenciesBalance) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAccountCurrenciesBalance to nil") + } + o.Set = true + o.Value = make(AccountCurrenciesBalance) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. func (s OptAccountCurrenciesBalance) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) @@ -29791,40 +31411,6 @@ func (s *OptBlockchainConfig9) UnmarshalJSON(data []byte) error { return s.Decode(d) } -// Encode encodes BlockchainRawAccountExtraBalance as json. -func (o OptBlockchainRawAccountExtraBalance) Encode(e *jx.Encoder) { - if !o.Set { - return - } - o.Value.Encode(e) -} - -// Decode decodes BlockchainRawAccountExtraBalance from json. -func (o *OptBlockchainRawAccountExtraBalance) Decode(d *jx.Decoder) error { - if o == nil { - return errors.New("invalid: unable to decode OptBlockchainRawAccountExtraBalance to nil") - } - o.Set = true - o.Value = make(BlockchainRawAccountExtraBalance) - if err := o.Value.Decode(d); err != nil { - return err - } - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s OptBlockchainRawAccountExtraBalance) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptBlockchainRawAccountExtraBalance) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - // Encode encodes bool as json. func (o OptBool) Encode(e *jx.Encoder) { if !o.Set { @@ -30355,6 +31941,39 @@ func (s *OptEncryptedComment) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes ExecGetMethodWithBodyForBlockchainAccountReq as json. +func (o OptExecGetMethodWithBodyForBlockchainAccountReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ExecGetMethodWithBodyForBlockchainAccountReq from json. +func (o *OptExecGetMethodWithBodyForBlockchainAccountReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptExecGetMethodWithBodyForBlockchainAccountReq to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptExecGetMethodWithBodyForBlockchainAccountReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptExecGetMethodWithBodyForBlockchainAccountReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes ExtraCurrencyTransferAction as json. func (o OptExtraCurrencyTransferAction) Encode(e *jx.Encoder) { if !o.Set { @@ -30388,6 +32007,39 @@ func (s *OptExtraCurrencyTransferAction) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes GasRelayAction as json. +func (o OptGasRelayAction) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes GasRelayAction from json. +func (o *OptGasRelayAction) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptGasRelayAction to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptGasRelayAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptGasRelayAction) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes GetAccountsReq as json. func (o OptGetAccountsReq) Encode(e *jx.Encoder) { if !o.Set { @@ -30922,6 +32574,39 @@ func (s *OptMessageConsequences) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes MultisigOrderChangingParameters as json. +func (o OptMultisigOrderChangingParameters) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes MultisigOrderChangingParameters from json. +func (o *OptMultisigOrderChangingParameters) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptMultisigOrderChangingParameters to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptMultisigOrderChangingParameters) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptMultisigOrderChangingParameters) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes NftCollectionMetadata as json. func (o OptNftCollectionMetadata) Encode(e *jx.Encoder) { if !o.Set { @@ -31088,6 +32773,39 @@ func (s *OptNftPurchaseAction) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes PurchaseAction as json. +func (o OptPurchaseAction) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes PurchaseAction from json. +func (o *OptPurchaseAction) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptPurchaseAction to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptPurchaseAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptPurchaseAction) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes Refund as json. func (o OptRefund) Encode(e *jx.Encoder) { if !o.Set { @@ -32568,19 +34286,46 @@ func (s *Price) Encode(e *jx.Encoder) { // encodeFields encodes fields. func (s *Price) encodeFields(e *jx.Encoder) { + { + e.FieldStart("currency_type") + s.CurrencyType.Encode(e) + } { e.FieldStart("value") e.Str(s.Value) } + { + e.FieldStart("decimals") + e.Int(s.Decimals) + } { e.FieldStart("token_name") e.Str(s.TokenName) } + { + e.FieldStart("verification") + s.Verification.Encode(e) + } + { + e.FieldStart("image") + e.Str(s.Image) + } + { + if s.Jetton.Set { + e.FieldStart("jetton") + s.Jetton.Encode(e) + } + } } -var jsonFieldsNameOfPrice = [2]string{ - 0: "value", - 1: "token_name", +var jsonFieldsNameOfPrice = [7]string{ + 0: "currency_type", + 1: "value", + 2: "decimals", + 3: "token_name", + 4: "verification", + 5: "image", + 6: "jetton", } // Decode decodes Price from json. @@ -32592,8 +34337,18 @@ func (s *Price) Decode(d *jx.Decoder) error { if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { - case "value": + case "currency_type": requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.CurrencyType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"currency_type\"") + } + case "value": + requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Str() s.Value = string(v) @@ -32604,8 +34359,20 @@ func (s *Price) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"value\"") } + case "decimals": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Int() + s.Decimals = int(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"decimals\"") + } case "token_name": - requiredBitSet[0] |= 1 << 1 + requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Str() s.TokenName = string(v) @@ -32616,6 +34383,38 @@ func (s *Price) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"token_name\"") } + case "verification": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + if err := s.Verification.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"verification\"") + } + case "image": + requiredBitSet[0] |= 1 << 5 + if err := func() error { + v, err := d.Str() + s.Image = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"image\"") + } + case "jetton": + if err := func() error { + s.Jetton.Reset() + if err := s.Jetton.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"jetton\"") + } default: return d.Skip() } @@ -32626,7 +34425,7 @@ func (s *Price) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00000011, + 0b00111111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -32672,6 +34471,369 @@ func (s *Price) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *Purchase) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Purchase) encodeFields(e *jx.Encoder) { + { + e.FieldStart("event_id") + e.Str(s.EventID) + } + { + e.FieldStart("invoice_id") + e.Str(s.InvoiceID) + } + { + e.FieldStart("source") + s.Source.Encode(e) + } + { + e.FieldStart("destination") + s.Destination.Encode(e) + } + { + e.FieldStart("lt") + e.Int64(s.Lt) + } + { + e.FieldStart("utime") + e.Int64(s.Utime) + } + { + e.FieldStart("amount") + s.Amount.Encode(e) + } + { + e.FieldStart("metadata") + s.Metadata.Encode(e) + } +} + +var jsonFieldsNameOfPurchase = [8]string{ + 0: "event_id", + 1: "invoice_id", + 2: "source", + 3: "destination", + 4: "lt", + 5: "utime", + 6: "amount", + 7: "metadata", +} + +// Decode decodes Purchase from json. +func (s *Purchase) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Purchase to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "event_id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.EventID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"event_id\"") + } + case "invoice_id": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.InvoiceID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"invoice_id\"") + } + case "source": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + if err := s.Source.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"source\"") + } + case "destination": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + if err := s.Destination.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"destination\"") + } + case "lt": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + v, err := d.Int64() + s.Lt = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"lt\"") + } + case "utime": + requiredBitSet[0] |= 1 << 5 + if err := func() error { + v, err := d.Int64() + s.Utime = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"utime\"") + } + case "amount": + requiredBitSet[0] |= 1 << 6 + if err := func() error { + if err := s.Amount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + case "metadata": + requiredBitSet[0] |= 1 << 7 + if err := func() error { + if err := s.Metadata.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"metadata\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Purchase") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b11111111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfPurchase) { + name = jsonFieldsNameOfPurchase[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Purchase) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Purchase) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *PurchaseAction) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *PurchaseAction) encodeFields(e *jx.Encoder) { + { + e.FieldStart("source") + s.Source.Encode(e) + } + { + e.FieldStart("destination") + s.Destination.Encode(e) + } + { + e.FieldStart("invoice_id") + e.Str(s.InvoiceID) + } + { + e.FieldStart("amount") + s.Amount.Encode(e) + } + { + e.FieldStart("metadata") + s.Metadata.Encode(e) + } +} + +var jsonFieldsNameOfPurchaseAction = [5]string{ + 0: "source", + 1: "destination", + 2: "invoice_id", + 3: "amount", + 4: "metadata", +} + +// Decode decodes PurchaseAction from json. +func (s *PurchaseAction) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode PurchaseAction to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "source": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Source.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"source\"") + } + case "destination": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Destination.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"destination\"") + } + case "invoice_id": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Str() + s.InvoiceID = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"invoice_id\"") + } + case "amount": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + if err := s.Amount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + case "metadata": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + if err := s.Metadata.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"metadata\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode PurchaseAction") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00011111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfPurchaseAction) { + name = jsonFieldsNameOfPurchaseAction[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *PurchaseAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *PurchaseAction) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *RawBlockchainConfig) Encode(e *jx.Encoder) { e.ObjStart() @@ -35678,63 +37840,62 @@ func (s *Subscription) Encode(e *jx.Encoder) { // encodeFields encodes fields. func (s *Subscription) encodeFields(e *jx.Encoder) { { - e.FieldStart("address") - e.Str(s.Address) - } - { - e.FieldStart("wallet_address") - e.Str(s.WalletAddress) - } - { - e.FieldStart("beneficiary_address") - e.Str(s.BeneficiaryAddress) + e.FieldStart("type") + e.Str(s.Type) } { - e.FieldStart("amount") - e.Int64(s.Amount) + e.FieldStart("status") + s.Status.Encode(e) } { e.FieldStart("period") e.Int64(s.Period) } { - e.FieldStart("start_time") - e.Int64(s.StartTime) + e.FieldStart("subscription_id") + e.Str(s.SubscriptionID) } { - e.FieldStart("timeout") - e.Int64(s.Timeout) + e.FieldStart("payment_per_period") + s.PaymentPerPeriod.Encode(e) } { - e.FieldStart("last_payment_time") - e.Int64(s.LastPaymentTime) + e.FieldStart("wallet") + s.Wallet.Encode(e) } { - e.FieldStart("last_request_time") - e.Int64(s.LastRequestTime) + e.FieldStart("next_charge_at") + e.Int64(s.NextChargeAt) } { - e.FieldStart("subscription_id") - e.Int64(s.SubscriptionID) + e.FieldStart("metadata") + s.Metadata.Encode(e) } { - e.FieldStart("failed_attempts") - e.Int32(s.FailedAttempts) + if s.Address.Set { + e.FieldStart("address") + s.Address.Encode(e) + } + } + { + if s.Beneficiary.Set { + e.FieldStart("beneficiary") + s.Beneficiary.Encode(e) + } } } -var jsonFieldsNameOfSubscription = [11]string{ - 0: "address", - 1: "wallet_address", - 2: "beneficiary_address", - 3: "amount", - 4: "period", - 5: "start_time", - 6: "timeout", - 7: "last_payment_time", - 8: "last_request_time", - 9: "subscription_id", - 10: "failed_attempts", +var jsonFieldsNameOfSubscription = [10]string{ + 0: "type", + 1: "status", + 2: "period", + 3: "subscription_id", + 4: "payment_per_period", + 5: "wallet", + 6: "next_charge_at", + 7: "metadata", + 8: "address", + 9: "beneficiary", } // Decode decodes Subscription from json. @@ -35746,137 +37907,113 @@ func (s *Subscription) Decode(d *jx.Decoder) error { if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { - case "address": + case "type": requiredBitSet[0] |= 1 << 0 if err := func() error { v, err := d.Str() - s.Address = string(v) + s.Type = string(v) if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"address\"") + return errors.Wrap(err, "decode field \"type\"") } - case "wallet_address": + case "status": requiredBitSet[0] |= 1 << 1 if err := func() error { - v, err := d.Str() - s.WalletAddress = string(v) - if err != nil { + if err := s.Status.Decode(d); err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"wallet_address\"") + return errors.Wrap(err, "decode field \"status\"") } - case "beneficiary_address": + case "period": requiredBitSet[0] |= 1 << 2 if err := func() error { - v, err := d.Str() - s.BeneficiaryAddress = string(v) + v, err := d.Int64() + s.Period = int64(v) if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"beneficiary_address\"") + return errors.Wrap(err, "decode field \"period\"") } - case "amount": + case "subscription_id": requiredBitSet[0] |= 1 << 3 if err := func() error { - v, err := d.Int64() - s.Amount = int64(v) + v, err := d.Str() + s.SubscriptionID = string(v) if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"amount\"") + return errors.Wrap(err, "decode field \"subscription_id\"") } - case "period": + case "payment_per_period": requiredBitSet[0] |= 1 << 4 if err := func() error { - v, err := d.Int64() - s.Period = int64(v) - if err != nil { + if err := s.PaymentPerPeriod.Decode(d); err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"period\"") + return errors.Wrap(err, "decode field \"payment_per_period\"") } - case "start_time": + case "wallet": requiredBitSet[0] |= 1 << 5 if err := func() error { - v, err := d.Int64() - s.StartTime = int64(v) - if err != nil { + if err := s.Wallet.Decode(d); err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"start_time\"") + return errors.Wrap(err, "decode field \"wallet\"") } - case "timeout": + case "next_charge_at": requiredBitSet[0] |= 1 << 6 if err := func() error { v, err := d.Int64() - s.Timeout = int64(v) + s.NextChargeAt = int64(v) if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"timeout\"") + return errors.Wrap(err, "decode field \"next_charge_at\"") } - case "last_payment_time": + case "metadata": requiredBitSet[0] |= 1 << 7 if err := func() error { - v, err := d.Int64() - s.LastPaymentTime = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"last_payment_time\"") - } - case "last_request_time": - requiredBitSet[1] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.LastRequestTime = int64(v) - if err != nil { + if err := s.Metadata.Decode(d); err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"last_request_time\"") + return errors.Wrap(err, "decode field \"metadata\"") } - case "subscription_id": - requiredBitSet[1] |= 1 << 1 + case "address": if err := func() error { - v, err := d.Int64() - s.SubscriptionID = int64(v) - if err != nil { + s.Address.Reset() + if err := s.Address.Decode(d); err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"subscription_id\"") + return errors.Wrap(err, "decode field \"address\"") } - case "failed_attempts": - requiredBitSet[1] |= 1 << 2 + case "beneficiary": if err := func() error { - v, err := d.Int32() - s.FailedAttempts = int32(v) - if err != nil { + s.Beneficiary.Reset() + if err := s.Beneficiary.Decode(d); err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"failed_attempts\"") + return errors.Wrap(err, "decode field \"beneficiary\"") } default: return d.Skip() @@ -35889,7 +38026,7 @@ func (s *Subscription) Decode(d *jx.Decoder) error { var failures []validate.FieldError for i, mask := range [2]uint8{ 0b11111111, - 0b00000111, + 0b00000000, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -36095,6 +38232,50 @@ func (s *SubscriptionAction) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes SubscriptionStatus as json. +func (s SubscriptionStatus) Encode(e *jx.Encoder) { + e.Str(string(s)) +} + +// Decode decodes SubscriptionStatus from json. +func (s *SubscriptionStatus) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SubscriptionStatus to nil") + } + v, err := d.StrBytes() + if err != nil { + return err + } + // Try to use constant string. + switch SubscriptionStatus(v) { + case SubscriptionStatusNotReady: + *s = SubscriptionStatusNotReady + case SubscriptionStatusActive: + *s = SubscriptionStatusActive + case SubscriptionStatusSuspended: + *s = SubscriptionStatusSuspended + case SubscriptionStatusCancelled: + *s = SubscriptionStatusCancelled + default: + *s = SubscriptionStatus(v) + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s SubscriptionStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SubscriptionStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *Subscriptions) Encode(e *jx.Encoder) { e.ObjStart() @@ -39580,6 +41761,355 @@ func (s *ValueFlowJettonsItem) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *Wallet) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Wallet) encodeFields(e *jx.Encoder) { + { + e.FieldStart("address") + e.Str(s.Address) + } + { + e.FieldStart("is_wallet") + e.Bool(s.IsWallet) + } + { + e.FieldStart("balance") + e.Int64(s.Balance) + } + { + e.FieldStart("stats") + s.Stats.Encode(e) + } + { + e.FieldStart("plugins") + e.ArrStart() + for _, elem := range s.Plugins { + elem.Encode(e) + } + e.ArrEnd() + } + { + e.FieldStart("status") + s.Status.Encode(e) + } + { + e.FieldStart("last_activity") + e.Int64(s.LastActivity) + } + { + if s.Name.Set { + e.FieldStart("name") + s.Name.Encode(e) + } + } + { + if s.Icon.Set { + e.FieldStart("icon") + s.Icon.Encode(e) + } + } + { + e.FieldStart("get_methods") + e.ArrStart() + for _, elem := range s.GetMethods { + e.Str(elem) + } + e.ArrEnd() + } + { + if s.IsSuspended.Set { + e.FieldStart("is_suspended") + s.IsSuspended.Encode(e) + } + } + { + if s.SignatureDisabled.Set { + e.FieldStart("signature_disabled") + s.SignatureDisabled.Encode(e) + } + } + { + if s.Interfaces != nil { + e.FieldStart("interfaces") + e.ArrStart() + for _, elem := range s.Interfaces { + e.Str(elem) + } + e.ArrEnd() + } + } + { + e.FieldStart("last_lt") + e.Int64(s.LastLt) + } +} + +var jsonFieldsNameOfWallet = [14]string{ + 0: "address", + 1: "is_wallet", + 2: "balance", + 3: "stats", + 4: "plugins", + 5: "status", + 6: "last_activity", + 7: "name", + 8: "icon", + 9: "get_methods", + 10: "is_suspended", + 11: "signature_disabled", + 12: "interfaces", + 13: "last_lt", +} + +// Decode decodes Wallet from json. +func (s *Wallet) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Wallet to nil") + } + var requiredBitSet [2]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "address": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Address = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"address\"") + } + case "is_wallet": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Bool() + s.IsWallet = bool(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"is_wallet\"") + } + case "balance": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Int64() + s.Balance = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"balance\"") + } + case "stats": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + if err := s.Stats.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"stats\"") + } + case "plugins": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + s.Plugins = make([]WalletPlugin, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem WalletPlugin + if err := elem.Decode(d); err != nil { + return err + } + s.Plugins = append(s.Plugins, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"plugins\"") + } + case "status": + requiredBitSet[0] |= 1 << 5 + if err := func() error { + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "last_activity": + requiredBitSet[0] |= 1 << 6 + if err := func() error { + v, err := d.Int64() + s.LastActivity = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"last_activity\"") + } + case "name": + if err := func() error { + s.Name.Reset() + if err := s.Name.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "icon": + if err := func() error { + s.Icon.Reset() + if err := s.Icon.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"icon\"") + } + case "get_methods": + requiredBitSet[1] |= 1 << 1 + if err := func() error { + s.GetMethods = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.GetMethods = append(s.GetMethods, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"get_methods\"") + } + case "is_suspended": + if err := func() error { + s.IsSuspended.Reset() + if err := s.IsSuspended.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"is_suspended\"") + } + case "signature_disabled": + if err := func() error { + s.SignatureDisabled.Reset() + if err := s.SignatureDisabled.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"signature_disabled\"") + } + case "interfaces": + if err := func() error { + s.Interfaces = make([]string, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem string + v, err := d.Str() + elem = string(v) + if err != nil { + return err + } + s.Interfaces = append(s.Interfaces, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"interfaces\"") + } + case "last_lt": + requiredBitSet[1] |= 1 << 5 + if err := func() error { + v, err := d.Int64() + s.LastLt = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"last_lt\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Wallet") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [2]uint8{ + 0b01111111, + 0b00100010, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfWallet) { + name = jsonFieldsNameOfWallet[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Wallet) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Wallet) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *WalletDNS) Encode(e *jx.Encoder) { e.ObjStart() @@ -39771,6 +42301,387 @@ func (s *WalletDNS) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *WalletPlugin) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *WalletPlugin) encodeFields(e *jx.Encoder) { + { + e.FieldStart("address") + e.Str(s.Address) + } + { + e.FieldStart("type") + e.Str(s.Type) + } + { + e.FieldStart("status") + s.Status.Encode(e) + } +} + +var jsonFieldsNameOfWalletPlugin = [3]string{ + 0: "address", + 1: "type", + 2: "status", +} + +// Decode decodes WalletPlugin from json. +func (s *WalletPlugin) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode WalletPlugin to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "address": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Address = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"address\"") + } + case "type": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Type = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"type\"") + } + case "status": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode WalletPlugin") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfWalletPlugin) { + name = jsonFieldsNameOfWalletPlugin[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *WalletPlugin) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *WalletPlugin) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *WalletStats) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *WalletStats) encodeFields(e *jx.Encoder) { + { + e.FieldStart("nfts_count") + e.Int32(s.NftsCount) + } + { + e.FieldStart("jettons_count") + e.Int32(s.JettonsCount) + } + { + e.FieldStart("multisig_count") + e.Int32(s.MultisigCount) + } + { + e.FieldStart("staking_count") + e.Int32(s.StakingCount) + } +} + +var jsonFieldsNameOfWalletStats = [4]string{ + 0: "nfts_count", + 1: "jettons_count", + 2: "multisig_count", + 3: "staking_count", +} + +// Decode decodes WalletStats from json. +func (s *WalletStats) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode WalletStats to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "nfts_count": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int32() + s.NftsCount = int32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"nfts_count\"") + } + case "jettons_count": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Int32() + s.JettonsCount = int32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"jettons_count\"") + } + case "multisig_count": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Int32() + s.MultisigCount = int32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"multisig_count\"") + } + case "staking_count": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + v, err := d.Int32() + s.StakingCount = int32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"staking_count\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode WalletStats") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00001111, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfWalletStats) { + name = jsonFieldsNameOfWalletStats[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *WalletStats) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *WalletStats) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *Wallets) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Wallets) encodeFields(e *jx.Encoder) { + { + e.FieldStart("accounts") + e.ArrStart() + for _, elem := range s.Accounts { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfWallets = [1]string{ + 0: "accounts", +} + +// Decode decodes Wallets from json. +func (s *Wallets) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Wallets to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "accounts": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Accounts = make([]Wallet, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem Wallet + if err := elem.Decode(d); err != nil { + return err + } + s.Accounts = append(s.Accounts, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"accounts\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Wallets") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00000001, + } { + if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { + // Mask only required fields and check equality to mask using XOR. + // + // If XOR result is not zero, result is not equal to expected, so some fields are missed. + // Bits of fields which would be set are actually bits of missed fields. + missed := bits.OnesCount8(result) + for bitN := 0; bitN < missed; bitN++ { + bitIdx := bits.TrailingZeros8(result) + fieldIdx := i*8 + bitIdx + var name string + if fieldIdx < len(jsonFieldsNameOfWallets) { + name = jsonFieldsNameOfWallets[fieldIdx] + } else { + name = strconv.Itoa(fieldIdx) + } + failures = append(failures, validate.FieldError{ + Name: name, + Error: validate.ErrFieldRequired, + }) + // Reset bit. + result &^= 1 << bitIdx + } + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *Wallets) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Wallets) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *WithdrawStakeAction) Encode(e *jx.Encoder) { e.ObjStart() diff --git a/oas_operations_gen.go b/oas_operations_gen.go index c877a2a..6a63059 100644 --- a/oas_operations_gen.go +++ b/oas_operations_gen.go @@ -6,105 +6,111 @@ package tonapi type OperationName = string const ( - AccountDnsBackResolveOperation OperationName = "AccountDnsBackResolve" - AddressParseOperation OperationName = "AddressParse" - BlockchainAccountInspectOperation OperationName = "BlockchainAccountInspect" - DecodeMessageOperation OperationName = "DecodeMessage" - DnsResolveOperation OperationName = "DnsResolve" - EmulateMessageToAccountEventOperation OperationName = "EmulateMessageToAccountEvent" - EmulateMessageToEventOperation OperationName = "EmulateMessageToEvent" - EmulateMessageToTraceOperation OperationName = "EmulateMessageToTrace" - EmulateMessageToWalletOperation OperationName = "EmulateMessageToWallet" - ExecGetMethodForBlockchainAccountOperation OperationName = "ExecGetMethodForBlockchainAccount" - GaslessConfigOperation OperationName = "GaslessConfig" - GaslessEstimateOperation OperationName = "GaslessEstimate" - GaslessSendOperation OperationName = "GaslessSend" - GetAccountOperation OperationName = "GetAccount" - GetAccountDiffOperation OperationName = "GetAccountDiff" - GetAccountDnsExpiringOperation OperationName = "GetAccountDnsExpiring" - GetAccountEventOperation OperationName = "GetAccountEvent" - GetAccountEventsOperation OperationName = "GetAccountEvents" - GetAccountExtraCurrencyHistoryByIDOperation OperationName = "GetAccountExtraCurrencyHistoryByID" - GetAccountInfoByStateInitOperation OperationName = "GetAccountInfoByStateInit" - GetAccountJettonBalanceOperation OperationName = "GetAccountJettonBalance" - GetAccountJettonHistoryByIDOperation OperationName = "GetAccountJettonHistoryByID" - GetAccountJettonsBalancesOperation OperationName = "GetAccountJettonsBalances" - GetAccountJettonsHistoryOperation OperationName = "GetAccountJettonsHistory" - GetAccountMultisigsOperation OperationName = "GetAccountMultisigs" - GetAccountNftHistoryOperation OperationName = "GetAccountNftHistory" - GetAccountNftItemsOperation OperationName = "GetAccountNftItems" - GetAccountNominatorsPoolsOperation OperationName = "GetAccountNominatorsPools" - GetAccountPublicKeyOperation OperationName = "GetAccountPublicKey" - GetAccountSeqnoOperation OperationName = "GetAccountSeqno" - GetAccountSubscriptionsOperation OperationName = "GetAccountSubscriptions" - GetAccountTracesOperation OperationName = "GetAccountTraces" - GetAccountsOperation OperationName = "GetAccounts" - GetAllAuctionsOperation OperationName = "GetAllAuctions" - GetAllRawShardsInfoOperation OperationName = "GetAllRawShardsInfo" - GetBlockchainAccountTransactionsOperation OperationName = "GetBlockchainAccountTransactions" - GetBlockchainBlockOperation OperationName = "GetBlockchainBlock" - GetBlockchainBlockTransactionsOperation OperationName = "GetBlockchainBlockTransactions" - GetBlockchainConfigOperation OperationName = "GetBlockchainConfig" - GetBlockchainConfigFromBlockOperation OperationName = "GetBlockchainConfigFromBlock" - GetBlockchainMasterchainBlocksOperation OperationName = "GetBlockchainMasterchainBlocks" - GetBlockchainMasterchainHeadOperation OperationName = "GetBlockchainMasterchainHead" - GetBlockchainMasterchainShardsOperation OperationName = "GetBlockchainMasterchainShards" - GetBlockchainMasterchainTransactionsOperation OperationName = "GetBlockchainMasterchainTransactions" - GetBlockchainRawAccountOperation OperationName = "GetBlockchainRawAccount" - GetBlockchainTransactionOperation OperationName = "GetBlockchainTransaction" - GetBlockchainTransactionByMessageHashOperation OperationName = "GetBlockchainTransactionByMessageHash" - GetBlockchainValidatorsOperation OperationName = "GetBlockchainValidators" - GetChartRatesOperation OperationName = "GetChartRates" - GetDnsInfoOperation OperationName = "GetDnsInfo" - GetDomainBidsOperation OperationName = "GetDomainBids" - GetEventOperation OperationName = "GetEvent" - GetExtraCurrencyInfoOperation OperationName = "GetExtraCurrencyInfo" - GetItemsFromCollectionOperation OperationName = "GetItemsFromCollection" - GetJettonHoldersOperation OperationName = "GetJettonHolders" - GetJettonInfoOperation OperationName = "GetJettonInfo" - GetJettonInfosByAddressesOperation OperationName = "GetJettonInfosByAddresses" - GetJettonTransferPayloadOperation OperationName = "GetJettonTransferPayload" - GetJettonsOperation OperationName = "GetJettons" - GetJettonsEventsOperation OperationName = "GetJettonsEvents" - GetMarketsRatesOperation OperationName = "GetMarketsRates" - GetMultisigAccountOperation OperationName = "GetMultisigAccount" - GetNftCollectionOperation OperationName = "GetNftCollection" - GetNftCollectionItemsByAddressesOperation OperationName = "GetNftCollectionItemsByAddresses" - GetNftCollectionsOperation OperationName = "GetNftCollections" - GetNftHistoryByIDOperation OperationName = "GetNftHistoryByID" - GetNftItemByAddressOperation OperationName = "GetNftItemByAddress" - GetNftItemsByAddressesOperation OperationName = "GetNftItemsByAddresses" - GetOpenapiJsonOperation OperationName = "GetOpenapiJson" - GetOpenapiYmlOperation OperationName = "GetOpenapiYml" - GetOutMsgQueueSizesOperation OperationName = "GetOutMsgQueueSizes" - GetRatesOperation OperationName = "GetRates" - GetRawAccountStateOperation OperationName = "GetRawAccountState" - GetRawBlockProofOperation OperationName = "GetRawBlockProof" - GetRawBlockchainBlockOperation OperationName = "GetRawBlockchainBlock" - GetRawBlockchainBlockHeaderOperation OperationName = "GetRawBlockchainBlockHeader" - GetRawBlockchainBlockStateOperation OperationName = "GetRawBlockchainBlockState" - GetRawBlockchainConfigOperation OperationName = "GetRawBlockchainConfig" - GetRawBlockchainConfigFromBlockOperation OperationName = "GetRawBlockchainConfigFromBlock" - GetRawConfigOperation OperationName = "GetRawConfig" - GetRawListBlockTransactionsOperation OperationName = "GetRawListBlockTransactions" - GetRawMasterchainInfoOperation OperationName = "GetRawMasterchainInfo" - GetRawMasterchainInfoExtOperation OperationName = "GetRawMasterchainInfoExt" - GetRawShardBlockProofOperation OperationName = "GetRawShardBlockProof" - GetRawShardInfoOperation OperationName = "GetRawShardInfo" - GetRawTimeOperation OperationName = "GetRawTime" - GetRawTransactionsOperation OperationName = "GetRawTransactions" - GetReducedBlockchainBlocksOperation OperationName = "GetReducedBlockchainBlocks" - GetStakingPoolHistoryOperation OperationName = "GetStakingPoolHistory" - GetStakingPoolInfoOperation OperationName = "GetStakingPoolInfo" - GetStakingPoolsOperation OperationName = "GetStakingPools" - GetStorageProvidersOperation OperationName = "GetStorageProviders" - GetTonConnectPayloadOperation OperationName = "GetTonConnectPayload" - GetTraceOperation OperationName = "GetTrace" - GetWalletsByPublicKeyOperation OperationName = "GetWalletsByPublicKey" - ReindexAccountOperation OperationName = "ReindexAccount" - SearchAccountsOperation OperationName = "SearchAccounts" - SendBlockchainMessageOperation OperationName = "SendBlockchainMessage" - SendRawMessageOperation OperationName = "SendRawMessage" - StatusOperation OperationName = "Status" - TonConnectProofOperation OperationName = "TonConnectProof" + AccountDnsBackResolveOperation OperationName = "AccountDnsBackResolve" + AddressParseOperation OperationName = "AddressParse" + BlockchainAccountInspectOperation OperationName = "BlockchainAccountInspect" + DecodeMessageOperation OperationName = "DecodeMessage" + DnsResolveOperation OperationName = "DnsResolve" + DownloadBlockchainBlockBocOperation OperationName = "DownloadBlockchainBlockBoc" + EmulateMessageToAccountEventOperation OperationName = "EmulateMessageToAccountEvent" + EmulateMessageToEventOperation OperationName = "EmulateMessageToEvent" + EmulateMessageToTraceOperation OperationName = "EmulateMessageToTrace" + EmulateMessageToWalletOperation OperationName = "EmulateMessageToWallet" + ExecGetMethodForBlockchainAccountOperation OperationName = "ExecGetMethodForBlockchainAccount" + ExecGetMethodWithBodyForBlockchainAccountOperation OperationName = "ExecGetMethodWithBodyForBlockchainAccount" + GaslessConfigOperation OperationName = "GaslessConfig" + GaslessEstimateOperation OperationName = "GaslessEstimate" + GaslessSendOperation OperationName = "GaslessSend" + GetAccountOperation OperationName = "GetAccount" + GetAccountDiffOperation OperationName = "GetAccountDiff" + GetAccountDnsExpiringOperation OperationName = "GetAccountDnsExpiring" + GetAccountEventOperation OperationName = "GetAccountEvent" + GetAccountEventsOperation OperationName = "GetAccountEvents" + GetAccountExtraCurrencyHistoryByIDOperation OperationName = "GetAccountExtraCurrencyHistoryByID" + GetAccountInfoByStateInitOperation OperationName = "GetAccountInfoByStateInit" + GetAccountJettonBalanceOperation OperationName = "GetAccountJettonBalance" + GetAccountJettonHistoryByIDOperation OperationName = "GetAccountJettonHistoryByID" + GetAccountJettonsBalancesOperation OperationName = "GetAccountJettonsBalances" + GetAccountJettonsHistoryOperation OperationName = "GetAccountJettonsHistory" + GetAccountMultisigsOperation OperationName = "GetAccountMultisigs" + GetAccountNftHistoryOperation OperationName = "GetAccountNftHistory" + GetAccountNftItemsOperation OperationName = "GetAccountNftItems" + GetAccountNominatorsPoolsOperation OperationName = "GetAccountNominatorsPools" + GetAccountPublicKeyOperation OperationName = "GetAccountPublicKey" + GetAccountSeqnoOperation OperationName = "GetAccountSeqno" + GetAccountSubscriptionsOperation OperationName = "GetAccountSubscriptions" + GetAccountTracesOperation OperationName = "GetAccountTraces" + GetAccountsOperation OperationName = "GetAccounts" + GetAllAuctionsOperation OperationName = "GetAllAuctions" + GetAllRawShardsInfoOperation OperationName = "GetAllRawShardsInfo" + GetBlockchainAccountTransactionsOperation OperationName = "GetBlockchainAccountTransactions" + GetBlockchainBlockOperation OperationName = "GetBlockchainBlock" + GetBlockchainBlockTransactionsOperation OperationName = "GetBlockchainBlockTransactions" + GetBlockchainConfigOperation OperationName = "GetBlockchainConfig" + GetBlockchainConfigFromBlockOperation OperationName = "GetBlockchainConfigFromBlock" + GetBlockchainMasterchainBlocksOperation OperationName = "GetBlockchainMasterchainBlocks" + GetBlockchainMasterchainHeadOperation OperationName = "GetBlockchainMasterchainHead" + GetBlockchainMasterchainShardsOperation OperationName = "GetBlockchainMasterchainShards" + GetBlockchainMasterchainTransactionsOperation OperationName = "GetBlockchainMasterchainTransactions" + GetBlockchainRawAccountOperation OperationName = "GetBlockchainRawAccount" + GetBlockchainTransactionOperation OperationName = "GetBlockchainTransaction" + GetBlockchainTransactionByMessageHashOperation OperationName = "GetBlockchainTransactionByMessageHash" + GetBlockchainValidatorsOperation OperationName = "GetBlockchainValidators" + GetChartRatesOperation OperationName = "GetChartRates" + GetDnsInfoOperation OperationName = "GetDnsInfo" + GetDomainBidsOperation OperationName = "GetDomainBids" + GetEventOperation OperationName = "GetEvent" + GetExtraCurrencyInfoOperation OperationName = "GetExtraCurrencyInfo" + GetItemsFromCollectionOperation OperationName = "GetItemsFromCollection" + GetJettonAccountHistoryByIDOperation OperationName = "GetJettonAccountHistoryByID" + GetJettonHoldersOperation OperationName = "GetJettonHolders" + GetJettonInfoOperation OperationName = "GetJettonInfo" + GetJettonInfosByAddressesOperation OperationName = "GetJettonInfosByAddresses" + GetJettonTransferPayloadOperation OperationName = "GetJettonTransferPayload" + GetJettonsOperation OperationName = "GetJettons" + GetJettonsEventsOperation OperationName = "GetJettonsEvents" + GetMarketsRatesOperation OperationName = "GetMarketsRates" + GetMultisigAccountOperation OperationName = "GetMultisigAccount" + GetMultisigOrderOperation OperationName = "GetMultisigOrder" + GetNftCollectionOperation OperationName = "GetNftCollection" + GetNftCollectionItemsByAddressesOperation OperationName = "GetNftCollectionItemsByAddresses" + GetNftCollectionsOperation OperationName = "GetNftCollections" + GetNftHistoryByIDOperation OperationName = "GetNftHistoryByID" + GetNftItemByAddressOperation OperationName = "GetNftItemByAddress" + GetNftItemsByAddressesOperation OperationName = "GetNftItemsByAddresses" + GetOpenapiJsonOperation OperationName = "GetOpenapiJson" + GetOpenapiYmlOperation OperationName = "GetOpenapiYml" + GetOutMsgQueueSizesOperation OperationName = "GetOutMsgQueueSizes" + GetPurchaseHistoryOperation OperationName = "GetPurchaseHistory" + GetRatesOperation OperationName = "GetRates" + GetRawAccountStateOperation OperationName = "GetRawAccountState" + GetRawBlockProofOperation OperationName = "GetRawBlockProof" + GetRawBlockchainBlockOperation OperationName = "GetRawBlockchainBlock" + GetRawBlockchainBlockHeaderOperation OperationName = "GetRawBlockchainBlockHeader" + GetRawBlockchainBlockStateOperation OperationName = "GetRawBlockchainBlockState" + GetRawBlockchainConfigOperation OperationName = "GetRawBlockchainConfig" + GetRawBlockchainConfigFromBlockOperation OperationName = "GetRawBlockchainConfigFromBlock" + GetRawConfigOperation OperationName = "GetRawConfig" + GetRawListBlockTransactionsOperation OperationName = "GetRawListBlockTransactions" + GetRawMasterchainInfoOperation OperationName = "GetRawMasterchainInfo" + GetRawMasterchainInfoExtOperation OperationName = "GetRawMasterchainInfoExt" + GetRawShardBlockProofOperation OperationName = "GetRawShardBlockProof" + GetRawShardInfoOperation OperationName = "GetRawShardInfo" + GetRawTimeOperation OperationName = "GetRawTime" + GetRawTransactionsOperation OperationName = "GetRawTransactions" + GetReducedBlockchainBlocksOperation OperationName = "GetReducedBlockchainBlocks" + GetStakingPoolHistoryOperation OperationName = "GetStakingPoolHistory" + GetStakingPoolInfoOperation OperationName = "GetStakingPoolInfo" + GetStakingPoolsOperation OperationName = "GetStakingPools" + GetStorageProvidersOperation OperationName = "GetStorageProviders" + GetTonConnectPayloadOperation OperationName = "GetTonConnectPayload" + GetTraceOperation OperationName = "GetTrace" + GetWalletInfoOperation OperationName = "GetWalletInfo" + GetWalletsByPublicKeyOperation OperationName = "GetWalletsByPublicKey" + ReindexAccountOperation OperationName = "ReindexAccount" + SearchAccountsOperation OperationName = "SearchAccounts" + SendBlockchainMessageOperation OperationName = "SendBlockchainMessage" + SendRawMessageOperation OperationName = "SendRawMessage" + StatusOperation OperationName = "Status" + TonConnectProofOperation OperationName = "TonConnectProof" ) diff --git a/oas_parameters_gen.go b/oas_parameters_gen.go index b4fd945..9b7b3f6 100644 --- a/oas_parameters_gen.go +++ b/oas_parameters_gen.go @@ -26,6 +26,12 @@ type DnsResolveParams struct { DomainName string } +// DownloadBlockchainBlockBocParams is parameters of downloadBlockchainBlockBoc operation. +type DownloadBlockchainBlockBocParams struct { + // Block ID. + BlockID string +} + // EmulateMessageToAccountEventParams is parameters of emulateMessageToAccountEvent operation. type EmulateMessageToAccountEventParams struct { AcceptLanguage OptString @@ -59,6 +65,14 @@ type ExecGetMethodForBlockchainAccountParams struct { Args []string } +// ExecGetMethodWithBodyForBlockchainAccountParams is parameters of execGetMethodWithBodyForBlockchainAccount operation. +type ExecGetMethodWithBodyForBlockchainAccountParams struct { + // Account ID. + AccountID string + // Contract get method name. + MethodName string +} + // GaslessEstimateParams is parameters of gaslessEstimate operation. type GaslessEstimateParams struct { AcceptLanguage OptString @@ -168,13 +182,10 @@ type GetAccountJettonsBalancesParams struct { // GetAccountJettonsHistoryParams is parameters of getAccountJettonsHistory operation. type GetAccountJettonsHistoryParams struct { // Account ID. - AccountID string - AcceptLanguage OptString + AccountID string // Omit this parameter to get last events. - BeforeLt OptInt64 - Limit int - StartDate OptInt64 - EndDate OptInt64 + BeforeLt OptInt64 + Limit int } // GetAccountMultisigsParams is parameters of getAccountMultisigs operation. @@ -189,10 +200,8 @@ type GetAccountNftHistoryParams struct { AccountID string AcceptLanguage OptString // Omit this parameter to get last events. - BeforeLt OptInt64 - Limit int - StartDate OptInt64 - EndDate OptInt64 + BeforeLt OptInt64 + Limit int } // GetAccountNftItemsParams is parameters of getAccountNftItems operation. @@ -367,6 +376,19 @@ type GetItemsFromCollectionParams struct { Offset OptInt } +// GetJettonAccountHistoryByIDParams is parameters of getJettonAccountHistoryByID operation. +type GetJettonAccountHistoryByIDParams struct { + // Account ID. + AccountID string + // Jetton ID. + JettonID string + // Omit this parameter to get last events. + BeforeLt OptInt64 + Limit int + StartDate OptInt64 + EndDate OptInt64 +} + // GetJettonHoldersParams is parameters of getJettonHolders operation. type GetJettonHoldersParams struct { // Account ID. @@ -408,6 +430,12 @@ type GetMultisigAccountParams struct { AccountID string } +// GetMultisigOrderParams is parameters of getMultisigOrder operation. +type GetMultisigOrderParams struct { + // Account ID. + AccountID string +} + // GetNftCollectionParams is parameters of getNftCollection operation. type GetNftCollectionParams struct { // Account ID. @@ -438,6 +466,15 @@ type GetNftItemByAddressParams struct { AccountID string } +// GetPurchaseHistoryParams is parameters of getPurchaseHistory operation. +type GetPurchaseHistoryParams struct { + // Account ID. + AccountID string + // Omit this parameter to get last invoices. + BeforeLt OptInt64 + Limit OptInt +} + // GetRatesParams is parameters of getRates operation. type GetRatesParams struct { // Accept ton and jetton master addresses, separated by commas. @@ -582,6 +619,12 @@ type GetTraceParams struct { TraceID string } +// GetWalletInfoParams is parameters of getWalletInfo operation. +type GetWalletInfoParams struct { + // Account ID. + AccountID string +} + // GetWalletsByPublicKeyParams is parameters of getWalletsByPublicKey operation. type GetWalletsByPublicKeyParams struct { PublicKey string diff --git a/oas_request_encoders_gen.go b/oas_request_encoders_gen.go index 5883406..0c955e3 100644 --- a/oas_request_encoders_gen.go +++ b/oas_request_encoders_gen.go @@ -81,6 +81,26 @@ func encodeEmulateMessageToWalletRequest( return nil } +func encodeExecGetMethodWithBodyForBlockchainAccountRequest( + req OptExecGetMethodWithBodyForBlockchainAccountReq, + r *http.Request, +) error { + const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } + e := new(jx.Encoder) + { + if req.Set { + req.Encode(e) + } + } + encoded := e.Bytes() + ht.SetBody(r, bytes.NewReader(encoded), contentType) + return nil +} + func encodeGaslessEstimateRequest( req *GaslessEstimateReq, r *http.Request, diff --git a/oas_response_decoders_gen.go b/oas_response_decoders_gen.go index 35a8a66..fa3ac58 100644 --- a/oas_response_decoders_gen.go +++ b/oas_response_decoders_gen.go @@ -11,7 +11,9 @@ import ( "github.com/go-faster/errors" "github.com/go-faster/jx" + "github.com/ogen-go/ogen/conv" "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/uri" "github.com/ogen-go/ogen/validate" ) @@ -466,6 +468,113 @@ func decodeDnsResolveResponse(resp *http.Response) (res *DnsRecord, _ error) { return res, errors.Wrap(defRes, "error") } +func decodeDownloadBlockchainBlockBocResponse(resp *http.Response) (res *DownloadBlockchainBlockBocOKHeaders, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/octet-stream": + reader := resp.Body + b, err := io.ReadAll(reader) + if err != nil { + return res, err + } + + response := DownloadBlockchainBlockBocOK{Data: bytes.NewReader(b)} + var wrapper DownloadBlockchainBlockBocOKHeaders + wrapper.Response = response + h := uri.NewHeaderDecoder(resp.Header) + // Parse "Content-Disposition" header. + { + cfg := uri.HeaderParameterDecodingConfig{ + Name: "Content-Disposition", + Explode: false, + } + if err := func() error { + if err := h.HasParam(cfg); err == nil { + if err := h.DecodeParam(cfg, func(d uri.Decoder) error { + var wrapperDotContentDispositionVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + wrapperDotContentDispositionVal = c + return nil + }(); err != nil { + return err + } + wrapper.ContentDisposition.SetTo(wrapperDotContentDispositionVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "parse Content-Disposition header") + } + } + return &wrapper, nil + default: + return res, validate.InvalidContentType(ct) + } + } + // Convenient error response. + defRes, err := func() (res *ErrorStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &ErrorStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, errors.Wrap(defRes, "error") +} + func decodeEmulateMessageToAccountEventResponse(resp *http.Response) (res *AccountEvent, _ error) { switch resp.StatusCode { case 200: @@ -926,6 +1035,98 @@ func decodeExecGetMethodForBlockchainAccountResponse(resp *http.Response) (res * return res, errors.Wrap(defRes, "error") } +func decodeExecGetMethodWithBodyForBlockchainAccountResponse(resp *http.Response) (res *MethodExecutionResult, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response MethodExecutionResult + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + // Convenient error response. + defRes, err := func() (res *ErrorStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &ErrorStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, errors.Wrap(defRes, "error") +} + func decodeGaslessConfigResponse(resp *http.Response) (res *GaslessConfig, _ error) { switch resp.StatusCode { case 200: @@ -2095,7 +2296,7 @@ func decodeGetAccountJettonsBalancesResponse(resp *http.Response) (res *JettonsB return res, errors.Wrap(defRes, "error") } -func decodeGetAccountJettonsHistoryResponse(resp *http.Response) (res *AccountEvents, _ error) { +func decodeGetAccountJettonsHistoryResponse(resp *http.Response) (res *JettonOperations, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -2111,7 +2312,7 @@ func decodeGetAccountJettonsHistoryResponse(resp *http.Response) (res *AccountEv } d := jx.DecodeBytes(buf) - var response AccountEvents + var response JettonOperations if err := func() error { if err := response.Decode(d); err != nil { return err @@ -2279,7 +2480,7 @@ func decodeGetAccountMultisigsResponse(resp *http.Response) (res *Multisigs, _ e return res, errors.Wrap(defRes, "error") } -func decodeGetAccountNftHistoryResponse(resp *http.Response) (res *AccountEvents, _ error) { +func decodeGetAccountNftHistoryResponse(resp *http.Response) (res *NftOperations, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -2295,7 +2496,7 @@ func decodeGetAccountNftHistoryResponse(resp *http.Response) (res *AccountEvents } d := jx.DecodeBytes(buf) - var response AccountEvents + var response NftOperations if err := func() error { if err := response.Decode(d); err != nil { return err @@ -4911,7 +5112,7 @@ func decodeGetItemsFromCollectionResponse(resp *http.Response) (res *NftItems, _ return res, errors.Wrap(defRes, "error") } -func decodeGetJettonHoldersResponse(resp *http.Response) (res *JettonHolders, _ error) { +func decodeGetJettonAccountHistoryByIDResponse(resp *http.Response) (res *JettonOperations, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -4927,7 +5128,7 @@ func decodeGetJettonHoldersResponse(resp *http.Response) (res *JettonHolders, _ } d := jx.DecodeBytes(buf) - var response JettonHolders + var response JettonOperations if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5003,7 +5204,7 @@ func decodeGetJettonHoldersResponse(resp *http.Response) (res *JettonHolders, _ return res, errors.Wrap(defRes, "error") } -func decodeGetJettonInfoResponse(resp *http.Response) (res *JettonInfo, _ error) { +func decodeGetJettonHoldersResponse(resp *http.Response) (res *JettonHolders, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5019,7 +5220,7 @@ func decodeGetJettonInfoResponse(resp *http.Response) (res *JettonInfo, _ error) } d := jx.DecodeBytes(buf) - var response JettonInfo + var response JettonHolders if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5095,7 +5296,7 @@ func decodeGetJettonInfoResponse(resp *http.Response) (res *JettonInfo, _ error) return res, errors.Wrap(defRes, "error") } -func decodeGetJettonInfosByAddressesResponse(resp *http.Response) (res *Jettons, _ error) { +func decodeGetJettonInfoResponse(resp *http.Response) (res *JettonInfo, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5111,7 +5312,7 @@ func decodeGetJettonInfosByAddressesResponse(resp *http.Response) (res *Jettons, } d := jx.DecodeBytes(buf) - var response Jettons + var response JettonInfo if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5187,7 +5388,7 @@ func decodeGetJettonInfosByAddressesResponse(resp *http.Response) (res *Jettons, return res, errors.Wrap(defRes, "error") } -func decodeGetJettonTransferPayloadResponse(resp *http.Response) (res *JettonTransferPayload, _ error) { +func decodeGetJettonInfosByAddressesResponse(resp *http.Response) (res *Jettons, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5203,7 +5404,7 @@ func decodeGetJettonTransferPayloadResponse(resp *http.Response) (res *JettonTra } d := jx.DecodeBytes(buf) - var response JettonTransferPayload + var response Jettons if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5220,6 +5421,15 @@ func decodeGetJettonTransferPayloadResponse(resp *http.Response) (res *JettonTra } return res, err } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } return &response, nil default: return res, validate.InvalidContentType(ct) @@ -5270,7 +5480,7 @@ func decodeGetJettonTransferPayloadResponse(resp *http.Response) (res *JettonTra return res, errors.Wrap(defRes, "error") } -func decodeGetJettonsResponse(resp *http.Response) (res *Jettons, _ error) { +func decodeGetJettonTransferPayloadResponse(resp *http.Response) (res *JettonTransferPayload, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5286,7 +5496,7 @@ func decodeGetJettonsResponse(resp *http.Response) (res *Jettons, _ error) { } d := jx.DecodeBytes(buf) - var response Jettons + var response JettonTransferPayload if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5303,15 +5513,6 @@ func decodeGetJettonsResponse(resp *http.Response) (res *Jettons, _ error) { } return res, err } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } return &response, nil default: return res, validate.InvalidContentType(ct) @@ -5362,7 +5563,7 @@ func decodeGetJettonsResponse(resp *http.Response) (res *Jettons, _ error) { return res, errors.Wrap(defRes, "error") } -func decodeGetJettonsEventsResponse(resp *http.Response) (res *Event, _ error) { +func decodeGetJettonsResponse(resp *http.Response) (res *Jettons, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5378,7 +5579,7 @@ func decodeGetJettonsEventsResponse(resp *http.Response) (res *Event, _ error) { } d := jx.DecodeBytes(buf) - var response Event + var response Jettons if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5454,7 +5655,7 @@ func decodeGetJettonsEventsResponse(resp *http.Response) (res *Event, _ error) { return res, errors.Wrap(defRes, "error") } -func decodeGetMarketsRatesResponse(resp *http.Response) (res *GetMarketsRatesOK, _ error) { +func decodeGetJettonsEventsResponse(resp *http.Response) (res *Event, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5470,7 +5671,7 @@ func decodeGetMarketsRatesResponse(resp *http.Response) (res *GetMarketsRatesOK, } d := jx.DecodeBytes(buf) - var response GetMarketsRatesOK + var response Event if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5546,7 +5747,7 @@ func decodeGetMarketsRatesResponse(resp *http.Response) (res *GetMarketsRatesOK, return res, errors.Wrap(defRes, "error") } -func decodeGetMultisigAccountResponse(resp *http.Response) (res *Multisig, _ error) { +func decodeGetMarketsRatesResponse(resp *http.Response) (res *GetMarketsRatesOK, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5562,7 +5763,7 @@ func decodeGetMultisigAccountResponse(resp *http.Response) (res *Multisig, _ err } d := jx.DecodeBytes(buf) - var response Multisig + var response GetMarketsRatesOK if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5638,7 +5839,7 @@ func decodeGetMultisigAccountResponse(resp *http.Response) (res *Multisig, _ err return res, errors.Wrap(defRes, "error") } -func decodeGetNftCollectionResponse(resp *http.Response) (res *NftCollection, _ error) { +func decodeGetMultisigAccountResponse(resp *http.Response) (res *Multisig, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5654,7 +5855,7 @@ func decodeGetNftCollectionResponse(resp *http.Response) (res *NftCollection, _ } d := jx.DecodeBytes(buf) - var response NftCollection + var response Multisig if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5730,7 +5931,7 @@ func decodeGetNftCollectionResponse(resp *http.Response) (res *NftCollection, _ return res, errors.Wrap(defRes, "error") } -func decodeGetNftCollectionItemsByAddressesResponse(resp *http.Response) (res *NftCollections, _ error) { +func decodeGetMultisigOrderResponse(resp *http.Response) (res *MultisigOrder, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5746,7 +5947,7 @@ func decodeGetNftCollectionItemsByAddressesResponse(resp *http.Response) (res *N } d := jx.DecodeBytes(buf) - var response NftCollections + var response MultisigOrder if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5822,7 +6023,7 @@ func decodeGetNftCollectionItemsByAddressesResponse(resp *http.Response) (res *N return res, errors.Wrap(defRes, "error") } -func decodeGetNftCollectionsResponse(resp *http.Response) (res *NftCollections, _ error) { +func decodeGetNftCollectionResponse(resp *http.Response) (res *NftCollection, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5838,7 +6039,7 @@ func decodeGetNftCollectionsResponse(resp *http.Response) (res *NftCollections, } d := jx.DecodeBytes(buf) - var response NftCollections + var response NftCollection if err := func() error { if err := response.Decode(d); err != nil { return err @@ -5914,7 +6115,7 @@ func decodeGetNftCollectionsResponse(resp *http.Response) (res *NftCollections, return res, errors.Wrap(defRes, "error") } -func decodeGetNftHistoryByIDResponse(resp *http.Response) (res *AccountEvents, _ error) { +func decodeGetNftCollectionItemsByAddressesResponse(resp *http.Response) (res *NftCollections, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -5930,7 +6131,7 @@ func decodeGetNftHistoryByIDResponse(resp *http.Response) (res *AccountEvents, _ } d := jx.DecodeBytes(buf) - var response AccountEvents + var response NftCollections if err := func() error { if err := response.Decode(d); err != nil { return err @@ -6006,7 +6207,7 @@ func decodeGetNftHistoryByIDResponse(resp *http.Response) (res *AccountEvents, _ return res, errors.Wrap(defRes, "error") } -func decodeGetNftItemByAddressResponse(resp *http.Response) (res *NftItem, _ error) { +func decodeGetNftCollectionsResponse(resp *http.Response) (res *NftCollections, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -6022,7 +6223,7 @@ func decodeGetNftItemByAddressResponse(resp *http.Response) (res *NftItem, _ err } d := jx.DecodeBytes(buf) - var response NftItem + var response NftCollections if err := func() error { if err := response.Decode(d); err != nil { return err @@ -6098,7 +6299,7 @@ func decodeGetNftItemByAddressResponse(resp *http.Response) (res *NftItem, _ err return res, errors.Wrap(defRes, "error") } -func decodeGetNftItemsByAddressesResponse(resp *http.Response) (res *NftItems, _ error) { +func decodeGetNftHistoryByIDResponse(resp *http.Response) (res *AccountEvents, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -6114,7 +6315,7 @@ func decodeGetNftItemsByAddressesResponse(resp *http.Response) (res *NftItems, _ } d := jx.DecodeBytes(buf) - var response NftItems + var response AccountEvents if err := func() error { if err := response.Decode(d); err != nil { return err @@ -6190,7 +6391,7 @@ func decodeGetNftItemsByAddressesResponse(resp *http.Response) (res *NftItems, _ return res, errors.Wrap(defRes, "error") } -func decodeGetOpenapiJsonResponse(resp *http.Response) (res jx.Raw, _ error) { +func decodeGetNftItemByAddressResponse(resp *http.Response) (res *NftItem, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -6206,11 +6407,9 @@ func decodeGetOpenapiJsonResponse(resp *http.Response) (res jx.Raw, _ error) { } d := jx.DecodeBytes(buf) - var response jx.Raw + var response NftItem if err := func() error { - v, err := d.RawAppend(nil) - response = jx.Raw(v) - if err != nil { + if err := response.Decode(d); err != nil { return err } if err := d.Skip(); err != io.EOF { @@ -6225,7 +6424,16 @@ func decodeGetOpenapiJsonResponse(resp *http.Response) (res jx.Raw, _ error) { } return res, err } - return response, nil + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil default: return res, validate.InvalidContentType(ct) } @@ -6275,7 +6483,7 @@ func decodeGetOpenapiJsonResponse(resp *http.Response) (res jx.Raw, _ error) { return res, errors.Wrap(defRes, "error") } -func decodeGetOpenapiYmlResponse(resp *http.Response) (res GetOpenapiYmlOK, _ error) { +func decodeGetNftItemsByAddressesResponse(resp *http.Response) (res *NftItems, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -6284,10 +6492,187 @@ func decodeGetOpenapiYmlResponse(resp *http.Response) (res GetOpenapiYmlOK, _ er return res, errors.Wrap(err, "parse media type") } switch { - case ct == "application/yaml": - reader := resp.Body - b, err := io.ReadAll(reader) - if err != nil { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response NftItems + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + // Convenient error response. + defRes, err := func() (res *ErrorStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &ErrorStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, errors.Wrap(defRes, "error") +} + +func decodeGetOpenapiJsonResponse(resp *http.Response) (res jx.Raw, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + response = jx.Raw(v) + if err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + // Convenient error response. + defRes, err := func() (res *ErrorStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &ErrorStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, errors.Wrap(defRes, "error") +} + +func decodeGetOpenapiYmlResponse(resp *http.Response) (res GetOpenapiYmlOK, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/yaml": + reader := resp.Body + b, err := io.ReadAll(reader) + if err != nil { return res, err } @@ -6434,6 +6819,98 @@ func decodeGetOutMsgQueueSizesResponse(resp *http.Response) (res *GetOutMsgQueue return res, errors.Wrap(defRes, "error") } +func decodeGetPurchaseHistoryResponse(resp *http.Response) (res *AccountPurchases, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response AccountPurchases + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + // Convenient error response. + defRes, err := func() (res *ErrorStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &ErrorStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, errors.Wrap(defRes, "error") +} + func decodeGetRatesResponse(resp *http.Response) (res *GetRatesOK, _ error) { switch resp.StatusCode { case 200: @@ -8442,7 +8919,7 @@ func decodeGetTraceResponse(resp *http.Response) (res *Trace, _ error) { return res, errors.Wrap(defRes, "error") } -func decodeGetWalletsByPublicKeyResponse(resp *http.Response) (res *Accounts, _ error) { +func decodeGetWalletInfoResponse(resp *http.Response) (res *Wallet, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -8458,7 +8935,99 @@ func decodeGetWalletsByPublicKeyResponse(resp *http.Response) (res *Accounts, _ } d := jx.DecodeBytes(buf) - var response Accounts + var response Wallet + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + // Validate response. + if err := func() error { + if err := response.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return res, errors.Wrap(err, "validate") + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + // Convenient error response. + defRes, err := func() (res *ErrorStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Error + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &ErrorStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, errors.Wrap(defRes, "error") +} + +func decodeGetWalletsByPublicKeyResponse(resp *http.Response) (res *Wallets, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Wallets if err := func() error { if err := response.Decode(d); err != nil { return err diff --git a/oas_schemas_gen.go b/oas_schemas_gen.go index bdde2a4..1b9705f 100644 --- a/oas_schemas_gen.go +++ b/oas_schemas_gen.go @@ -314,7 +314,8 @@ type AccountEvent struct { // Event is not finished yet. Transactions still happening. InProgress bool `json:"in_progress"` // TODO. - Extra int64 `json:"extra"` + Extra int64 `json:"extra"` + Progress float32 `json:"progress"` } // GetEventID returns the value of EventID. @@ -357,6 +358,11 @@ func (s *AccountEvent) GetExtra() int64 { return s.Extra } +// GetProgress returns the value of Progress. +func (s *AccountEvent) GetProgress() float32 { + return s.Progress +} + // SetEventID sets the value of EventID. func (s *AccountEvent) SetEventID(val string) { s.EventID = val @@ -397,6 +403,11 @@ func (s *AccountEvent) SetExtra(val int64) { s.Extra = val } +// SetProgress sets the value of Progress. +func (s *AccountEvent) SetProgress(val float32) { + s.Progress = val +} + // Ref: #/components/schemas/AccountEvents type AccountEvents struct { Events []AccountEvent `json:"events"` @@ -449,6 +460,32 @@ func (s *AccountInfoByStateInit) SetAddress(val string) { s.Address = val } +// Ref: #/components/schemas/AccountPurchases +type AccountPurchases struct { + Purchases []Purchase `json:"purchases"` + NextFrom int64 `json:"next_from"` +} + +// GetPurchases returns the value of Purchases. +func (s *AccountPurchases) GetPurchases() []Purchase { + return s.Purchases +} + +// GetNextFrom returns the value of NextFrom. +func (s *AccountPurchases) GetNextFrom() int64 { + return s.NextFrom +} + +// SetPurchases sets the value of Purchases. +func (s *AccountPurchases) SetPurchases(val []Purchase) { + s.Purchases = val +} + +// SetNextFrom sets the value of NextFrom. +func (s *AccountPurchases) SetNextFrom(val int64) { + s.NextFrom = val +} + // Ref: #/components/schemas/AccountStaking type AccountStaking struct { Pools []AccountStakingInfo `json:"pools"` @@ -677,6 +714,8 @@ type Action struct { JettonSwap OptJettonSwapAction `json:"JettonSwap"` SmartContractExec OptSmartContractAction `json:"SmartContractExec"` DomainRenew OptDomainRenewAction `json:"DomainRenew"` + Purchase OptPurchaseAction `json:"Purchase"` + GasRelay OptGasRelayAction `json:"GasRelay"` SimplePreview ActionSimplePreview `json:"simple_preview"` BaseTransactions []string `json:"base_transactions"` } @@ -786,6 +825,16 @@ func (s *Action) GetDomainRenew() OptDomainRenewAction { return s.DomainRenew } +// GetPurchase returns the value of Purchase. +func (s *Action) GetPurchase() OptPurchaseAction { + return s.Purchase +} + +// GetGasRelay returns the value of GasRelay. +func (s *Action) GetGasRelay() OptGasRelayAction { + return s.GasRelay +} + // GetSimplePreview returns the value of SimplePreview. func (s *Action) GetSimplePreview() ActionSimplePreview { return s.SimplePreview @@ -901,6 +950,16 @@ func (s *Action) SetDomainRenew(val OptDomainRenewAction) { s.DomainRenew = val } +// SetPurchase sets the value of Purchase. +func (s *Action) SetPurchase(val OptPurchaseAction) { + s.Purchase = val +} + +// SetGasRelay sets the value of GasRelay. +func (s *Action) SetGasRelay(val OptGasRelayAction) { + s.GasRelay = val +} + // SetSimplePreview sets the value of SimplePreview. func (s *Action) SetSimplePreview(val ActionSimplePreview) { s.SimplePreview = val @@ -1111,11 +1170,11 @@ type ActionType string const ( ActionTypeTonTransfer ActionType = "TonTransfer" ActionTypeExtraCurrencyTransfer ActionType = "ExtraCurrencyTransfer" + ActionTypeContractDeploy ActionType = "ContractDeploy" ActionTypeJettonTransfer ActionType = "JettonTransfer" ActionTypeJettonBurn ActionType = "JettonBurn" ActionTypeJettonMint ActionType = "JettonMint" ActionTypeNftItemTransfer ActionType = "NftItemTransfer" - ActionTypeContractDeploy ActionType = "ContractDeploy" ActionTypeSubscribe ActionType = "Subscribe" ActionTypeUnSubscribe ActionType = "UnSubscribe" ActionTypeAuctionBid ActionType = "AuctionBid" @@ -1123,11 +1182,12 @@ const ( ActionTypeDepositStake ActionType = "DepositStake" ActionTypeWithdrawStake ActionType = "WithdrawStake" ActionTypeWithdrawStakeRequest ActionType = "WithdrawStakeRequest" + ActionTypeElectionsDepositStake ActionType = "ElectionsDepositStake" + ActionTypeElectionsRecoverStake ActionType = "ElectionsRecoverStake" ActionTypeJettonSwap ActionType = "JettonSwap" ActionTypeSmartContractExec ActionType = "SmartContractExec" - ActionTypeElectionsRecoverStake ActionType = "ElectionsRecoverStake" - ActionTypeElectionsDepositStake ActionType = "ElectionsDepositStake" ActionTypeDomainRenew ActionType = "DomainRenew" + ActionTypePurchase ActionType = "Purchase" ActionTypeUnknown ActionType = "Unknown" ) @@ -1136,11 +1196,11 @@ func (ActionType) AllValues() []ActionType { return []ActionType{ ActionTypeTonTransfer, ActionTypeExtraCurrencyTransfer, + ActionTypeContractDeploy, ActionTypeJettonTransfer, ActionTypeJettonBurn, ActionTypeJettonMint, ActionTypeNftItemTransfer, - ActionTypeContractDeploy, ActionTypeSubscribe, ActionTypeUnSubscribe, ActionTypeAuctionBid, @@ -1148,11 +1208,12 @@ func (ActionType) AllValues() []ActionType { ActionTypeDepositStake, ActionTypeWithdrawStake, ActionTypeWithdrawStakeRequest, + ActionTypeElectionsDepositStake, + ActionTypeElectionsRecoverStake, ActionTypeJettonSwap, ActionTypeSmartContractExec, - ActionTypeElectionsRecoverStake, - ActionTypeElectionsDepositStake, ActionTypeDomainRenew, + ActionTypePurchase, ActionTypeUnknown, } } @@ -1164,6 +1225,8 @@ func (s ActionType) MarshalText() ([]byte, error) { return []byte(s), nil case ActionTypeExtraCurrencyTransfer: return []byte(s), nil + case ActionTypeContractDeploy: + return []byte(s), nil case ActionTypeJettonTransfer: return []byte(s), nil case ActionTypeJettonBurn: @@ -1172,8 +1235,6 @@ func (s ActionType) MarshalText() ([]byte, error) { return []byte(s), nil case ActionTypeNftItemTransfer: return []byte(s), nil - case ActionTypeContractDeploy: - return []byte(s), nil case ActionTypeSubscribe: return []byte(s), nil case ActionTypeUnSubscribe: @@ -1188,16 +1249,18 @@ func (s ActionType) MarshalText() ([]byte, error) { return []byte(s), nil case ActionTypeWithdrawStakeRequest: return []byte(s), nil - case ActionTypeJettonSwap: - return []byte(s), nil - case ActionTypeSmartContractExec: + case ActionTypeElectionsDepositStake: return []byte(s), nil case ActionTypeElectionsRecoverStake: return []byte(s), nil - case ActionTypeElectionsDepositStake: + case ActionTypeJettonSwap: + return []byte(s), nil + case ActionTypeSmartContractExec: return []byte(s), nil case ActionTypeDomainRenew: return []byte(s), nil + case ActionTypePurchase: + return []byte(s), nil case ActionTypeUnknown: return []byte(s), nil default: @@ -1214,6 +1277,9 @@ func (s *ActionType) UnmarshalText(data []byte) error { case ActionTypeExtraCurrencyTransfer: *s = ActionTypeExtraCurrencyTransfer return nil + case ActionTypeContractDeploy: + *s = ActionTypeContractDeploy + return nil case ActionTypeJettonTransfer: *s = ActionTypeJettonTransfer return nil @@ -1226,9 +1292,6 @@ func (s *ActionType) UnmarshalText(data []byte) error { case ActionTypeNftItemTransfer: *s = ActionTypeNftItemTransfer return nil - case ActionTypeContractDeploy: - *s = ActionTypeContractDeploy - return nil case ActionTypeSubscribe: *s = ActionTypeSubscribe return nil @@ -1250,21 +1313,24 @@ func (s *ActionType) UnmarshalText(data []byte) error { case ActionTypeWithdrawStakeRequest: *s = ActionTypeWithdrawStakeRequest return nil + case ActionTypeElectionsDepositStake: + *s = ActionTypeElectionsDepositStake + return nil + case ActionTypeElectionsRecoverStake: + *s = ActionTypeElectionsRecoverStake + return nil case ActionTypeJettonSwap: *s = ActionTypeJettonSwap return nil case ActionTypeSmartContractExec: *s = ActionTypeSmartContractExec return nil - case ActionTypeElectionsRecoverStake: - *s = ActionTypeElectionsRecoverStake - return nil - case ActionTypeElectionsDepositStake: - *s = ActionTypeElectionsDepositStake - return nil case ActionTypeDomainRenew: *s = ActionTypeDomainRenew return nil + case ActionTypePurchase: + *s = ActionTypePurchase + return nil case ActionTypeUnknown: *s = ActionTypeUnknown return nil @@ -1608,6 +1674,7 @@ func (s *Auctions) SetTotal(val int64) { type BearerAuth struct { Token string + Roles []string } // GetToken returns the value of Token. @@ -1615,11 +1682,21 @@ func (s *BearerAuth) GetToken() string { return s.Token } +// GetRoles returns the value of Roles. +func (s *BearerAuth) GetRoles() []string { + return s.Roles +} + // SetToken sets the value of Token. func (s *BearerAuth) SetToken(val string) { s.Token = val } +// SetRoles sets the value of Roles. +func (s *BearerAuth) SetRoles(val []string) { + s.Roles = val +} + // Ref: #/components/schemas/BlockCurrencyCollection type BlockCurrencyCollection struct { Grams int64 `json:"grams"` @@ -3945,7 +4022,7 @@ func (s *BlockchainConfig9) SetMandatoryParams(val []int32) { type BlockchainRawAccount struct { Address string `json:"address"` Balance int64 `json:"balance"` - ExtraBalance OptBlockchainRawAccountExtraBalance `json:"extra_balance"` + ExtraBalance []ExtraCurrency `json:"extra_balance"` Code OptString `json:"code"` Data OptString `json:"data"` LastTransactionLt int64 `json:"last_transaction_lt"` @@ -3967,7 +4044,7 @@ func (s *BlockchainRawAccount) GetBalance() int64 { } // GetExtraBalance returns the value of ExtraBalance. -func (s *BlockchainRawAccount) GetExtraBalance() OptBlockchainRawAccountExtraBalance { +func (s *BlockchainRawAccount) GetExtraBalance() []ExtraCurrency { return s.ExtraBalance } @@ -4022,7 +4099,7 @@ func (s *BlockchainRawAccount) SetBalance(val int64) { } // SetExtraBalance sets the value of ExtraBalance. -func (s *BlockchainRawAccount) SetExtraBalance(val OptBlockchainRawAccountExtraBalance) { +func (s *BlockchainRawAccount) SetExtraBalance(val []ExtraCurrency) { s.ExtraBalance = val } @@ -4066,17 +4143,6 @@ func (s *BlockchainRawAccount) SetLibraries(val []BlockchainRawAccountLibrariesI s.Libraries = val } -type BlockchainRawAccountExtraBalance map[string]string - -func (s *BlockchainRawAccountExtraBalance) init() BlockchainRawAccountExtraBalance { - m := *s - if m == nil { - m = map[string]string{} - *s = m - } - return m -} - type BlockchainRawAccountLibrariesItem struct { Public bool `json:"public"` Root string `json:"root"` @@ -4151,31 +4217,7 @@ func (s *BouncePhaseType) UnmarshalText(data []byte) error { } } -// Ref: #/components/schemas/ChartPoints -type ChartPoints struct { - V0 int64 - V1 float64 -} - -// GetV0 returns the value of V0. -func (s *ChartPoints) GetV0() int64 { - return s.V0 -} - -// GetV1 returns the value of V1. -func (s *ChartPoints) GetV1() float64 { - return s.V1 -} - -// SetV0 sets the value of V0. -func (s *ChartPoints) SetV0(val int64) { - s.V0 = val -} - -// SetV1 sets the value of V1. -func (s *ChartPoints) SetV1(val float64) { - s.V1 = val -} +type ChartPoints [][]float64 // Ref: #/components/schemas/ComputePhase type ComputePhase struct { @@ -4469,6 +4511,62 @@ func (s *CreditPhase) SetCredit(val int64) { s.Credit = val } +// Ref: #/components/schemas/CurrencyType +type CurrencyType string + +const ( + CurrencyTypeNative CurrencyType = "native" + CurrencyTypeExtraCurrency CurrencyType = "extra_currency" + CurrencyTypeJetton CurrencyType = "jetton" + CurrencyTypeFiat CurrencyType = "fiat" +) + +// AllValues returns all CurrencyType values. +func (CurrencyType) AllValues() []CurrencyType { + return []CurrencyType{ + CurrencyTypeNative, + CurrencyTypeExtraCurrency, + CurrencyTypeJetton, + CurrencyTypeFiat, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s CurrencyType) MarshalText() ([]byte, error) { + switch s { + case CurrencyTypeNative: + return []byte(s), nil + case CurrencyTypeExtraCurrency: + return []byte(s), nil + case CurrencyTypeJetton: + return []byte(s), nil + case CurrencyTypeFiat: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *CurrencyType) UnmarshalText(data []byte) error { + switch CurrencyType(data) { + case CurrencyTypeNative: + *s = CurrencyTypeNative + return nil + case CurrencyTypeExtraCurrency: + *s = CurrencyTypeExtraCurrency + return nil + case CurrencyTypeJetton: + *s = CurrencyTypeJetton + return nil + case CurrencyTypeFiat: + *s = CurrencyTypeFiat + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + type DecodeMessageReq struct { Boc string `json:"boc"` } @@ -5119,6 +5217,46 @@ func (s *DomainRenewAction) SetRenewer(val AccountAddress) { s.Renewer = val } +type DownloadBlockchainBlockBocOK struct { + Data io.Reader +} + +// Read reads data from the Data reader. +// +// Kept to satisfy the io.Reader interface. +func (s DownloadBlockchainBlockBocOK) Read(p []byte) (n int, err error) { + if s.Data == nil { + return 0, io.EOF + } + return s.Data.Read(p) +} + +// DownloadBlockchainBlockBocOKHeaders wraps DownloadBlockchainBlockBocOK with response headers. +type DownloadBlockchainBlockBocOKHeaders struct { + ContentDisposition OptString + Response DownloadBlockchainBlockBocOK +} + +// GetContentDisposition returns the value of ContentDisposition. +func (s *DownloadBlockchainBlockBocOKHeaders) GetContentDisposition() OptString { + return s.ContentDisposition +} + +// GetResponse returns the value of Response. +func (s *DownloadBlockchainBlockBocOKHeaders) GetResponse() DownloadBlockchainBlockBocOK { + return s.Response +} + +// SetContentDisposition sets the value of ContentDisposition. +func (s *DownloadBlockchainBlockBocOKHeaders) SetContentDisposition(val OptString) { + s.ContentDisposition = val +} + +// SetResponse sets the value of Response. +func (s *DownloadBlockchainBlockBocOKHeaders) SetResponse(val DownloadBlockchainBlockBocOK) { + s.Response = val +} + // Ref: #/components/schemas/EcPreview type EcPreview struct { ID int32 `json:"id"` @@ -5399,7 +5537,8 @@ type Event struct { IsScam bool `json:"is_scam"` Lt int64 `json:"lt"` // Event is not finished yet. Transactions still happening. - InProgress bool `json:"in_progress"` + InProgress bool `json:"in_progress"` + Progress float32 `json:"progress"` } // GetEventID returns the value of EventID. @@ -5437,6 +5576,11 @@ func (s *Event) GetInProgress() bool { return s.InProgress } +// GetProgress returns the value of Progress. +func (s *Event) GetProgress() float32 { + return s.Progress +} + // SetEventID sets the value of EventID. func (s *Event) SetEventID(val string) { s.EventID = val @@ -5472,6 +5616,137 @@ func (s *Event) SetInProgress(val bool) { s.InProgress = val } +// SetProgress sets the value of Progress. +func (s *Event) SetProgress(val float32) { + s.Progress = val +} + +// Ref: #/components/schemas/ExecGetMethodArg +type ExecGetMethodArg struct { + Type ExecGetMethodArgType `json:"type"` + // String representation of the value according to the specified type. + Value string `json:"value"` +} + +// GetType returns the value of Type. +func (s *ExecGetMethodArg) GetType() ExecGetMethodArgType { + return s.Type +} + +// GetValue returns the value of Value. +func (s *ExecGetMethodArg) GetValue() string { + return s.Value +} + +// SetType sets the value of Type. +func (s *ExecGetMethodArg) SetType(val ExecGetMethodArgType) { + s.Type = val +} + +// SetValue sets the value of Value. +func (s *ExecGetMethodArg) SetValue(val string) { + s.Value = val +} + +// Data type of the argument value: +// - `nan`: Not-a-Number value +// - `null`: Null value +// - `tinyint`: Decimal integer (e.g., `100500`) +// - `int257`: 257-bit integer in hex format with 0x prefix (e.g., `0xfa01d78381ae32`) +// - `slice`: TON blockchain address (e.g., `0:6e731f2e...`) +// - `cell_boc_base64`: Base64-encoded cell BOC (Binary Object Code) (e.g., `te6ccgEBAQEAAgAAAA==`) +// - `slice_boc_hex`: Hex-encoded slice BOC (e.g., `b5ee9c72...`). +// Ref: #/components/schemas/ExecGetMethodArgType +type ExecGetMethodArgType string + +const ( + ExecGetMethodArgTypeNan ExecGetMethodArgType = "nan" + ExecGetMethodArgTypeNull ExecGetMethodArgType = "null" + ExecGetMethodArgTypeTinyint ExecGetMethodArgType = "tinyint" + ExecGetMethodArgTypeInt257 ExecGetMethodArgType = "int257" + ExecGetMethodArgTypeSlice ExecGetMethodArgType = "slice" + ExecGetMethodArgTypeCellBocBase64 ExecGetMethodArgType = "cell_boc_base64" + ExecGetMethodArgTypeSliceBocHex ExecGetMethodArgType = "slice_boc_hex" +) + +// AllValues returns all ExecGetMethodArgType values. +func (ExecGetMethodArgType) AllValues() []ExecGetMethodArgType { + return []ExecGetMethodArgType{ + ExecGetMethodArgTypeNan, + ExecGetMethodArgTypeNull, + ExecGetMethodArgTypeTinyint, + ExecGetMethodArgTypeInt257, + ExecGetMethodArgTypeSlice, + ExecGetMethodArgTypeCellBocBase64, + ExecGetMethodArgTypeSliceBocHex, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s ExecGetMethodArgType) MarshalText() ([]byte, error) { + switch s { + case ExecGetMethodArgTypeNan: + return []byte(s), nil + case ExecGetMethodArgTypeNull: + return []byte(s), nil + case ExecGetMethodArgTypeTinyint: + return []byte(s), nil + case ExecGetMethodArgTypeInt257: + return []byte(s), nil + case ExecGetMethodArgTypeSlice: + return []byte(s), nil + case ExecGetMethodArgTypeCellBocBase64: + return []byte(s), nil + case ExecGetMethodArgTypeSliceBocHex: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *ExecGetMethodArgType) UnmarshalText(data []byte) error { + switch ExecGetMethodArgType(data) { + case ExecGetMethodArgTypeNan: + *s = ExecGetMethodArgTypeNan + return nil + case ExecGetMethodArgTypeNull: + *s = ExecGetMethodArgTypeNull + return nil + case ExecGetMethodArgTypeTinyint: + *s = ExecGetMethodArgTypeTinyint + return nil + case ExecGetMethodArgTypeInt257: + *s = ExecGetMethodArgTypeInt257 + return nil + case ExecGetMethodArgTypeSlice: + *s = ExecGetMethodArgTypeSlice + return nil + case ExecGetMethodArgTypeCellBocBase64: + *s = ExecGetMethodArgTypeCellBocBase64 + return nil + case ExecGetMethodArgTypeSliceBocHex: + *s = ExecGetMethodArgTypeSliceBocHex + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +type ExecGetMethodWithBodyForBlockchainAccountReq struct { + Args []ExecGetMethodArg `json:"args"` +} + +// GetArgs returns the value of Args. +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) GetArgs() []ExecGetMethodArg { + return s.Args +} + +// SetArgs sets the value of Args. +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) SetArgs(val []ExecGetMethodArg) { + s.Args = val +} + // Ref: #/components/schemas/ExtraCurrency type ExtraCurrency struct { Amount string `json:"amount"` @@ -5734,6 +6009,43 @@ func (s *GasLimitPrices) SetDeleteDueLimit(val int64) { s.DeleteDueLimit = val } +// Ref: #/components/schemas/GasRelayAction +type GasRelayAction struct { + Amount int64 `json:"amount"` + Relayer AccountAddress `json:"relayer"` + Target AccountAddress `json:"target"` +} + +// GetAmount returns the value of Amount. +func (s *GasRelayAction) GetAmount() int64 { + return s.Amount +} + +// GetRelayer returns the value of Relayer. +func (s *GasRelayAction) GetRelayer() AccountAddress { + return s.Relayer +} + +// GetTarget returns the value of Target. +func (s *GasRelayAction) GetTarget() AccountAddress { + return s.Target +} + +// SetAmount sets the value of Amount. +func (s *GasRelayAction) SetAmount(val int64) { + s.Amount = val +} + +// SetRelayer sets the value of Relayer. +func (s *GasRelayAction) SetRelayer(val AccountAddress) { + s.Relayer = val +} + +// SetTarget sets the value of Target. +func (s *GasRelayAction) SetTarget(val AccountAddress) { + s.Target = val +} + // Ref: #/components/schemas/GaslessConfig type GaslessConfig struct { // Sending excess to this address decreases the commission of a gasless transfer. @@ -6025,16 +6337,16 @@ func (s *GetBlockchainAccountTransactionsSortOrder) UnmarshalText(data []byte) e } type GetChartRatesOK struct { - Points []ChartPoints `json:"points"` + Points ChartPoints `json:"points"` } // GetPoints returns the value of Points. -func (s *GetChartRatesOK) GetPoints() []ChartPoints { +func (s *GetChartRatesOK) GetPoints() ChartPoints { return s.Points } // SetPoints sets the value of Points. -func (s *GetChartRatesOK) SetPoints(val []ChartPoints) { +func (s *GetChartRatesOK) SetPoints(val ChartPoints) { s.Points = val } @@ -7807,36 +8119,235 @@ func (s *JettonMintAction) SetJetton(val JettonPreview) { s.Jetton = val } -// Ref: #/components/schemas/JettonPreview -type JettonPreview struct { - Address string `json:"address"` - Name string `json:"name"` - Symbol string `json:"symbol"` - Decimals int `json:"decimals"` - Image string `json:"image"` - Verification JettonVerificationType `json:"verification"` - CustomPayloadAPIURI OptString `json:"custom_payload_api_uri"` - Score int32 `json:"score"` +// Ref: #/components/schemas/JettonOperation +type JettonOperation struct { + Operation JettonOperationOperation `json:"operation"` + Utime int64 `json:"utime"` + Lt int64 `json:"lt"` + TransactionHash string `json:"transaction_hash"` + Source OptAccountAddress `json:"source"` + Destination OptAccountAddress `json:"destination"` + Amount string `json:"amount"` + Jetton JettonPreview `json:"jetton"` + TraceID string `json:"trace_id"` + QueryID string `json:"query_id"` + Payload jx.Raw `json:"payload"` } -// GetAddress returns the value of Address. -func (s *JettonPreview) GetAddress() string { - return s.Address +// GetOperation returns the value of Operation. +func (s *JettonOperation) GetOperation() JettonOperationOperation { + return s.Operation } -// GetName returns the value of Name. -func (s *JettonPreview) GetName() string { - return s.Name +// GetUtime returns the value of Utime. +func (s *JettonOperation) GetUtime() int64 { + return s.Utime } -// GetSymbol returns the value of Symbol. -func (s *JettonPreview) GetSymbol() string { - return s.Symbol +// GetLt returns the value of Lt. +func (s *JettonOperation) GetLt() int64 { + return s.Lt } -// GetDecimals returns the value of Decimals. -func (s *JettonPreview) GetDecimals() int { - return s.Decimals +// GetTransactionHash returns the value of TransactionHash. +func (s *JettonOperation) GetTransactionHash() string { + return s.TransactionHash +} + +// GetSource returns the value of Source. +func (s *JettonOperation) GetSource() OptAccountAddress { + return s.Source +} + +// GetDestination returns the value of Destination. +func (s *JettonOperation) GetDestination() OptAccountAddress { + return s.Destination +} + +// GetAmount returns the value of Amount. +func (s *JettonOperation) GetAmount() string { + return s.Amount +} + +// GetJetton returns the value of Jetton. +func (s *JettonOperation) GetJetton() JettonPreview { + return s.Jetton +} + +// GetTraceID returns the value of TraceID. +func (s *JettonOperation) GetTraceID() string { + return s.TraceID +} + +// GetQueryID returns the value of QueryID. +func (s *JettonOperation) GetQueryID() string { + return s.QueryID +} + +// GetPayload returns the value of Payload. +func (s *JettonOperation) GetPayload() jx.Raw { + return s.Payload +} + +// SetOperation sets the value of Operation. +func (s *JettonOperation) SetOperation(val JettonOperationOperation) { + s.Operation = val +} + +// SetUtime sets the value of Utime. +func (s *JettonOperation) SetUtime(val int64) { + s.Utime = val +} + +// SetLt sets the value of Lt. +func (s *JettonOperation) SetLt(val int64) { + s.Lt = val +} + +// SetTransactionHash sets the value of TransactionHash. +func (s *JettonOperation) SetTransactionHash(val string) { + s.TransactionHash = val +} + +// SetSource sets the value of Source. +func (s *JettonOperation) SetSource(val OptAccountAddress) { + s.Source = val +} + +// SetDestination sets the value of Destination. +func (s *JettonOperation) SetDestination(val OptAccountAddress) { + s.Destination = val +} + +// SetAmount sets the value of Amount. +func (s *JettonOperation) SetAmount(val string) { + s.Amount = val +} + +// SetJetton sets the value of Jetton. +func (s *JettonOperation) SetJetton(val JettonPreview) { + s.Jetton = val +} + +// SetTraceID sets the value of TraceID. +func (s *JettonOperation) SetTraceID(val string) { + s.TraceID = val +} + +// SetQueryID sets the value of QueryID. +func (s *JettonOperation) SetQueryID(val string) { + s.QueryID = val +} + +// SetPayload sets the value of Payload. +func (s *JettonOperation) SetPayload(val jx.Raw) { + s.Payload = val +} + +type JettonOperationOperation string + +const ( + JettonOperationOperationTransfer JettonOperationOperation = "transfer" + JettonOperationOperationMint JettonOperationOperation = "mint" + JettonOperationOperationBurn JettonOperationOperation = "burn" +) + +// AllValues returns all JettonOperationOperation values. +func (JettonOperationOperation) AllValues() []JettonOperationOperation { + return []JettonOperationOperation{ + JettonOperationOperationTransfer, + JettonOperationOperationMint, + JettonOperationOperationBurn, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s JettonOperationOperation) MarshalText() ([]byte, error) { + switch s { + case JettonOperationOperationTransfer: + return []byte(s), nil + case JettonOperationOperationMint: + return []byte(s), nil + case JettonOperationOperationBurn: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *JettonOperationOperation) UnmarshalText(data []byte) error { + switch JettonOperationOperation(data) { + case JettonOperationOperationTransfer: + *s = JettonOperationOperationTransfer + return nil + case JettonOperationOperationMint: + *s = JettonOperationOperationMint + return nil + case JettonOperationOperationBurn: + *s = JettonOperationOperationBurn + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + +// Ref: #/components/schemas/JettonOperations +type JettonOperations struct { + Operations []JettonOperation `json:"operations"` + NextFrom OptInt64 `json:"next_from"` +} + +// GetOperations returns the value of Operations. +func (s *JettonOperations) GetOperations() []JettonOperation { + return s.Operations +} + +// GetNextFrom returns the value of NextFrom. +func (s *JettonOperations) GetNextFrom() OptInt64 { + return s.NextFrom +} + +// SetOperations sets the value of Operations. +func (s *JettonOperations) SetOperations(val []JettonOperation) { + s.Operations = val +} + +// SetNextFrom sets the value of NextFrom. +func (s *JettonOperations) SetNextFrom(val OptInt64) { + s.NextFrom = val +} + +// Ref: #/components/schemas/JettonPreview +type JettonPreview struct { + Address string `json:"address"` + Name string `json:"name"` + Symbol string `json:"symbol"` + Decimals int `json:"decimals"` + Image string `json:"image"` + Verification JettonVerificationType `json:"verification"` + CustomPayloadAPIURI OptString `json:"custom_payload_api_uri"` + Score int32 `json:"score"` +} + +// GetAddress returns the value of Address. +func (s *JettonPreview) GetAddress() string { + return s.Address +} + +// GetName returns the value of Name. +func (s *JettonPreview) GetName() string { + return s.Name +} + +// GetSymbol returns the value of Symbol. +func (s *JettonPreview) GetSymbol() string { + return s.Symbol +} + +// GetDecimals returns the value of Decimals. +func (s *JettonPreview) GetDecimals() int { + return s.Decimals } // GetImage returns the value of Image. @@ -8634,6 +9145,34 @@ func (s *MessageMsgType) UnmarshalText(data []byte) error { } } +// Ref: #/components/schemas/Metadata +type Metadata struct { + // Hex encoded bytes. + EncryptedBinary string `json:"encrypted_binary"` + // Hex encoded bytes. + DecryptionKey OptString `json:"decryption_key"` +} + +// GetEncryptedBinary returns the value of EncryptedBinary. +func (s *Metadata) GetEncryptedBinary() string { + return s.EncryptedBinary +} + +// GetDecryptionKey returns the value of DecryptionKey. +func (s *Metadata) GetDecryptionKey() OptString { + return s.DecryptionKey +} + +// SetEncryptedBinary sets the value of EncryptedBinary. +func (s *Metadata) SetEncryptedBinary(val string) { + s.EncryptedBinary = val +} + +// SetDecryptionKey sets the value of DecryptionKey. +func (s *Metadata) SetDecryptionKey(val OptString) { + s.DecryptionKey = val +} + // Ref: #/components/schemas/Method type Method struct { ID int64 `json:"id"` @@ -8976,16 +9515,18 @@ func (s *Multisig) SetOrders(val []MultisigOrder) { // Ref: #/components/schemas/MultisigOrder type MultisigOrder struct { - Address string `json:"address"` - OrderSeqno int64 `json:"order_seqno"` - Threshold int32 `json:"threshold"` - SentForExecution bool `json:"sent_for_execution"` - Signers []string `json:"signers"` - ApprovalsNum int32 `json:"approvals_num"` - ExpirationDate int64 `json:"expiration_date"` - Risk Risk `json:"risk"` - CreationDate int64 `json:"creation_date"` - SignedBy []string `json:"signed_by"` + Address string `json:"address"` + OrderSeqno int64 `json:"order_seqno"` + Threshold int32 `json:"threshold"` + SentForExecution bool `json:"sent_for_execution"` + Signers []string `json:"signers"` + ApprovalsNum int32 `json:"approvals_num"` + ExpirationDate int64 `json:"expiration_date"` + Risk Risk `json:"risk"` + CreationDate int64 `json:"creation_date"` + SignedBy []string `json:"signed_by"` + MultisigAddress string `json:"multisig_address"` + ChangingParameters OptMultisigOrderChangingParameters `json:"changing_parameters"` } // GetAddress returns the value of Address. @@ -9038,6 +9579,16 @@ func (s *MultisigOrder) GetSignedBy() []string { return s.SignedBy } +// GetMultisigAddress returns the value of MultisigAddress. +func (s *MultisigOrder) GetMultisigAddress() string { + return s.MultisigAddress +} + +// GetChangingParameters returns the value of ChangingParameters. +func (s *MultisigOrder) GetChangingParameters() OptMultisigOrderChangingParameters { + return s.ChangingParameters +} + // SetAddress sets the value of Address. func (s *MultisigOrder) SetAddress(val string) { s.Address = val @@ -9088,6 +9639,52 @@ func (s *MultisigOrder) SetSignedBy(val []string) { s.SignedBy = val } +// SetMultisigAddress sets the value of MultisigAddress. +func (s *MultisigOrder) SetMultisigAddress(val string) { + s.MultisigAddress = val +} + +// SetChangingParameters sets the value of ChangingParameters. +func (s *MultisigOrder) SetChangingParameters(val OptMultisigOrderChangingParameters) { + s.ChangingParameters = val +} + +type MultisigOrderChangingParameters struct { + Threshold int32 `json:"threshold"` + Signers []string `json:"signers"` + Proposers []string `json:"proposers"` +} + +// GetThreshold returns the value of Threshold. +func (s *MultisigOrderChangingParameters) GetThreshold() int32 { + return s.Threshold +} + +// GetSigners returns the value of Signers. +func (s *MultisigOrderChangingParameters) GetSigners() []string { + return s.Signers +} + +// GetProposers returns the value of Proposers. +func (s *MultisigOrderChangingParameters) GetProposers() []string { + return s.Proposers +} + +// SetThreshold sets the value of Threshold. +func (s *MultisigOrderChangingParameters) SetThreshold(val int32) { + s.Threshold = val +} + +// SetSigners sets the value of Signers. +func (s *MultisigOrderChangingParameters) SetSigners(val []string) { + s.Signers = val +} + +// SetProposers sets the value of Proposers. +func (s *MultisigOrderChangingParameters) SetProposers(val []string) { + s.Proposers = val +} + // Ref: #/components/schemas/Multisigs type Multisigs struct { Multisigs []Multisig `json:"multisigs"` @@ -9266,6 +9863,8 @@ type NftItem struct { Previews []ImagePreview `json:"previews"` DNS OptString `json:"dns"` // Please use trust field. + // + // Deprecated: schema marks this property as deprecated. ApprovedBy NftApprovedBy `json:"approved_by"` IncludeCnft OptBool `json:"include_cnft"` Trust TrustType `json:"trust"` @@ -9535,6 +10134,113 @@ func (s *NftItems) SetNftItems(val []NftItem) { s.NftItems = val } +// Ref: #/components/schemas/NftOperation +type NftOperation struct { + Operation string `json:"operation"` + Utime int64 `json:"utime"` + Lt int64 `json:"lt"` + TransactionHash string `json:"transaction_hash"` + Source OptAccountAddress `json:"source"` + Destination OptAccountAddress `json:"destination"` + Item NftItem `json:"item"` +} + +// GetOperation returns the value of Operation. +func (s *NftOperation) GetOperation() string { + return s.Operation +} + +// GetUtime returns the value of Utime. +func (s *NftOperation) GetUtime() int64 { + return s.Utime +} + +// GetLt returns the value of Lt. +func (s *NftOperation) GetLt() int64 { + return s.Lt +} + +// GetTransactionHash returns the value of TransactionHash. +func (s *NftOperation) GetTransactionHash() string { + return s.TransactionHash +} + +// GetSource returns the value of Source. +func (s *NftOperation) GetSource() OptAccountAddress { + return s.Source +} + +// GetDestination returns the value of Destination. +func (s *NftOperation) GetDestination() OptAccountAddress { + return s.Destination +} + +// GetItem returns the value of Item. +func (s *NftOperation) GetItem() NftItem { + return s.Item +} + +// SetOperation sets the value of Operation. +func (s *NftOperation) SetOperation(val string) { + s.Operation = val +} + +// SetUtime sets the value of Utime. +func (s *NftOperation) SetUtime(val int64) { + s.Utime = val +} + +// SetLt sets the value of Lt. +func (s *NftOperation) SetLt(val int64) { + s.Lt = val +} + +// SetTransactionHash sets the value of TransactionHash. +func (s *NftOperation) SetTransactionHash(val string) { + s.TransactionHash = val +} + +// SetSource sets the value of Source. +func (s *NftOperation) SetSource(val OptAccountAddress) { + s.Source = val +} + +// SetDestination sets the value of Destination. +func (s *NftOperation) SetDestination(val OptAccountAddress) { + s.Destination = val +} + +// SetItem sets the value of Item. +func (s *NftOperation) SetItem(val NftItem) { + s.Item = val +} + +// Ref: #/components/schemas/NftOperations +type NftOperations struct { + Operations []NftOperation `json:"operations"` + NextFrom OptInt64 `json:"next_from"` +} + +// GetOperations returns the value of Operations. +func (s *NftOperations) GetOperations() []NftOperation { + return s.Operations +} + +// GetNextFrom returns the value of NextFrom. +func (s *NftOperations) GetNextFrom() OptInt64 { + return s.NextFrom +} + +// SetOperations sets the value of Operations. +func (s *NftOperations) SetOperations(val []NftOperation) { + s.Operations = val +} + +// SetNextFrom sets the value of NextFrom. +func (s *NftOperations) SetNextFrom(val OptInt64) { + s.NextFrom = val +} + // Ref: #/components/schemas/NftPurchaseAction type NftPurchaseAction struct { AuctionType NftPurchaseActionAuctionType `json:"auction_type"` @@ -11351,68 +12057,22 @@ func (o OptBlockchainConfig9) Or(d BlockchainConfig9) BlockchainConfig9 { return d } -// NewOptBlockchainRawAccountExtraBalance returns new OptBlockchainRawAccountExtraBalance with value set to v. -func NewOptBlockchainRawAccountExtraBalance(v BlockchainRawAccountExtraBalance) OptBlockchainRawAccountExtraBalance { - return OptBlockchainRawAccountExtraBalance{ +// NewOptBool returns new OptBool with value set to v. +func NewOptBool(v bool) OptBool { + return OptBool{ Value: v, Set: true, } } -// OptBlockchainRawAccountExtraBalance is optional BlockchainRawAccountExtraBalance. -type OptBlockchainRawAccountExtraBalance struct { - Value BlockchainRawAccountExtraBalance +// OptBool is optional bool. +type OptBool struct { + Value bool Set bool } -// IsSet returns true if OptBlockchainRawAccountExtraBalance was set. -func (o OptBlockchainRawAccountExtraBalance) IsSet() bool { return o.Set } - -// Reset unsets value. -func (o *OptBlockchainRawAccountExtraBalance) Reset() { - var v BlockchainRawAccountExtraBalance - o.Value = v - o.Set = false -} - -// SetTo sets value to v. -func (o *OptBlockchainRawAccountExtraBalance) SetTo(v BlockchainRawAccountExtraBalance) { - o.Set = true - o.Value = v -} - -// Get returns value and boolean that denotes whether value was set. -func (o OptBlockchainRawAccountExtraBalance) Get() (v BlockchainRawAccountExtraBalance, ok bool) { - if !o.Set { - return v, false - } - return o.Value, true -} - -// Or returns value if set, or given parameter if does not. -func (o OptBlockchainRawAccountExtraBalance) Or(d BlockchainRawAccountExtraBalance) BlockchainRawAccountExtraBalance { - if v, ok := o.Get(); ok { - return v - } - return d -} - -// NewOptBool returns new OptBool with value set to v. -func NewOptBool(v bool) OptBool { - return OptBool{ - Value: v, - Set: true, - } -} - -// OptBool is optional bool. -type OptBool struct { - Value bool - Set bool -} - -// IsSet returns true if OptBool was set. -func (o OptBool) IsSet() bool { return o.Set } +// IsSet returns true if OptBool was set. +func (o OptBool) IsSet() bool { return o.Set } // Reset unsets value. func (o *OptBool) Reset() { @@ -12133,6 +12793,52 @@ func (o OptEncryptedComment) Or(d EncryptedComment) EncryptedComment { return d } +// NewOptExecGetMethodWithBodyForBlockchainAccountReq returns new OptExecGetMethodWithBodyForBlockchainAccountReq with value set to v. +func NewOptExecGetMethodWithBodyForBlockchainAccountReq(v ExecGetMethodWithBodyForBlockchainAccountReq) OptExecGetMethodWithBodyForBlockchainAccountReq { + return OptExecGetMethodWithBodyForBlockchainAccountReq{ + Value: v, + Set: true, + } +} + +// OptExecGetMethodWithBodyForBlockchainAccountReq is optional ExecGetMethodWithBodyForBlockchainAccountReq. +type OptExecGetMethodWithBodyForBlockchainAccountReq struct { + Value ExecGetMethodWithBodyForBlockchainAccountReq + Set bool +} + +// IsSet returns true if OptExecGetMethodWithBodyForBlockchainAccountReq was set. +func (o OptExecGetMethodWithBodyForBlockchainAccountReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptExecGetMethodWithBodyForBlockchainAccountReq) Reset() { + var v ExecGetMethodWithBodyForBlockchainAccountReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptExecGetMethodWithBodyForBlockchainAccountReq) SetTo(v ExecGetMethodWithBodyForBlockchainAccountReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptExecGetMethodWithBodyForBlockchainAccountReq) Get() (v ExecGetMethodWithBodyForBlockchainAccountReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptExecGetMethodWithBodyForBlockchainAccountReq) Or(d ExecGetMethodWithBodyForBlockchainAccountReq) ExecGetMethodWithBodyForBlockchainAccountReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptExtraCurrencyTransferAction returns new OptExtraCurrencyTransferAction with value set to v. func NewOptExtraCurrencyTransferAction(v ExtraCurrencyTransferAction) OptExtraCurrencyTransferAction { return OptExtraCurrencyTransferAction{ @@ -12179,6 +12885,52 @@ func (o OptExtraCurrencyTransferAction) Or(d ExtraCurrencyTransferAction) ExtraC return d } +// NewOptGasRelayAction returns new OptGasRelayAction with value set to v. +func NewOptGasRelayAction(v GasRelayAction) OptGasRelayAction { + return OptGasRelayAction{ + Value: v, + Set: true, + } +} + +// OptGasRelayAction is optional GasRelayAction. +type OptGasRelayAction struct { + Value GasRelayAction + Set bool +} + +// IsSet returns true if OptGasRelayAction was set. +func (o OptGasRelayAction) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptGasRelayAction) Reset() { + var v GasRelayAction + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptGasRelayAction) SetTo(v GasRelayAction) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptGasRelayAction) Get() (v GasRelayAction, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptGasRelayAction) Or(d GasRelayAction) GasRelayAction { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptGetAccountsReq returns new OptGetAccountsReq with value set to v. func NewOptGetAccountsReq(v GetAccountsReq) OptGetAccountsReq { return OptGetAccountsReq{ @@ -12961,6 +13713,52 @@ func (o OptMessageConsequences) Or(d MessageConsequences) MessageConsequences { return d } +// NewOptMultisigOrderChangingParameters returns new OptMultisigOrderChangingParameters with value set to v. +func NewOptMultisigOrderChangingParameters(v MultisigOrderChangingParameters) OptMultisigOrderChangingParameters { + return OptMultisigOrderChangingParameters{ + Value: v, + Set: true, + } +} + +// OptMultisigOrderChangingParameters is optional MultisigOrderChangingParameters. +type OptMultisigOrderChangingParameters struct { + Value MultisigOrderChangingParameters + Set bool +} + +// IsSet returns true if OptMultisigOrderChangingParameters was set. +func (o OptMultisigOrderChangingParameters) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptMultisigOrderChangingParameters) Reset() { + var v MultisigOrderChangingParameters + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptMultisigOrderChangingParameters) SetTo(v MultisigOrderChangingParameters) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptMultisigOrderChangingParameters) Get() (v MultisigOrderChangingParameters, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptMultisigOrderChangingParameters) Or(d MultisigOrderChangingParameters) MultisigOrderChangingParameters { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptNftCollectionMetadata returns new OptNftCollectionMetadata with value set to v. func NewOptNftCollectionMetadata(v NftCollectionMetadata) OptNftCollectionMetadata { return OptNftCollectionMetadata{ @@ -13191,6 +13989,52 @@ func (o OptNftPurchaseAction) Or(d NftPurchaseAction) NftPurchaseAction { return d } +// NewOptPurchaseAction returns new OptPurchaseAction with value set to v. +func NewOptPurchaseAction(v PurchaseAction) OptPurchaseAction { + return OptPurchaseAction{ + Value: v, + Set: true, + } +} + +// OptPurchaseAction is optional PurchaseAction. +type OptPurchaseAction struct { + Value PurchaseAction + Set bool +} + +// IsSet returns true if OptPurchaseAction was set. +func (o OptPurchaseAction) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptPurchaseAction) Reset() { + var v PurchaseAction + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptPurchaseAction) SetTo(v PurchaseAction) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptPurchaseAction) Get() (v PurchaseAction, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptPurchaseAction) Or(d PurchaseAction) PurchaseAction { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptRefund returns new OptRefund with value set to v. func NewOptRefund(v Refund) OptRefund { return OptRefund{ @@ -14462,8 +15306,18 @@ func (s *PoolInfo) SetCycleLength(val OptInt64) { // Ref: #/components/schemas/Price type Price struct { - Value string `json:"value"` - TokenName string `json:"token_name"` + CurrencyType CurrencyType `json:"currency_type"` + Value string `json:"value"` + Decimals int `json:"decimals"` + TokenName string `json:"token_name"` + Verification TrustType `json:"verification"` + Image string `json:"image"` + Jetton OptString `json:"jetton"` +} + +// GetCurrencyType returns the value of CurrencyType. +func (s *Price) GetCurrencyType() CurrencyType { + return s.CurrencyType } // GetValue returns the value of Value. @@ -14471,86 +15325,282 @@ func (s *Price) GetValue() string { return s.Value } +// GetDecimals returns the value of Decimals. +func (s *Price) GetDecimals() int { + return s.Decimals +} + // GetTokenName returns the value of TokenName. func (s *Price) GetTokenName() string { return s.TokenName } +// GetVerification returns the value of Verification. +func (s *Price) GetVerification() TrustType { + return s.Verification +} + +// GetImage returns the value of Image. +func (s *Price) GetImage() string { + return s.Image +} + +// GetJetton returns the value of Jetton. +func (s *Price) GetJetton() OptString { + return s.Jetton +} + +// SetCurrencyType sets the value of CurrencyType. +func (s *Price) SetCurrencyType(val CurrencyType) { + s.CurrencyType = val +} + // SetValue sets the value of Value. func (s *Price) SetValue(val string) { s.Value = val } +// SetDecimals sets the value of Decimals. +func (s *Price) SetDecimals(val int) { + s.Decimals = val +} + // SetTokenName sets the value of TokenName. func (s *Price) SetTokenName(val string) { s.TokenName = val } -// Ref: #/components/schemas/RawBlockchainConfig -type RawBlockchainConfig struct { - Config RawBlockchainConfigConfig `json:"config"` -} - -// GetConfig returns the value of Config. -func (s *RawBlockchainConfig) GetConfig() RawBlockchainConfigConfig { - return s.Config +// SetVerification sets the value of Verification. +func (s *Price) SetVerification(val TrustType) { + s.Verification = val } -// SetConfig sets the value of Config. -func (s *RawBlockchainConfig) SetConfig(val RawBlockchainConfigConfig) { - s.Config = val +// SetImage sets the value of Image. +func (s *Price) SetImage(val string) { + s.Image = val } -type RawBlockchainConfigConfig map[string]jx.Raw - -func (s *RawBlockchainConfigConfig) init() RawBlockchainConfigConfig { - m := *s - if m == nil { - m = map[string]jx.Raw{} - *s = m - } - return m +// SetJetton sets the value of Jetton. +func (s *Price) SetJetton(val OptString) { + s.Jetton = val } -// Ref: #/components/schemas/ReducedBlock -type ReducedBlock struct { - WorkchainID int32 `json:"workchain_id"` - Shard string `json:"shard"` - Seqno int32 `json:"seqno"` - MasterRef OptString `json:"master_ref"` - TxQuantity int `json:"tx_quantity"` - Utime int64 `json:"utime"` - ShardsBlocks []string `json:"shards_blocks"` - Parent []string `json:"parent"` +// Ref: #/components/schemas/Purchase +type Purchase struct { + EventID string `json:"event_id"` + InvoiceID string `json:"invoice_id"` + Source AccountAddress `json:"source"` + Destination AccountAddress `json:"destination"` + Lt int64 `json:"lt"` + Utime int64 `json:"utime"` + Amount Price `json:"amount"` + Metadata Metadata `json:"metadata"` } -// GetWorkchainID returns the value of WorkchainID. -func (s *ReducedBlock) GetWorkchainID() int32 { - return s.WorkchainID +// GetEventID returns the value of EventID. +func (s *Purchase) GetEventID() string { + return s.EventID } -// GetShard returns the value of Shard. -func (s *ReducedBlock) GetShard() string { - return s.Shard +// GetInvoiceID returns the value of InvoiceID. +func (s *Purchase) GetInvoiceID() string { + return s.InvoiceID } -// GetSeqno returns the value of Seqno. -func (s *ReducedBlock) GetSeqno() int32 { - return s.Seqno +// GetSource returns the value of Source. +func (s *Purchase) GetSource() AccountAddress { + return s.Source } -// GetMasterRef returns the value of MasterRef. -func (s *ReducedBlock) GetMasterRef() OptString { - return s.MasterRef +// GetDestination returns the value of Destination. +func (s *Purchase) GetDestination() AccountAddress { + return s.Destination } -// GetTxQuantity returns the value of TxQuantity. -func (s *ReducedBlock) GetTxQuantity() int { - return s.TxQuantity +// GetLt returns the value of Lt. +func (s *Purchase) GetLt() int64 { + return s.Lt } // GetUtime returns the value of Utime. -func (s *ReducedBlock) GetUtime() int64 { +func (s *Purchase) GetUtime() int64 { + return s.Utime +} + +// GetAmount returns the value of Amount. +func (s *Purchase) GetAmount() Price { + return s.Amount +} + +// GetMetadata returns the value of Metadata. +func (s *Purchase) GetMetadata() Metadata { + return s.Metadata +} + +// SetEventID sets the value of EventID. +func (s *Purchase) SetEventID(val string) { + s.EventID = val +} + +// SetInvoiceID sets the value of InvoiceID. +func (s *Purchase) SetInvoiceID(val string) { + s.InvoiceID = val +} + +// SetSource sets the value of Source. +func (s *Purchase) SetSource(val AccountAddress) { + s.Source = val +} + +// SetDestination sets the value of Destination. +func (s *Purchase) SetDestination(val AccountAddress) { + s.Destination = val +} + +// SetLt sets the value of Lt. +func (s *Purchase) SetLt(val int64) { + s.Lt = val +} + +// SetUtime sets the value of Utime. +func (s *Purchase) SetUtime(val int64) { + s.Utime = val +} + +// SetAmount sets the value of Amount. +func (s *Purchase) SetAmount(val Price) { + s.Amount = val +} + +// SetMetadata sets the value of Metadata. +func (s *Purchase) SetMetadata(val Metadata) { + s.Metadata = val +} + +// Ref: #/components/schemas/PurchaseAction +type PurchaseAction struct { + Source AccountAddress `json:"source"` + Destination AccountAddress `json:"destination"` + InvoiceID string `json:"invoice_id"` + Amount Price `json:"amount"` + Metadata Metadata `json:"metadata"` +} + +// GetSource returns the value of Source. +func (s *PurchaseAction) GetSource() AccountAddress { + return s.Source +} + +// GetDestination returns the value of Destination. +func (s *PurchaseAction) GetDestination() AccountAddress { + return s.Destination +} + +// GetInvoiceID returns the value of InvoiceID. +func (s *PurchaseAction) GetInvoiceID() string { + return s.InvoiceID +} + +// GetAmount returns the value of Amount. +func (s *PurchaseAction) GetAmount() Price { + return s.Amount +} + +// GetMetadata returns the value of Metadata. +func (s *PurchaseAction) GetMetadata() Metadata { + return s.Metadata +} + +// SetSource sets the value of Source. +func (s *PurchaseAction) SetSource(val AccountAddress) { + s.Source = val +} + +// SetDestination sets the value of Destination. +func (s *PurchaseAction) SetDestination(val AccountAddress) { + s.Destination = val +} + +// SetInvoiceID sets the value of InvoiceID. +func (s *PurchaseAction) SetInvoiceID(val string) { + s.InvoiceID = val +} + +// SetAmount sets the value of Amount. +func (s *PurchaseAction) SetAmount(val Price) { + s.Amount = val +} + +// SetMetadata sets the value of Metadata. +func (s *PurchaseAction) SetMetadata(val Metadata) { + s.Metadata = val +} + +// Ref: #/components/schemas/RawBlockchainConfig +type RawBlockchainConfig struct { + Config RawBlockchainConfigConfig `json:"config"` +} + +// GetConfig returns the value of Config. +func (s *RawBlockchainConfig) GetConfig() RawBlockchainConfigConfig { + return s.Config +} + +// SetConfig sets the value of Config. +func (s *RawBlockchainConfig) SetConfig(val RawBlockchainConfigConfig) { + s.Config = val +} + +type RawBlockchainConfigConfig map[string]jx.Raw + +func (s *RawBlockchainConfigConfig) init() RawBlockchainConfigConfig { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} + +// Ref: #/components/schemas/ReducedBlock +type ReducedBlock struct { + WorkchainID int32 `json:"workchain_id"` + Shard string `json:"shard"` + Seqno int32 `json:"seqno"` + MasterRef OptString `json:"master_ref"` + TxQuantity int `json:"tx_quantity"` + Utime int64 `json:"utime"` + ShardsBlocks []string `json:"shards_blocks"` + Parent []string `json:"parent"` +} + +// GetWorkchainID returns the value of WorkchainID. +func (s *ReducedBlock) GetWorkchainID() int32 { + return s.WorkchainID +} + +// GetShard returns the value of Shard. +func (s *ReducedBlock) GetShard() string { + return s.Shard +} + +// GetSeqno returns the value of Seqno. +func (s *ReducedBlock) GetSeqno() int32 { + return s.Seqno +} + +// GetMasterRef returns the value of MasterRef. +func (s *ReducedBlock) GetMasterRef() OptString { + return s.MasterRef +} + +// GetTxQuantity returns the value of TxQuantity. +func (s *ReducedBlock) GetTxQuantity() int { + return s.TxQuantity +} + +// GetUtime returns the value of Utime. +func (s *ReducedBlock) GetUtime() int64 { return s.Utime } @@ -15430,37 +16480,29 @@ func (s *StorageProvider) SetMaximalFileSize(val int64) { // Ref: #/components/schemas/Subscription type Subscription struct { - Address string `json:"address"` - WalletAddress string `json:"wallet_address"` - BeneficiaryAddress string `json:"beneficiary_address"` - Amount int64 `json:"amount"` - Period int64 `json:"period"` - StartTime int64 `json:"start_time"` - Timeout int64 `json:"timeout"` - LastPaymentTime int64 `json:"last_payment_time"` - LastRequestTime int64 `json:"last_request_time"` - SubscriptionID int64 `json:"subscription_id"` - FailedAttempts int32 `json:"failed_attempts"` -} - -// GetAddress returns the value of Address. -func (s *Subscription) GetAddress() string { - return s.Address + // Type of subscription. + Type string `json:"type"` + Status SubscriptionStatus `json:"status"` + // Payment period in seconds. + Period int64 `json:"period"` + // Common identifier. + SubscriptionID string `json:"subscription_id"` + PaymentPerPeriod Price `json:"payment_per_period"` + Wallet AccountAddress `json:"wallet"` + NextChargeAt int64 `json:"next_charge_at"` + Metadata Metadata `json:"metadata"` + Address OptString `json:"address"` + Beneficiary OptAccountAddress `json:"beneficiary"` } -// GetWalletAddress returns the value of WalletAddress. -func (s *Subscription) GetWalletAddress() string { - return s.WalletAddress -} - -// GetBeneficiaryAddress returns the value of BeneficiaryAddress. -func (s *Subscription) GetBeneficiaryAddress() string { - return s.BeneficiaryAddress +// GetType returns the value of Type. +func (s *Subscription) GetType() string { + return s.Type } -// GetAmount returns the value of Amount. -func (s *Subscription) GetAmount() int64 { - return s.Amount +// GetStatus returns the value of Status. +func (s *Subscription) GetStatus() SubscriptionStatus { + return s.Status } // GetPeriod returns the value of Period. @@ -15468,54 +16510,49 @@ func (s *Subscription) GetPeriod() int64 { return s.Period } -// GetStartTime returns the value of StartTime. -func (s *Subscription) GetStartTime() int64 { - return s.StartTime -} - -// GetTimeout returns the value of Timeout. -func (s *Subscription) GetTimeout() int64 { - return s.Timeout +// GetSubscriptionID returns the value of SubscriptionID. +func (s *Subscription) GetSubscriptionID() string { + return s.SubscriptionID } -// GetLastPaymentTime returns the value of LastPaymentTime. -func (s *Subscription) GetLastPaymentTime() int64 { - return s.LastPaymentTime +// GetPaymentPerPeriod returns the value of PaymentPerPeriod. +func (s *Subscription) GetPaymentPerPeriod() Price { + return s.PaymentPerPeriod } -// GetLastRequestTime returns the value of LastRequestTime. -func (s *Subscription) GetLastRequestTime() int64 { - return s.LastRequestTime +// GetWallet returns the value of Wallet. +func (s *Subscription) GetWallet() AccountAddress { + return s.Wallet } -// GetSubscriptionID returns the value of SubscriptionID. -func (s *Subscription) GetSubscriptionID() int64 { - return s.SubscriptionID +// GetNextChargeAt returns the value of NextChargeAt. +func (s *Subscription) GetNextChargeAt() int64 { + return s.NextChargeAt } -// GetFailedAttempts returns the value of FailedAttempts. -func (s *Subscription) GetFailedAttempts() int32 { - return s.FailedAttempts +// GetMetadata returns the value of Metadata. +func (s *Subscription) GetMetadata() Metadata { + return s.Metadata } -// SetAddress sets the value of Address. -func (s *Subscription) SetAddress(val string) { - s.Address = val +// GetAddress returns the value of Address. +func (s *Subscription) GetAddress() OptString { + return s.Address } -// SetWalletAddress sets the value of WalletAddress. -func (s *Subscription) SetWalletAddress(val string) { - s.WalletAddress = val +// GetBeneficiary returns the value of Beneficiary. +func (s *Subscription) GetBeneficiary() OptAccountAddress { + return s.Beneficiary } -// SetBeneficiaryAddress sets the value of BeneficiaryAddress. -func (s *Subscription) SetBeneficiaryAddress(val string) { - s.BeneficiaryAddress = val +// SetType sets the value of Type. +func (s *Subscription) SetType(val string) { + s.Type = val } -// SetAmount sets the value of Amount. -func (s *Subscription) SetAmount(val int64) { - s.Amount = val +// SetStatus sets the value of Status. +func (s *Subscription) SetStatus(val SubscriptionStatus) { + s.Status = val } // SetPeriod sets the value of Period. @@ -15523,34 +16560,39 @@ func (s *Subscription) SetPeriod(val int64) { s.Period = val } -// SetStartTime sets the value of StartTime. -func (s *Subscription) SetStartTime(val int64) { - s.StartTime = val +// SetSubscriptionID sets the value of SubscriptionID. +func (s *Subscription) SetSubscriptionID(val string) { + s.SubscriptionID = val } -// SetTimeout sets the value of Timeout. -func (s *Subscription) SetTimeout(val int64) { - s.Timeout = val +// SetPaymentPerPeriod sets the value of PaymentPerPeriod. +func (s *Subscription) SetPaymentPerPeriod(val Price) { + s.PaymentPerPeriod = val } -// SetLastPaymentTime sets the value of LastPaymentTime. -func (s *Subscription) SetLastPaymentTime(val int64) { - s.LastPaymentTime = val +// SetWallet sets the value of Wallet. +func (s *Subscription) SetWallet(val AccountAddress) { + s.Wallet = val } -// SetLastRequestTime sets the value of LastRequestTime. -func (s *Subscription) SetLastRequestTime(val int64) { - s.LastRequestTime = val +// SetNextChargeAt sets the value of NextChargeAt. +func (s *Subscription) SetNextChargeAt(val int64) { + s.NextChargeAt = val } -// SetSubscriptionID sets the value of SubscriptionID. -func (s *Subscription) SetSubscriptionID(val int64) { - s.SubscriptionID = val +// SetMetadata sets the value of Metadata. +func (s *Subscription) SetMetadata(val Metadata) { + s.Metadata = val +} + +// SetAddress sets the value of Address. +func (s *Subscription) SetAddress(val OptString) { + s.Address = val } -// SetFailedAttempts sets the value of FailedAttempts. -func (s *Subscription) SetFailedAttempts(val int32) { - s.FailedAttempts = val +// SetBeneficiary sets the value of Beneficiary. +func (s *Subscription) SetBeneficiary(val OptAccountAddress) { + s.Beneficiary = val } // Ref: #/components/schemas/SubscriptionAction @@ -15612,6 +16654,61 @@ func (s *SubscriptionAction) SetInitial(val bool) { s.Initial = val } +type SubscriptionStatus string + +const ( + SubscriptionStatusNotReady SubscriptionStatus = "not_ready" + SubscriptionStatusActive SubscriptionStatus = "active" + SubscriptionStatusSuspended SubscriptionStatus = "suspended" + SubscriptionStatusCancelled SubscriptionStatus = "cancelled" +) + +// AllValues returns all SubscriptionStatus values. +func (SubscriptionStatus) AllValues() []SubscriptionStatus { + return []SubscriptionStatus{ + SubscriptionStatusNotReady, + SubscriptionStatusActive, + SubscriptionStatusSuspended, + SubscriptionStatusCancelled, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s SubscriptionStatus) MarshalText() ([]byte, error) { + switch s { + case SubscriptionStatusNotReady: + return []byte(s), nil + case SubscriptionStatusActive: + return []byte(s), nil + case SubscriptionStatusSuspended: + return []byte(s), nil + case SubscriptionStatusCancelled: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *SubscriptionStatus) UnmarshalText(data []byte) error { + switch SubscriptionStatus(data) { + case SubscriptionStatusNotReady: + *s = SubscriptionStatusNotReady + return nil + case SubscriptionStatusActive: + *s = SubscriptionStatusActive + return nil + case SubscriptionStatusSuspended: + *s = SubscriptionStatusSuspended + return nil + case SubscriptionStatusCancelled: + *s = SubscriptionStatusCancelled + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + // Ref: #/components/schemas/Subscriptions type Subscriptions struct { Subscriptions []Subscription `json:"subscriptions"` @@ -16896,6 +17993,166 @@ func (s *ValueFlowJettonsItem) SetQuantity(val int64) { s.Quantity = val } +// Ref: #/components/schemas/Wallet +type Wallet struct { + Address string `json:"address"` + IsWallet bool `json:"is_wallet"` + Balance int64 `json:"balance"` + Stats WalletStats `json:"stats"` + Plugins []WalletPlugin `json:"plugins"` + Status AccountStatus `json:"status"` + // Unix timestamp. + LastActivity int64 `json:"last_activity"` + Name OptString `json:"name"` + Icon OptString `json:"icon"` + // Deprecated: schema marks this property as deprecated. + GetMethods []string `json:"get_methods"` + IsSuspended OptBool `json:"is_suspended"` + SignatureDisabled OptBool `json:"signature_disabled"` + Interfaces []string `json:"interfaces"` + LastLt int64 `json:"last_lt"` +} + +// GetAddress returns the value of Address. +func (s *Wallet) GetAddress() string { + return s.Address +} + +// GetIsWallet returns the value of IsWallet. +func (s *Wallet) GetIsWallet() bool { + return s.IsWallet +} + +// GetBalance returns the value of Balance. +func (s *Wallet) GetBalance() int64 { + return s.Balance +} + +// GetStats returns the value of Stats. +func (s *Wallet) GetStats() WalletStats { + return s.Stats +} + +// GetPlugins returns the value of Plugins. +func (s *Wallet) GetPlugins() []WalletPlugin { + return s.Plugins +} + +// GetStatus returns the value of Status. +func (s *Wallet) GetStatus() AccountStatus { + return s.Status +} + +// GetLastActivity returns the value of LastActivity. +func (s *Wallet) GetLastActivity() int64 { + return s.LastActivity +} + +// GetName returns the value of Name. +func (s *Wallet) GetName() OptString { + return s.Name +} + +// GetIcon returns the value of Icon. +func (s *Wallet) GetIcon() OptString { + return s.Icon +} + +// GetGetMethods returns the value of GetMethods. +func (s *Wallet) GetGetMethods() []string { + return s.GetMethods +} + +// GetIsSuspended returns the value of IsSuspended. +func (s *Wallet) GetIsSuspended() OptBool { + return s.IsSuspended +} + +// GetSignatureDisabled returns the value of SignatureDisabled. +func (s *Wallet) GetSignatureDisabled() OptBool { + return s.SignatureDisabled +} + +// GetInterfaces returns the value of Interfaces. +func (s *Wallet) GetInterfaces() []string { + return s.Interfaces +} + +// GetLastLt returns the value of LastLt. +func (s *Wallet) GetLastLt() int64 { + return s.LastLt +} + +// SetAddress sets the value of Address. +func (s *Wallet) SetAddress(val string) { + s.Address = val +} + +// SetIsWallet sets the value of IsWallet. +func (s *Wallet) SetIsWallet(val bool) { + s.IsWallet = val +} + +// SetBalance sets the value of Balance. +func (s *Wallet) SetBalance(val int64) { + s.Balance = val +} + +// SetStats sets the value of Stats. +func (s *Wallet) SetStats(val WalletStats) { + s.Stats = val +} + +// SetPlugins sets the value of Plugins. +func (s *Wallet) SetPlugins(val []WalletPlugin) { + s.Plugins = val +} + +// SetStatus sets the value of Status. +func (s *Wallet) SetStatus(val AccountStatus) { + s.Status = val +} + +// SetLastActivity sets the value of LastActivity. +func (s *Wallet) SetLastActivity(val int64) { + s.LastActivity = val +} + +// SetName sets the value of Name. +func (s *Wallet) SetName(val OptString) { + s.Name = val +} + +// SetIcon sets the value of Icon. +func (s *Wallet) SetIcon(val OptString) { + s.Icon = val +} + +// SetGetMethods sets the value of GetMethods. +func (s *Wallet) SetGetMethods(val []string) { + s.GetMethods = val +} + +// SetIsSuspended sets the value of IsSuspended. +func (s *Wallet) SetIsSuspended(val OptBool) { + s.IsSuspended = val +} + +// SetSignatureDisabled sets the value of SignatureDisabled. +func (s *Wallet) SetSignatureDisabled(val OptBool) { + s.SignatureDisabled = val +} + +// SetInterfaces sets the value of Interfaces. +func (s *Wallet) SetInterfaces(val []string) { + s.Interfaces = val +} + +// SetLastLt sets the value of LastLt. +func (s *Wallet) SetLastLt(val int64) { + s.LastLt = val +} + // Ref: #/components/schemas/WalletDNS type WalletDNS struct { Address string `json:"address"` @@ -16966,6 +18223,106 @@ func (s *WalletDNS) SetNames(val []string) { s.Names = val } +// Ref: #/components/schemas/WalletPlugin +type WalletPlugin struct { + Address string `json:"address"` + Type string `json:"type"` + Status AccountStatus `json:"status"` +} + +// GetAddress returns the value of Address. +func (s *WalletPlugin) GetAddress() string { + return s.Address +} + +// GetType returns the value of Type. +func (s *WalletPlugin) GetType() string { + return s.Type +} + +// GetStatus returns the value of Status. +func (s *WalletPlugin) GetStatus() AccountStatus { + return s.Status +} + +// SetAddress sets the value of Address. +func (s *WalletPlugin) SetAddress(val string) { + s.Address = val +} + +// SetType sets the value of Type. +func (s *WalletPlugin) SetType(val string) { + s.Type = val +} + +// SetStatus sets the value of Status. +func (s *WalletPlugin) SetStatus(val AccountStatus) { + s.Status = val +} + +// Ref: #/components/schemas/WalletStats +type WalletStats struct { + NftsCount int32 `json:"nfts_count"` + JettonsCount int32 `json:"jettons_count"` + MultisigCount int32 `json:"multisig_count"` + StakingCount int32 `json:"staking_count"` +} + +// GetNftsCount returns the value of NftsCount. +func (s *WalletStats) GetNftsCount() int32 { + return s.NftsCount +} + +// GetJettonsCount returns the value of JettonsCount. +func (s *WalletStats) GetJettonsCount() int32 { + return s.JettonsCount +} + +// GetMultisigCount returns the value of MultisigCount. +func (s *WalletStats) GetMultisigCount() int32 { + return s.MultisigCount +} + +// GetStakingCount returns the value of StakingCount. +func (s *WalletStats) GetStakingCount() int32 { + return s.StakingCount +} + +// SetNftsCount sets the value of NftsCount. +func (s *WalletStats) SetNftsCount(val int32) { + s.NftsCount = val +} + +// SetJettonsCount sets the value of JettonsCount. +func (s *WalletStats) SetJettonsCount(val int32) { + s.JettonsCount = val +} + +// SetMultisigCount sets the value of MultisigCount. +func (s *WalletStats) SetMultisigCount(val int32) { + s.MultisigCount = val +} + +// SetStakingCount sets the value of StakingCount. +func (s *WalletStats) SetStakingCount(val int32) { + s.StakingCount = val +} + +// Ref: #/components/schemas/Wallets +type Wallets struct { + Accounts []Wallet `json:"accounts"` +} + +// GetAccounts returns the value of Accounts. +func (s *Wallets) GetAccounts() []Wallet { + return s.Accounts +} + +// SetAccounts sets the value of Accounts. +func (s *Wallets) SetAccounts(val []Wallet) { + s.Accounts = val +} + // Validator's participation in elections. // Ref: #/components/schemas/WithdrawStakeAction type WithdrawStakeAction struct { diff --git a/oas_validators_gen.go b/oas_validators_gen.go index 6d7a34e..8d8e8e9 100644 --- a/oas_validators_gen.go +++ b/oas_validators_gen.go @@ -91,6 +91,26 @@ func (s *AccountEvent) Validate() error { Error: err, }) } + if err := func() error { + if err := (validate.Float{ + MinSet: true, + Min: 0, + MaxSet: true, + Max: 1, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: nil, + }).Validate(float64(s.Progress)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "progress", + Error: err, + }) + } if len(failures) > 0 { return &validate.Error{Fields: failures} } @@ -137,6 +157,46 @@ func (s *AccountEvents) Validate() error { return nil } +func (s *AccountPurchases) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Purchases == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Purchases { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "purchases", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *AccountStaking) Validate() error { if s == nil { return validate.ErrNilPointer @@ -477,6 +537,24 @@ func (s *Action) Validate() error { Error: err, }) } + if err := func() error { + if value, ok := s.Purchase.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "Purchase", + Error: err, + }) + } if err := func() error { if err := s.SimplePreview.Validate(); err != nil { return err @@ -545,6 +623,8 @@ func (s ActionType) Validate() error { return nil case "ExtraCurrencyTransfer": return nil + case "ContractDeploy": + return nil case "JettonTransfer": return nil case "JettonBurn": @@ -553,8 +633,6 @@ func (s ActionType) Validate() error { return nil case "NftItemTransfer": return nil - case "ContractDeploy": - return nil case "Subscribe": return nil case "UnSubscribe": @@ -569,16 +647,18 @@ func (s ActionType) Validate() error { return nil case "WithdrawStakeRequest": return nil - case "JettonSwap": - return nil - case "SmartContractExec": + case "ElectionsDepositStake": return nil case "ElectionsRecoverStake": return nil - case "ElectionsDepositStake": + case "JettonSwap": + return nil + case "SmartContractExec": return nil case "DomainRenew": return nil + case "Purchase": + return nil case "Unknown": return nil default: @@ -626,6 +706,17 @@ func (s *AuctionBidAction) Validate() error { Error: err, }) } + if err := func() error { + if err := s.Amount.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "amount", + Error: err, + }) + } if err := func() error { if value, ok := s.Nft.Get(); ok { if err := func() error { @@ -1765,22 +1856,49 @@ func (s BouncePhaseType) Validate() error { } } -func (s *ChartPoints) Validate() error { - if s == nil { - return validate.ErrNilPointer +func (s ChartPoints) Validate() error { + alias := ([][]float64)(s) + if alias == nil { + return errors.New("nil is invalid value") } - var failures []validate.FieldError - if err := func() error { - if err := (validate.Float{}).Validate(float64(s.V1)); err != nil { - return errors.Wrap(err, "float") + for i, elem := range alias { + if err := func() error { + if elem == nil { + return errors.New("nil is invalid value") + } + if err := (validate.Array{ + MinLength: 2, + MinLengthSet: true, + MaxLength: 2, + MaxLengthSet: true, + }).ValidateLength(len(elem)); err != nil { + return errors.Wrap(err, "array") + } + var failures []validate.FieldError + for i, elem := range elem { + if err := func() error { + if err := (validate.Float{}).Validate(float64(elem)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "V1", - Error: err, - }) } if len(failures) > 0 { return &validate.Error{Fields: failures} @@ -1856,6 +1974,21 @@ func (s *ContractDeployAction) Validate() error { return nil } +func (s CurrencyType) Validate() error { + switch s { + case "native": + return nil + case "extra_currency": + return nil + case "jetton": + return nil + case "fiat": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + func (s *DecodedMessage) Validate() error { if s == nil { return validate.ErrNilPointer @@ -2334,6 +2467,110 @@ func (s *Event) Validate() error { Error: err, }) } + if err := func() error { + if err := (validate.Float{ + MinSet: true, + Min: 0, + MaxSet: true, + Max: 1, + MinExclusive: false, + MaxExclusive: false, + MultipleOfSet: false, + MultipleOf: nil, + }).Validate(float64(s.Progress)); err != nil { + return errors.Wrap(err, "float") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "progress", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *ExecGetMethodArg) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Type.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "type", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s ExecGetMethodArgType) Validate() error { + switch s { + case "nan": + return nil + case "null": + return nil + case "tinyint": + return nil + case "int257": + return nil + case "slice": + return nil + case "cell_boc_base64": + return nil + case "slice_boc_hex": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *ExecGetMethodWithBodyForBlockchainAccountReq) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Args == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Args { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "args", + Error: err, + }) + } if len(failures) > 0 { return &validate.Error{Fields: failures} } @@ -2490,25 +2727,8 @@ func (s *GetChartRatesOK) Validate() error { var failures []validate.FieldError if err := func() error { - if s.Points == nil { - return errors.New("nil is invalid value") - } - var failures []validate.FieldError - for i, elem := range s.Points { - if err := func() error { - if err := elem.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: fmt.Sprintf("[%d]", i), - Error: err, - }) - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} + if err := s.Points.Validate(); err != nil { + return err } return nil }(); err != nil { @@ -3204,35 +3424,23 @@ func (s *JettonMintAction) Validate() error { return nil } -func (s *JettonPreview) Validate() error { +func (s *JettonOperation) Validate() error { if s == nil { return validate.ErrNilPointer } var failures []validate.FieldError if err := func() error { - if err := s.Verification.Validate(); err != nil { + if err := s.Operation.Validate(); err != nil { return err } return nil }(); err != nil { failures = append(failures, validate.FieldError{ - Name: "verification", + Name: "operation", Error: err, }) } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *JettonQuantity) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError if err := func() error { if err := s.Jetton.Validate(); err != nil { return err @@ -3250,25 +3458,124 @@ func (s *JettonQuantity) Validate() error { return nil } -func (s *JettonSwapAction) Validate() error { +func (s JettonOperationOperation) Validate() error { + switch s { + case "transfer": + return nil + case "mint": + return nil + case "burn": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + +func (s *JettonOperations) Validate() error { if s == nil { return validate.ErrNilPointer } var failures []validate.FieldError if err := func() error { - if err := s.Dex.Validate(); err != nil { - return err + if s.Operations == nil { + return errors.New("nil is invalid value") } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "dex", - Error: err, - }) - } - if err := func() error { - if value, ok := s.JettonMasterIn.Get(); ok { + var failures []validate.FieldError + for i, elem := range s.Operations { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "operations", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *JettonPreview) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Verification.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "verification", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *JettonQuantity) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Jetton.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "jetton", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *JettonSwapAction) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Dex.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "dex", + Error: err, + }) + } + if err := func() error { + if value, ok := s.JettonMasterIn.Get(); ok { if err := func() error { if err := value.Validate(); err != nil { return err @@ -3719,6 +4026,58 @@ func (s *MultisigOrder) Validate() error { Error: err, }) } + if err := func() error { + if value, ok := s.ChangingParameters.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "changing_parameters", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *MultisigOrderChangingParameters) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Signers == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "signers", + Error: err, + }) + } + if err := func() error { + if s.Proposers == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "proposers", + Error: err, + }) + } if len(failures) > 0 { return &validate.Error{Fields: failures} } @@ -3870,6 +4229,24 @@ func (s *NftItem) Validate() error { } var failures []validate.FieldError + if err := func() error { + if value, ok := s.Sale.Get(); ok { + if err := func() error { + if err := value.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + return err + } + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "sale", + Error: err, + }) + } if err := func() error { if err := s.ApprovedBy.Validate(); err != nil { return err @@ -3968,6 +4345,69 @@ func (s *NftItems) Validate() error { return nil } +func (s *NftOperation) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Item.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "item", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *NftOperations) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Operations == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Operations { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "operations", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *NftPurchaseAction) Validate() error { if s == nil { return validate.ErrNilPointer @@ -3985,6 +4425,17 @@ func (s *NftPurchaseAction) Validate() error { Error: err, }) } + if err := func() error { + if err := s.Amount.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "amount", + Error: err, + }) + } if err := func() error { if err := s.Nft.Validate(); err != nil { return err @@ -4110,6 +4561,86 @@ func (s *PoolInfo) Validate() error { return nil } +func (s *Price) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.CurrencyType.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "currency_type", + Error: err, + }) + } + if err := func() error { + if err := s.Verification.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "verification", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *Purchase) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Amount.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "amount", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *PurchaseAction) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Amount.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "amount", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *ReducedBlock) Validate() error { if s == nil { return validate.ErrNilPointer @@ -4288,6 +4819,29 @@ func (s *Risk) Validate() error { return nil } +func (s *Sale) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Price.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "price", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *SendBlockchainMessageReq) Validate() error { if s == nil { return validate.ErrNilPointer @@ -4295,6 +4849,9 @@ func (s *SendBlockchainMessageReq) Validate() error { var failures []validate.FieldError if err := func() error { + if s.Batch == nil { + return nil // optional + } if err := (validate.Array{ MinLength: 0, MinLengthSet: false, @@ -4456,6 +5013,55 @@ func (s *StoragePhase) Validate() error { return nil } +func (s *Subscription) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Status.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if err := func() error { + if err := s.PaymentPerPeriod.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "payment_per_period", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s SubscriptionStatus) Validate() error { + switch s { + case "not_ready": + return nil + case "active": + return nil + case "suspended": + return nil + case "cancelled": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + func (s *Subscriptions) Validate() error { if s == nil { return validate.ErrNilPointer @@ -4466,6 +5072,23 @@ func (s *Subscriptions) Validate() error { if s.Subscriptions == nil { return errors.New("nil is invalid value") } + var failures []validate.FieldError + for i, elem := range s.Subscriptions { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } return nil }(); err != nil { failures = append(failures, validate.FieldError{ @@ -5035,6 +5658,68 @@ func (s *ValueFlowJettonsItem) Validate() error { return nil } +func (s *Wallet) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Plugins == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Plugins { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "plugins", + Error: err, + }) + } + if err := func() error { + if err := s.Status.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if err := func() error { + if s.GetMethods == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "get_methods", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *WalletDNS) Validate() error { if s == nil { return validate.ErrNilPointer @@ -5058,6 +5743,69 @@ func (s *WalletDNS) Validate() error { return nil } +func (s *WalletPlugin) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Status.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "status", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + +func (s *Wallets) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Accounts == nil { + return errors.New("nil is invalid value") + } + var failures []validate.FieldError + for i, elem := range s.Accounts { + if err := func() error { + if err := elem.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: fmt.Sprintf("[%d]", i), + Error: err, + }) + } + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "accounts", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *WithdrawStakeAction) Validate() error { if s == nil { return validate.ErrNilPointer