From 1a6ee81f32ee4abd3004720de6c785912f95cb98 Mon Sep 17 00:00:00 2001 From: "aleksej.paschenko" Date: Thu, 20 Mar 2025 09:48:43 +0300 Subject: [PATCH] Huge update --- api/openapi.yml | 578 ++++++----- oas_client_gen.go | 662 ++++++++++++- oas_defaults_gen.go | 8 + oas_json_gen.go | 1755 ++++++++++++++++++++++++++++------ oas_operations_gen.go | 4 + oas_parameters_gen.go | 24 +- oas_response_decoders_gen.go | 364 ++++++- oas_schemas_gen.go | 817 +++++++++++++--- oas_validators_gen.go | 124 ++- 9 files changed, 3578 insertions(+), 758 deletions(-) diff --git a/api/openapi.yml b/api/openapi.yml index 181be42..d07ca0f 100644 --- a/api/openapi.yml +++ b/api/openapi.yml @@ -76,16 +76,44 @@ tags: externalDocs: description: Additional documentation url: https://docs.tonconsole.com/tonapi/rest-api/emulation - - name: Inscriptions - externalDocs: - description: Additional documentation - url: https://docs.tonconsole.com/tonapi/rest-api/inscriptions - name: Utilities externalDocs: description: Additional documentation url: https://docs.tonconsole.com/tonapi/rest-api/utilities + - name: ExtraCurrency + externalDocs: + description: Additional documentation + url: https://docs.tonconsole.com/tonapi/rest-api/extra-currency paths: + /v2/openapi.json: + get: + description: Get the openapi.json file + operationId: getOpenapiJson + tags: + - Utilities + responses: + '200': + content: + application/json: + schema: { } # Free-form JSON value + 'default': + $ref: '#/components/responses/Error' + /v2/openapi.yml: + get: + description: Get the openapi.yml file + operationId: getOpenapiYml + tags: + - Utilities + responses: + '200': + content: + application/yaml: + schema: + type: string + format: binary + 'default': + $ref: '#/components/responses/Error' /v2/status: get: description: Status @@ -1063,6 +1091,59 @@ paths: '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. + operationId: getAccountExtraCurrencyHistoryByID + tags: + - Accounts + parameters: + - $ref: '#/components/parameters/accountIDParameter' + - $ref: '#/components/parameters/ecIDParameter' + - $ref: '#/components/parameters/i18n' + - 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 extra currency history + content: + application/json: + schema: + $ref: '#/components/schemas/AccountEvents' + 'default': + $ref: '#/components/responses/Error' + /v2/dns/{domain_name}: get: description: Get full information about domain name @@ -1340,166 +1421,6 @@ paths: 'default': $ref: '#/components/responses/Error' - /v2/experimental/accounts/{account_id}/inscriptions: - get: - description: Get all inscriptions by owner address. It's experimental API and can be dropped in the future. - operationId: getAccountInscriptions - tags: - - Inscriptions - parameters: - - $ref: '#/components/parameters/accountIDParameter' - - $ref: '#/components/parameters/limitQuery' - - $ref: '#/components/parameters/offsetQuery' - responses: - '200': - description: account inscriptions - content: - application/json: - schema: - $ref: '#/components/schemas/InscriptionBalances' - 'default': - $ref: '#/components/responses/Error' - /v2/experimental/accounts/{account_id}/inscriptions/history: - get: - description: Get the transfer inscriptions history for account. It's experimental API and can be dropped in the future. - operationId: getAccountInscriptionsHistory - tags: - - Inscriptions - parameters: - - $ref: '#/components/parameters/accountIDParameter' - - $ref: '#/components/parameters/i18n' - - 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: false - schema: - type: integer - example: 100 - default: 100 - maximum: 1000 - minimum: 1 - responses: - '200': - description: account inscriptions history - content: - application/json: - schema: - $ref: '#/components/schemas/AccountEvents' - 'default': - $ref: '#/components/responses/Error' - /v2/experimental/accounts/{account_id}/inscriptions/{ticker}/history: - get: - description: Get the transfer inscriptions history for account. It's experimental API and can be dropped in the future. - operationId: getAccountInscriptionsHistoryByTicker - tags: - - Inscriptions - parameters: - - $ref: '#/components/parameters/accountIDParameter' - - $ref: '#/components/parameters/i18n' - - name: ticker - in: path - required: true - schema: - type: string - example: "nano" - - 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: false - schema: - type: integer - example: 100 - default: 100 - maximum: 1000 - minimum: 1 - responses: - '200': - description: account inscriptions history - content: - application/json: - schema: - $ref: '#/components/schemas/AccountEvents' - 'default': - $ref: '#/components/responses/Error' - /v2/experimental/inscriptions/op-template: - get: - description: return comment for making operation with inscription. please don't use it if you don't know what you are doing - operationId: getInscriptionOpTemplate - tags: - - Inscriptions - parameters: - - $ref: '#/components/parameters/Operation' - - in: query - name: type - required: true - schema: - type: string - enum: [ "ton20", "gram20" ] - example: "ton20" - - in: query - name: destination - required: false - schema: - type: string - - in: query - name: comment - required: false - schema: - type: string - - in: query - name: amount - required: true - schema: - type: string - x-js-format: bigint - example: "1000000000" - - in: query - name: ticker - required: true - schema: - type: string - example: "nano" - - in: query - name: who - required: true - schema: - type: string - example: UQAs87W4yJHlF8mt29ocA4agnMrLsOP69jC1HPyBUjJay7Mg - responses: - '200': - description: inscription op template - content: - application/json: - schema: - type: object - required: - - comment - - destination - properties: - comment: - type: string - example: "comment" - destination: - type: string - example: "0:0000000000000" - 'default': - $ref: '#/components/responses/Error' /v2/jettons: get: description: Get a list of all indexed jetton masters in the blockchain. @@ -1622,6 +1543,24 @@ paths: $ref: '#/components/schemas/Event' 'default': $ref: '#/components/responses/Error' + + /v2/extra-currency/{id}: + get: + description: Get extra currency info by id + operationId: getExtraCurrencyInfo + tags: + - ExtraCurrency + parameters: + - $ref: '#/components/parameters/ecIDParameter' + responses: + '200': + description: extra currency info + content: + application/json: + schema: + $ref: '#/components/schemas/EcPreview' + 'default': + $ref: '#/components/responses/Error' /v2/staking/nominator/{account_id}/pools: get: @@ -1985,6 +1924,7 @@ paths: description: Estimates the cost of the given messages and returns a payload to sign operationId: gaslessEstimate parameters: + - $ref: '#/components/parameters/i18n' - name: master_id in: path required: true @@ -2017,6 +1957,10 @@ paths: responses: '200': description: the message has been sent + content: + application/json: + schema: + $ref: '#/components/schemas/GaslessTx' 'default': $ref: '#/components/responses/Error' /v2/pubkeys/{public_key}/wallets: @@ -2712,7 +2656,7 @@ paths: $ref: '#/components/responses/Error' /v2/events/emulate: post: - description: Emulate sending message to blockchain + description: Emulate sending message to retrieve general blockchain events operationId: emulateMessageToEvent tags: - Emulation @@ -2737,7 +2681,7 @@ paths: $ref: '#/components/responses/Error' /v2/traces/emulate: post: - description: Emulate sending message to blockchain + description: Emulate sending message to retrieve with a detailed execution trace operationId: emulateMessageToTrace tags: - Emulation @@ -2761,7 +2705,7 @@ paths: $ref: '#/components/responses/Error' /v2/wallet/emulate: post: - description: Emulate sending message to blockchain + description: Emulate sending message to retrieve the resulting wallet state operationId: emulateMessageToWallet tags: - Emulation @@ -2781,7 +2725,7 @@ paths: $ref: '#/components/responses/Error' /v2/accounts/{account_id}/events/emulate: post: - description: Emulate sending message to blockchain + description: Emulate sending message to retrieve account-specific events operationId: emulateMessageToAccountEvent tags: - Emulation @@ -2917,6 +2861,15 @@ components: schema: type: string example: 97264395BD65A255A429B11326C84128B7D70FFED7949ABAE3036D506BA38621 + ecIDParameter: + in: path + name: id + required: true + description: "extra currency id" + schema: + type: integer + example: 239 + format: int32 publicKeyParameter: in: path name: public_key @@ -3121,14 +3074,6 @@ components: schema: type: integer format: int64 - Operation: - in: query - name: operation - required: true - schema: - type: string - enum: [ "transfer" ] - example: "transfer" requestBodies: MethodParameters: @@ -3150,10 +3095,14 @@ components: format: cell batch: type: array - maxItems: 10 + maxItems: 5 items: type: string format: cell + meta: + type: object + additionalProperties: + type: string EmulationBoc: description: bag-of-cells serialized to base64/hex and additional parameters to configure emulation required: true @@ -3196,6 +3145,13 @@ components: - wallet_address - wallet_public_key properties: + throw_error_if_not_enough_jettons: + type: boolean + default: false + description: TONAPI verifies that the account has enough jettons to pay the commission and make a transfer. + return_emulation: + type: boolean + default: false wallet_address: type: string format: address @@ -3721,6 +3677,10 @@ components: format: int64 x-js-format: bigint example: 60000000 + value_extra: + type: array + items: + $ref: '#/components/schemas/ExtraCurrency' fwd_fee: type: integer format: int64 @@ -3790,7 +3750,7 @@ components: - cskip_suspended BouncePhaseType: type: string - example: TrPhaseBounceNegfunds + example: cskip_no_state enum: - TrPhaseBounceNegfunds - TrPhaseBounceNofunds @@ -4599,6 +4559,10 @@ components: 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 @@ -4691,6 +4655,13 @@ components: type: string format: cell description: "Raw once-cell BoC encoded in hex." + GaslessTx: + type: object + required: + - protocol_name + properties: + protocol_name: + type: string SignRawParams: type: object required: @@ -4699,7 +4670,10 @@ components: - commission - from - valid_until + - protocol_name properties: + protocol_name: + type: string relay_address: type: string format: address @@ -4721,6 +4695,8 @@ components: type: array items: $ref: '#/components/schemas/SignRawMessage' + emulation: + $ref: '#/components/schemas/MessageConsequences' MethodExecutionResult: type: object required: @@ -5363,7 +5339,6 @@ components: type: string enum: - whitelist - - graylist - blacklist - none JettonPreview: @@ -5375,6 +5350,7 @@ components: - decimals - verification - image + - score properties: address: type: string @@ -5396,6 +5372,9 @@ components: $ref: '#/components/schemas/JettonVerificationType' custom_payload_api_uri: # todo: maybe remove type: string + score: + type: integer + format: int32 JettonBalance: type: object required: @@ -5711,6 +5690,7 @@ components: type: object required: - account + - qty - quantity - jetton properties: @@ -5718,8 +5698,13 @@ components: $ref: '#/components/schemas/AccountAddress' jetton: $ref: '#/components/schemas/JettonPreview' + qty: + type: string + x-js-format: bigint + example: "200" quantity: type: integer + deprecated: true format: int64 x-js-format: bigint example: 10 @@ -5736,6 +5721,7 @@ components: example: "TonTransfer" enum: - TonTransfer + - ExtraCurrencyTransfer - JettonTransfer - JettonBurn - JettonMint @@ -5753,8 +5739,6 @@ components: - ElectionsRecoverStake - ElectionsDepositStake - DomainRenew - - InscriptionTransfer - - InscriptionMint - Unknown status: type: string @@ -5764,6 +5748,8 @@ components: - failed TonTransfer: $ref: '#/components/schemas/TonTransferAction' + ExtraCurrencyTransfer: + $ref: '#/components/schemas/ExtraCurrencyTransferAction' ContractDeploy: $ref: '#/components/schemas/ContractDeployAction' JettonTransfer: @@ -5798,10 +5784,6 @@ components: $ref: '#/components/schemas/SmartContractAction' DomainRenew: $ref: '#/components/schemas/DomainRenewAction' - InscriptionTransfer: - $ref: '#/components/schemas/InscriptionTransferAction' - InscriptionMint: - $ref: '#/components/schemas/InscriptionMintAction' simple_preview: $ref: '#/components/schemas/ActionSimplePreview' base_transactions: @@ -5834,6 +5816,60 @@ components: $ref: '#/components/schemas/EncryptedComment' refund: $ref: '#/components/schemas/Refund' + ExtraCurrencies: + type: object + required: + - extra_currencies + properties: + extra_currencies: + type: array + items: + $ref: '#/components/schemas/EcPreview' + EcPreview: + type: object + required: + - id + - symbol + - decimals + - image + properties: + id: + type: integer + example: 239 + format: int32 + symbol: + type: string + example: FMS + decimals: + type: integer + example: 5 + image: + type: string + example: https://cache.tonapi.io/images/extra.jpg + ExtraCurrencyTransferAction: + type: object + required: + - sender + - recipient + - amount + - currency + properties: + sender: + $ref: '#/components/schemas/AccountAddress' + recipient: + $ref: '#/components/schemas/AccountAddress' + amount: + type: string + x-js-format: bigint + example: "1000000000" + description: amount in quanta of tokens + comment: + type: string + example: "Hi! This is your salary. \nFrom accounting with love." + encrypted_comment: + $ref: '#/components/schemas/EncryptedComment' + currency: + $ref: '#/components/schemas/EcPreview' SmartContractAction: type: object required: @@ -5876,68 +5912,6 @@ components: example: "0:da6b1b6663a0e4d18cc8574ccd9db5296e367dd9324706f3bbd9eb1cd2caf0bf" renewer: $ref: '#/components/schemas/AccountAddress' - InscriptionMintAction: - type: object - required: - - type - - ticker - - recipient - - amount - - decimals - properties: - recipient: - $ref: '#/components/schemas/AccountAddress' - amount: - type: string - x-js-format: bigint - description: amount in minimal particles - example: "123456789" - type: - type: string - enum: - - ton20 - - gram20 - example: "ton20" - ticker: - type: string - example: "nano" - decimals: - type: integer - example: 9 - InscriptionTransferAction: - type: object - required: - - sender - - recipient - - amount - - type - - ticker - - decimals - properties: - sender: - $ref: '#/components/schemas/AccountAddress' - recipient: - $ref: '#/components/schemas/AccountAddress' - amount: - type: string - x-js-format: bigint - description: amount in minimal particles - example: "123456789" - comment: - type: string - example: "Hi! This is your salary. \nFrom accounting with love." - type: - type: string - enum: - - ton20 - - gram20 - example: "ton20" - ticker: - type: string - example: "nano" - decimals: - type: integer - example: 9 NftItemTransferAction: type: object required: @@ -6881,39 +6855,6 @@ components: custom_payload_api_uri: type: string example: "https://claim-api.tonapi.io/jettons/TESTMINT" - InscriptionBalances: - type: object - required: - - inscriptions - properties: - inscriptions: - type: array - items: - $ref: '#/components/schemas/InscriptionBalance' - InscriptionBalance: - type: object - required: - - type - - ticker - - balance - - decimals - properties: - type: - type: string - enum: - - ton20 - - gram20 - example: "ton20" - ticker: - type: string - example: "nano" - balance: - type: string - x-js-format: bigint - example: "1000000000" - decimals: - type: integer - example: 9 Jettons: type: object required: @@ -7190,6 +7131,7 @@ components: - address - name - preview + - trust properties: address: type: string @@ -7200,6 +7142,8 @@ components: preview: type: string example: "https://cache.tonapi.io/images/media.jpg" + trust: + $ref: '#/components/schemas/TrustType' DnsExpiring: type: object required: @@ -7315,30 +7259,27 @@ components: - code - code_hash - methods + - compiler properties: code: type: string format: cell + disassembled_code: + type: string code_hash: type: string methods: type: array items: - type: object - required: - - id - - method - properties: - id: - type: integer - format: int64 - method: - type: string - example: "get_something" + $ref: '#/components/schemas/Method' compiler: type: string enum: - func + - fift + - tact + source: + $ref: '#/components/schemas/Source' PoolImplementationType: type: string enum: @@ -7389,6 +7330,61 @@ components: type: integer format: int64 example: 1668436763 + ExtraCurrency: + type: object + required: + - amount + - preview + properties: + amount: + type: string + x-js-format: bigint + example: "1000000000" + preview: + $ref: '#/components/schemas/EcPreview' + SourceFile: + type: object + required: + - name + - content + - is_entrypoint + - is_std_lib + - include_in_command + properties: + name: + type: string + content: + type: string + is_entrypoint: + type: boolean + example: false + is_std_lib: + type: boolean + example: false + include_in_command: + type: boolean + example: false + Source: + type: object + required: + - files + properties: + files: + type: array + items: + $ref: '#/components/schemas/SourceFile' + Method: + type: object + required: + - id + - method + properties: + id: + type: integer + format: int64 + method: + type: string + example: "get_something" responses: Error: diff --git a/oas_client_gen.go b/oas_client_gen.go index 5bcc305..02a2009 100644 --- a/oas_client_gen.go +++ b/oas_client_gen.go @@ -9,6 +9,7 @@ import ( "time" "github.com/go-faster/errors" + "github.com/go-faster/jx" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/metric" @@ -56,25 +57,25 @@ type Invoker interface { DnsResolve(ctx context.Context, params DnsResolveParams) (*DnsRecord, error) // EmulateMessageToAccountEvent invokes emulateMessageToAccountEvent operation. // - // Emulate sending message to blockchain. + // Emulate sending message to retrieve account-specific events. // // POST /v2/accounts/{account_id}/events/emulate EmulateMessageToAccountEvent(ctx context.Context, request *EmulateMessageToAccountEventReq, params EmulateMessageToAccountEventParams) (*AccountEvent, error) // EmulateMessageToEvent invokes emulateMessageToEvent operation. // - // Emulate sending message to blockchain. + // Emulate sending message to retrieve general blockchain events. // // POST /v2/events/emulate EmulateMessageToEvent(ctx context.Context, request *EmulateMessageToEventReq, params EmulateMessageToEventParams) (*Event, error) // EmulateMessageToTrace invokes emulateMessageToTrace operation. // - // Emulate sending message to blockchain. + // Emulate sending message to retrieve with a detailed execution trace. // // POST /v2/traces/emulate EmulateMessageToTrace(ctx context.Context, request *EmulateMessageToTraceReq, params EmulateMessageToTraceParams) (*Trace, error) // EmulateMessageToWallet invokes emulateMessageToWallet operation. // - // Emulate sending message to blockchain. + // Emulate sending message to retrieve the resulting wallet state. // // POST /v2/wallet/emulate EmulateMessageToWallet(ctx context.Context, request *EmulateMessageToWalletReq, params EmulateMessageToWalletParams) (*MessageConsequences, error) @@ -101,7 +102,7 @@ type Invoker interface { // Submits the signed gasless transaction message to the network. // // POST /v2/gasless/send - GaslessSend(ctx context.Context, request *GaslessSendReq) error + GaslessSend(ctx context.Context, request *GaslessSendReq) (*GaslessTx, error) // GetAccount invokes getAccount operation. // // Get human-friendly information about an account without low-level details. @@ -136,6 +137,12 @@ type Invoker interface { // // GET /v2/accounts/{account_id}/events GetAccountEvents(ctx context.Context, params GetAccountEventsParams) (*AccountEvents, error) + // GetAccountExtraCurrencyHistoryByID invokes getAccountExtraCurrencyHistoryByID operation. + // + // Get the transfer history of extra currencies for an account. + // + // GET /v2/accounts/{account_id}/extra-currency/{id}/history + GetAccountExtraCurrencyHistoryByID(ctx context.Context, params GetAccountExtraCurrencyHistoryByIDParams) (*AccountEvents, error) // GetAccountInfoByStateInit invokes getAccountInfoByStateInit operation. // // Get account info by state init. @@ -363,6 +370,12 @@ type Invoker interface { // // GET /v2/events/{event_id} GetEvent(ctx context.Context, params GetEventParams) (*Event, error) + // GetExtraCurrencyInfo invokes getExtraCurrencyInfo operation. + // + // Get extra currency info by id. + // + // GET /v2/extra-currency/{id} + GetExtraCurrencyInfo(ctx context.Context, params GetExtraCurrencyInfoParams) (*EcPreview, error) // GetInscriptionOpTemplate invokes getInscriptionOpTemplate operation. // // Return comment for making operation with inscription. please don't use it if you don't know what @@ -460,6 +473,18 @@ type Invoker interface { // // POST /v2/nfts/_bulk GetNftItemsByAddresses(ctx context.Context, request OptGetNftItemsByAddressesReq) (*NftItems, error) + // GetOpenapiJson invokes getOpenapiJson operation. + // + // Get the openapi.json file. + // + // GET /v2/openapi.json + GetOpenapiJson(ctx context.Context) (jx.Raw, error) + // GetOpenapiYml invokes getOpenapiYml operation. + // + // Get the openapi.yml file. + // + // GET /v2/openapi.yml + GetOpenapiYml(ctx context.Context) (GetOpenapiYmlOK, error) // GetOutMsgQueueSizes invokes getOutMsgQueueSizes operation. // // Get out msg queue sizes. @@ -1306,7 +1331,7 @@ func (c *Client) sendDnsResolve(ctx context.Context, params DnsResolveParams) (r // EmulateMessageToAccountEvent invokes emulateMessageToAccountEvent operation. // -// Emulate sending message to blockchain. +// Emulate sending message to retrieve account-specific events. // // POST /v2/accounts/{account_id}/events/emulate func (c *Client) EmulateMessageToAccountEvent(ctx context.Context, request *EmulateMessageToAccountEventReq, params EmulateMessageToAccountEventParams) (*AccountEvent, error) { @@ -1472,7 +1497,7 @@ func (c *Client) sendEmulateMessageToAccountEvent(ctx context.Context, request * // EmulateMessageToEvent invokes emulateMessageToEvent operation. // -// Emulate sending message to blockchain. +// Emulate sending message to retrieve general blockchain events. // // POST /v2/events/emulate func (c *Client) EmulateMessageToEvent(ctx context.Context, request *EmulateMessageToEventReq, params EmulateMessageToEventParams) (*Event, error) { @@ -1619,7 +1644,7 @@ func (c *Client) sendEmulateMessageToEvent(ctx context.Context, request *Emulate // EmulateMessageToTrace invokes emulateMessageToTrace operation. // -// Emulate sending message to blockchain. +// Emulate sending message to retrieve with a detailed execution trace. // // POST /v2/traces/emulate func (c *Client) EmulateMessageToTrace(ctx context.Context, request *EmulateMessageToTraceReq, params EmulateMessageToTraceParams) (*Trace, error) { @@ -1749,7 +1774,7 @@ func (c *Client) sendEmulateMessageToTrace(ctx context.Context, request *Emulate // EmulateMessageToWallet invokes emulateMessageToWallet operation. // -// Emulate sending message to blockchain. +// Emulate sending message to retrieve the resulting wallet state. // // POST /v2/wallet/emulate func (c *Client) EmulateMessageToWallet(ctx context.Context, request *EmulateMessageToWalletReq, params EmulateMessageToWalletParams) (*MessageConsequences, error) { @@ -2238,6 +2263,23 @@ func (c *Client) sendGaslessEstimate(ctx context.Context, request *GaslessEstima return res, errors.Wrap(err, "encode 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 @@ -2293,12 +2335,12 @@ func (c *Client) sendGaslessEstimate(ctx context.Context, request *GaslessEstima // Submits the signed gasless transaction message to the network. // // POST /v2/gasless/send -func (c *Client) GaslessSend(ctx context.Context, request *GaslessSendReq) error { - _, err := c.sendGaslessSend(ctx, request) - return err +func (c *Client) GaslessSend(ctx context.Context, request *GaslessSendReq) (*GaslessTx, error) { + res, err := c.sendGaslessSend(ctx, request) + return res, err } -func (c *Client) sendGaslessSend(ctx context.Context, request *GaslessSendReq) (res *GaslessSendOK, err error) { +func (c *Client) sendGaslessSend(ctx context.Context, request *GaslessSendReq) (res *GaslessTx, err error) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("gaslessSend"), semconv.HTTPRequestMethodKey.String("POST"), @@ -3254,6 +3296,236 @@ func (c *Client) sendGetAccountEvents(ctx context.Context, params GetAccountEven return result, nil } +// GetAccountExtraCurrencyHistoryByID invokes getAccountExtraCurrencyHistoryByID operation. +// +// Get the transfer history of extra currencies for an account. +// +// GET /v2/accounts/{account_id}/extra-currency/{id}/history +func (c *Client) GetAccountExtraCurrencyHistoryByID(ctx context.Context, params GetAccountExtraCurrencyHistoryByIDParams) (*AccountEvents, error) { + res, err := c.sendGetAccountExtraCurrencyHistoryByID(ctx, params) + return res, err +} + +func (c *Client) sendGetAccountExtraCurrencyHistoryByID(ctx context.Context, params GetAccountExtraCurrencyHistoryByIDParams) (res *AccountEvents, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getAccountExtraCurrencyHistoryByID"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/accounts/{account_id}/extra-currency/{id}/history"), + } + + // 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, GetAccountExtraCurrencyHistoryByIDOperation, + 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 [5]string + pathParts[0] = "/v2/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] = "/extra-currency/" + { + // Encode "id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.Int32ToString(params.ID)) + }(); 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 + } + pathParts[4] = "/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 { + 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") + } + + 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 + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, GetAccountExtraCurrencyHistoryByIDOperation, 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 := decodeGetAccountExtraCurrencyHistoryByIDResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // GetAccountInfoByStateInit invokes getAccountInfoByStateInit operation. // // Get account info by state init. @@ -8549,22 +8821,21 @@ func (c *Client) sendGetEvent(ctx context.Context, params GetEventParams) (res * return result, nil } -// GetInscriptionOpTemplate invokes getInscriptionOpTemplate operation. +// GetExtraCurrencyInfo invokes getExtraCurrencyInfo operation. // -// Return comment for making operation with inscription. please don't use it if you don't know what -// you are doing. +// Get extra currency info by id. // -// GET /v2/experimental/inscriptions/op-template -func (c *Client) GetInscriptionOpTemplate(ctx context.Context, params GetInscriptionOpTemplateParams) (*GetInscriptionOpTemplateOK, error) { - res, err := c.sendGetInscriptionOpTemplate(ctx, params) +// GET /v2/extra-currency/{id} +func (c *Client) GetExtraCurrencyInfo(ctx context.Context, params GetExtraCurrencyInfoParams) (*EcPreview, error) { + res, err := c.sendGetExtraCurrencyInfo(ctx, params) return res, err } -func (c *Client) sendGetInscriptionOpTemplate(ctx context.Context, params GetInscriptionOpTemplateParams) (res *GetInscriptionOpTemplateOK, err error) { +func (c *Client) sendGetExtraCurrencyInfo(ctx context.Context, params GetExtraCurrencyInfoParams) (res *EcPreview, err error) { otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getInscriptionOpTemplate"), + otelogen.OperationID("getExtraCurrencyInfo"), semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/v2/experimental/inscriptions/op-template"), + semconv.HTTPRouteKey.String("/v2/extra-currency/{id}"), } // Run stopwatch. @@ -8579,7 +8850,7 @@ func (c *Client) sendGetInscriptionOpTemplate(ctx context.Context, params GetIns c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GetInscriptionOpTemplateOperation, + ctx, span := c.cfg.Tracer.Start(ctx, GetExtraCurrencyInfoOperation, trace.WithAttributes(otelAttrs...), clientSpanKind, ) @@ -8596,10 +8867,135 @@ func (c *Client) sendGetInscriptionOpTemplate(ctx context.Context, params GetIns stage = "BuildURL" u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/v2/experimental/inscriptions/op-template" - uri.AddPathParts(u, pathParts[:]...) - + var pathParts [2]string + pathParts[0] = "/v2/extra-currency/" + { + // Encode "id" parameter. + e := uri.NewPathEncoder(uri.PathEncoderConfig{ + Param: "id", + Style: uri.PathStyleSimple, + Explode: false, + }) + if err := func() error { + return e.EncodeValue(conv.Int32ToString(params.ID)) + }(); 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, GetExtraCurrencyInfoOperation, 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 := decodeGetExtraCurrencyInfoResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GetInscriptionOpTemplate invokes getInscriptionOpTemplate operation. +// +// Return comment for making operation with inscription. please don't use it if you don't know what +// you are doing. +// +// GET /v2/experimental/inscriptions/op-template +func (c *Client) GetInscriptionOpTemplate(ctx context.Context, params GetInscriptionOpTemplateParams) (*GetInscriptionOpTemplateOK, error) { + res, err := c.sendGetInscriptionOpTemplate(ctx, params) + return res, err +} + +func (c *Client) sendGetInscriptionOpTemplate(ctx context.Context, params GetInscriptionOpTemplateParams) (res *GetInscriptionOpTemplateOK, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getInscriptionOpTemplate"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/experimental/inscriptions/op-template"), + } + + // 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, GetInscriptionOpTemplateOperation, + 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/experimental/inscriptions/op-template" + uri.AddPathParts(u, pathParts[:]...) + stage = "EncodeQueryParams" q := uri.NewQueryEncoder() { @@ -10852,6 +11248,218 @@ func (c *Client) sendGetNftItemsByAddresses(ctx context.Context, request OptGetN 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. + 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, GetOpenapiJsonOperation, + 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/openapi.json" + 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, GetOpenapiJsonOperation, 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 := decodeGetOpenapiJsonResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// GetOpenapiYml invokes getOpenapiYml operation. +// +// Get the openapi.yml file. +// +// GET /v2/openapi.yml +func (c *Client) GetOpenapiYml(ctx context.Context) (GetOpenapiYmlOK, error) { + res, err := c.sendGetOpenapiYml(ctx) + return res, err +} + +func (c *Client) sendGetOpenapiYml(ctx context.Context) (res GetOpenapiYmlOK, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("getOpenapiYml"), + semconv.HTTPRequestMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/v2/openapi.yml"), + } + + // 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, GetOpenapiYmlOperation, + 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/openapi.yml" + 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, GetOpenapiYmlOperation, 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 := decodeGetOpenapiYmlResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // GetOutMsgQueueSizes invokes getOutMsgQueueSizes operation. // // Get out msg queue sizes. diff --git a/oas_defaults_gen.go b/oas_defaults_gen.go index e27b127..f1ba772 100644 --- a/oas_defaults_gen.go +++ b/oas_defaults_gen.go @@ -10,6 +10,14 @@ func (s *DomainBid) setDefaults() { } } +// setDefaults set default value of fields. +func (s *GaslessEstimateReq) setDefaults() { + { + val := bool(false) + s.ReturnEmulation.SetTo(val) + } +} + // setDefaults set default value of fields. func (s *ServiceStatus) setDefaults() { { diff --git a/oas_json_gen.go b/oas_json_gen.go index f6c712f..db7ac08 100644 --- a/oas_json_gen.go +++ b/oas_json_gen.go @@ -71,6 +71,16 @@ func (s *Account) encodeFields(e *jx.Encoder) { e.FieldStart("balance") e.Int64(s.Balance) } + { + if s.ExtraBalance != nil { + e.FieldStart("extra_balance") + e.ArrStart() + for _, elem := range s.ExtraBalance { + elem.Encode(e) + } + e.ArrEnd() + } + } { if s.CurrenciesBalance.Set { e.FieldStart("currencies_balance") @@ -139,20 +149,21 @@ func (s *Account) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfAccount = [13]string{ +var jsonFieldsNameOfAccount = [14]string{ 0: "address", 1: "balance", - 2: "currencies_balance", - 3: "last_activity", - 4: "status", - 5: "interfaces", - 6: "name", - 7: "is_scam", - 8: "icon", - 9: "memo_required", - 10: "get_methods", - 11: "is_suspended", - 12: "is_wallet", + 2: "extra_balance", + 3: "currencies_balance", + 4: "last_activity", + 5: "status", + 6: "interfaces", + 7: "name", + 8: "is_scam", + 9: "icon", + 10: "memo_required", + 11: "get_methods", + 12: "is_suspended", + 13: "is_wallet", } // Decode decodes Account from json. @@ -188,6 +199,23 @@ func (s *Account) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"balance\"") } + case "extra_balance": + if err := func() error { + 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 + }(); err != nil { + return errors.Wrap(err, "decode field \"extra_balance\"") + } case "currencies_balance": if err := func() error { s.CurrenciesBalance.Reset() @@ -199,7 +227,7 @@ func (s *Account) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"currencies_balance\"") } case "last_activity": - requiredBitSet[0] |= 1 << 3 + requiredBitSet[0] |= 1 << 4 if err := func() error { v, err := d.Int64() s.LastActivity = int64(v) @@ -211,7 +239,7 @@ func (s *Account) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"last_activity\"") } case "status": - requiredBitSet[0] |= 1 << 4 + requiredBitSet[0] |= 1 << 5 if err := func() error { if err := s.Status.Decode(d); err != nil { return err @@ -280,7 +308,7 @@ func (s *Account) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"memo_required\"") } case "get_methods": - requiredBitSet[1] |= 1 << 2 + requiredBitSet[1] |= 1 << 3 if err := func() error { s.GetMethods = make([]string, 0) if err := d.Arr(func(d *jx.Decoder) error { @@ -310,7 +338,7 @@ func (s *Account) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"is_suspended\"") } case "is_wallet": - requiredBitSet[1] |= 1 << 4 + requiredBitSet[1] |= 1 << 5 if err := func() error { v, err := d.Bool() s.IsWallet = bool(v) @@ -331,8 +359,8 @@ func (s *Account) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [2]uint8{ - 0b00011011, - 0b00010100, + 0b00110011, + 0b00101000, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -1666,6 +1694,12 @@ func (s *Action) encodeFields(e *jx.Encoder) { s.TonTransfer.Encode(e) } } + { + if s.ExtraCurrencyTransfer.Set { + e.FieldStart("ExtraCurrencyTransfer") + s.ExtraCurrencyTransfer.Encode(e) + } + } { if s.ContractDeploy.Set { e.FieldStart("ContractDeploy") @@ -1794,31 +1828,32 @@ func (s *Action) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfAction = [24]string{ +var jsonFieldsNameOfAction = [25]string{ 0: "type", 1: "status", 2: "TonTransfer", - 3: "ContractDeploy", - 4: "JettonTransfer", - 5: "JettonBurn", - 6: "JettonMint", - 7: "NftItemTransfer", - 8: "Subscribe", - 9: "UnSubscribe", - 10: "AuctionBid", - 11: "NftPurchase", - 12: "DepositStake", - 13: "WithdrawStake", - 14: "WithdrawStakeRequest", - 15: "ElectionsDepositStake", - 16: "ElectionsRecoverStake", - 17: "JettonSwap", - 18: "SmartContractExec", - 19: "DomainRenew", - 20: "InscriptionTransfer", - 21: "InscriptionMint", - 22: "simple_preview", - 23: "base_transactions", + 3: "ExtraCurrencyTransfer", + 4: "ContractDeploy", + 5: "JettonTransfer", + 6: "JettonBurn", + 7: "JettonMint", + 8: "NftItemTransfer", + 9: "Subscribe", + 10: "UnSubscribe", + 11: "AuctionBid", + 12: "NftPurchase", + 13: "DepositStake", + 14: "WithdrawStake", + 15: "WithdrawStakeRequest", + 16: "ElectionsDepositStake", + 17: "ElectionsRecoverStake", + 18: "JettonSwap", + 19: "SmartContractExec", + 20: "DomainRenew", + 21: "InscriptionTransfer", + 22: "InscriptionMint", + 23: "simple_preview", + 24: "base_transactions", } // Decode decodes Action from json. @@ -1826,7 +1861,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) { @@ -1860,6 +1895,16 @@ func (s *Action) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"TonTransfer\"") } + case "ExtraCurrencyTransfer": + if err := func() error { + s.ExtraCurrencyTransfer.Reset() + if err := s.ExtraCurrencyTransfer.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"ExtraCurrencyTransfer\"") + } case "ContractDeploy": if err := func() error { s.ContractDeploy.Reset() @@ -2051,7 +2096,7 @@ func (s *Action) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"InscriptionMint\"") } case "simple_preview": - requiredBitSet[2] |= 1 << 6 + requiredBitSet[2] |= 1 << 7 if err := func() error { if err := s.SimplePreview.Decode(d); err != nil { return err @@ -2061,7 +2106,7 @@ func (s *Action) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"simple_preview\"") } case "base_transactions": - requiredBitSet[2] |= 1 << 7 + requiredBitSet[3] |= 1 << 0 if err := func() error { s.BaseTransactions = make([]string, 0) if err := d.Arr(func(d *jx.Decoder) error { @@ -2089,10 +2134,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, - 0b11000000, + 0b10000000, + 0b00000001, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -2585,6 +2631,8 @@ func (s *ActionType) Decode(d *jx.Decoder) error { switch ActionType(v) { case ActionTypeTonTransfer: *s = ActionTypeTonTransfer + case ActionTypeExtraCurrencyTransfer: + *s = ActionTypeExtraCurrencyTransfer case ActionTypeJettonTransfer: *s = ActionTypeJettonTransfer case ActionTypeJettonBurn: @@ -4530,6 +4578,12 @@ func (s *BlockchainAccountInspect) encodeFields(e *jx.Encoder) { e.FieldStart("code") e.Str(s.Code) } + { + if s.DisassembledCode.Set { + e.FieldStart("disassembled_code") + s.DisassembledCode.Encode(e) + } + } { e.FieldStart("code_hash") e.Str(s.CodeHash) @@ -4543,18 +4597,24 @@ func (s *BlockchainAccountInspect) encodeFields(e *jx.Encoder) { e.ArrEnd() } { - if s.Compiler.Set { - e.FieldStart("compiler") - s.Compiler.Encode(e) + e.FieldStart("compiler") + s.Compiler.Encode(e) + } + { + if s.Source.Set { + e.FieldStart("source") + s.Source.Encode(e) } } } -var jsonFieldsNameOfBlockchainAccountInspect = [4]string{ +var jsonFieldsNameOfBlockchainAccountInspect = [6]string{ 0: "code", - 1: "code_hash", - 2: "methods", - 3: "compiler", + 1: "disassembled_code", + 2: "code_hash", + 3: "methods", + 4: "compiler", + 5: "source", } // Decode decodes BlockchainAccountInspect from json. @@ -4578,8 +4638,18 @@ func (s *BlockchainAccountInspect) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"code\"") } + case "disassembled_code": + if err := func() error { + s.DisassembledCode.Reset() + if err := s.DisassembledCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"disassembled_code\"") + } case "code_hash": - requiredBitSet[0] |= 1 << 1 + requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Str() s.CodeHash = string(v) @@ -4591,11 +4661,11 @@ func (s *BlockchainAccountInspect) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"code_hash\"") } case "methods": - requiredBitSet[0] |= 1 << 2 + requiredBitSet[0] |= 1 << 3 if err := func() error { - s.Methods = make([]BlockchainAccountInspectMethodsItem, 0) + s.Methods = make([]Method, 0) if err := d.Arr(func(d *jx.Decoder) error { - var elem BlockchainAccountInspectMethodsItem + var elem Method if err := elem.Decode(d); err != nil { return err } @@ -4609,8 +4679,8 @@ func (s *BlockchainAccountInspect) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"methods\"") } case "compiler": + requiredBitSet[0] |= 1 << 4 if err := func() error { - s.Compiler.Reset() if err := s.Compiler.Decode(d); err != nil { return err } @@ -4618,6 +4688,16 @@ func (s *BlockchainAccountInspect) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"compiler\"") } + 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\"") + } default: return d.Skip() } @@ -4628,7 +4708,7 @@ func (s *BlockchainAccountInspect) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00000111, + 0b00011101, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -4692,6 +4772,10 @@ func (s *BlockchainAccountInspectCompiler) Decode(d *jx.Decoder) error { switch BlockchainAccountInspectCompiler(v) { case BlockchainAccountInspectCompilerFunc: *s = BlockchainAccountInspectCompilerFunc + case BlockchainAccountInspectCompilerFift: + *s = BlockchainAccountInspectCompilerFift + case BlockchainAccountInspectCompilerTact: + *s = BlockchainAccountInspectCompilerTact default: *s = BlockchainAccountInspectCompiler(v) } @@ -4712,119 +4796,6 @@ func (s *BlockchainAccountInspectCompiler) UnmarshalJSON(data []byte) error { return s.Decode(d) } -// Encode implements json.Marshaler. -func (s *BlockchainAccountInspectMethodsItem) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *BlockchainAccountInspectMethodsItem) encodeFields(e *jx.Encoder) { - { - e.FieldStart("id") - e.Int64(s.ID) - } - { - e.FieldStart("method") - e.Str(s.Method) - } -} - -var jsonFieldsNameOfBlockchainAccountInspectMethodsItem = [2]string{ - 0: "id", - 1: "method", -} - -// Decode decodes BlockchainAccountInspectMethodsItem from json. -func (s *BlockchainAccountInspectMethodsItem) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode BlockchainAccountInspectMethodsItem to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "id": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.ID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"id\"") - } - case "method": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Str() - s.Method = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"method\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode BlockchainAccountInspectMethodsItem") - } - // 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(jsonFieldsNameOfBlockchainAccountInspectMethodsItem) { - name = jsonFieldsNameOfBlockchainAccountInspectMethodsItem[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 *BlockchainAccountInspectMethodsItem) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *BlockchainAccountInspectMethodsItem) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - // Encode implements json.Marshaler. func (s *BlockchainBlock) Encode(e *jx.Encoder) { e.ObjStart() @@ -14401,71 +14372,107 @@ func (s *DomainRenewAction) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *ElectionsDepositStakeAction) Encode(e *jx.Encoder) { +func (s *EcPreview) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. -func (s *ElectionsDepositStakeAction) encodeFields(e *jx.Encoder) { +func (s *EcPreview) encodeFields(e *jx.Encoder) { { - e.FieldStart("amount") - e.Int64(s.Amount) + e.FieldStart("id") + e.Int32(s.ID) } { - e.FieldStart("staker") - s.Staker.Encode(e) + e.FieldStart("symbol") + e.Str(s.Symbol) + } + { + e.FieldStart("decimals") + e.Int(s.Decimals) + } + { + e.FieldStart("image") + e.Str(s.Image) } } -var jsonFieldsNameOfElectionsDepositStakeAction = [2]string{ - 0: "amount", - 1: "staker", +var jsonFieldsNameOfEcPreview = [4]string{ + 0: "id", + 1: "symbol", + 2: "decimals", + 3: "image", } -// Decode decodes ElectionsDepositStakeAction from json. -func (s *ElectionsDepositStakeAction) Decode(d *jx.Decoder) error { +// Decode decodes EcPreview from json. +func (s *EcPreview) Decode(d *jx.Decoder) error { if s == nil { - return errors.New("invalid: unable to decode ElectionsDepositStakeAction to nil") + return errors.New("invalid: unable to decode EcPreview to nil") } var requiredBitSet [1]uint8 if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { - case "amount": + case "id": requiredBitSet[0] |= 1 << 0 if err := func() error { - v, err := d.Int64() - s.Amount = int64(v) + v, err := d.Int32() + s.ID = int32(v) if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"amount\"") + return errors.Wrap(err, "decode field \"id\"") } - case "staker": + case "symbol": requiredBitSet[0] |= 1 << 1 if err := func() error { - if err := s.Staker.Decode(d); err != nil { + v, err := d.Str() + s.Symbol = string(v) + if err != nil { return err } return nil }(); err != nil { - return errors.Wrap(err, "decode field \"staker\"") + return errors.Wrap(err, "decode field \"symbol\"") + } + 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 "image": + requiredBitSet[0] |= 1 << 3 + 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\"") } default: return d.Skip() } return nil }); err != nil { - return errors.Wrap(err, "decode ElectionsDepositStakeAction") + return errors.Wrap(err, "decode EcPreview") } // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00000011, + 0b00001111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -14477,8 +14484,8 @@ func (s *ElectionsDepositStakeAction) Decode(d *jx.Decoder) error { bitIdx := bits.TrailingZeros8(result) fieldIdx := i*8 + bitIdx var name string - if fieldIdx < len(jsonFieldsNameOfElectionsDepositStakeAction) { - name = jsonFieldsNameOfElectionsDepositStakeAction[fieldIdx] + if fieldIdx < len(jsonFieldsNameOfEcPreview) { + name = jsonFieldsNameOfEcPreview[fieldIdx] } else { name = strconv.Itoa(fieldIdx) } @@ -14499,27 +14506,27 @@ func (s *ElectionsDepositStakeAction) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *ElectionsDepositStakeAction) MarshalJSON() ([]byte, error) { +func (s *EcPreview) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *ElectionsDepositStakeAction) UnmarshalJSON(data []byte) error { +func (s *EcPreview) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } // Encode implements json.Marshaler. -func (s *ElectionsRecoverStakeAction) Encode(e *jx.Encoder) { +func (s *ElectionsDepositStakeAction) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } // encodeFields encodes fields. -func (s *ElectionsRecoverStakeAction) encodeFields(e *jx.Encoder) { +func (s *ElectionsDepositStakeAction) encodeFields(e *jx.Encoder) { { e.FieldStart("amount") e.Int64(s.Amount) @@ -14530,15 +14537,126 @@ func (s *ElectionsRecoverStakeAction) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfElectionsRecoverStakeAction = [2]string{ +var jsonFieldsNameOfElectionsDepositStakeAction = [2]string{ 0: "amount", 1: "staker", } -// Decode decodes ElectionsRecoverStakeAction from json. -func (s *ElectionsRecoverStakeAction) Decode(d *jx.Decoder) error { +// Decode decodes ElectionsDepositStakeAction from json. +func (s *ElectionsDepositStakeAction) Decode(d *jx.Decoder) error { if s == nil { - return errors.New("invalid: unable to decode ElectionsRecoverStakeAction to nil") + return errors.New("invalid: unable to decode ElectionsDepositStakeAction 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 "staker": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Staker.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"staker\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ElectionsDepositStakeAction") + } + // 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(jsonFieldsNameOfElectionsDepositStakeAction) { + name = jsonFieldsNameOfElectionsDepositStakeAction[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 *ElectionsDepositStakeAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ElectionsDepositStakeAction) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ElectionsRecoverStakeAction) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ElectionsRecoverStakeAction) encodeFields(e *jx.Encoder) { + { + e.FieldStart("amount") + e.Int64(s.Amount) + } + { + e.FieldStart("staker") + s.Staker.Encode(e) + } +} + +var jsonFieldsNameOfElectionsRecoverStakeAction = [2]string{ + 0: "amount", + 1: "staker", +} + +// Decode decodes ElectionsRecoverStakeAction from json. +func (s *ElectionsRecoverStakeAction) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ElectionsRecoverStakeAction to nil") } var requiredBitSet [1]uint8 @@ -15591,6 +15709,292 @@ func (s *Event) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *ExtraCurrency) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ExtraCurrency) encodeFields(e *jx.Encoder) { + { + e.FieldStart("amount") + e.Str(s.Amount) + } + { + e.FieldStart("preview") + s.Preview.Encode(e) + } +} + +var jsonFieldsNameOfExtraCurrency = [2]string{ + 0: "amount", + 1: "preview", +} + +// Decode decodes ExtraCurrency from json. +func (s *ExtraCurrency) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ExtraCurrency 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.Str() + s.Amount = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + case "preview": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Preview.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"preview\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ExtraCurrency") + } + // 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(jsonFieldsNameOfExtraCurrency) { + name = jsonFieldsNameOfExtraCurrency[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 *ExtraCurrency) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ExtraCurrency) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *ExtraCurrencyTransferAction) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *ExtraCurrencyTransferAction) encodeFields(e *jx.Encoder) { + { + e.FieldStart("sender") + s.Sender.Encode(e) + } + { + e.FieldStart("recipient") + s.Recipient.Encode(e) + } + { + e.FieldStart("amount") + e.Str(s.Amount) + } + { + if s.Comment.Set { + e.FieldStart("comment") + s.Comment.Encode(e) + } + } + { + if s.EncryptedComment.Set { + e.FieldStart("encrypted_comment") + s.EncryptedComment.Encode(e) + } + } + { + e.FieldStart("currency") + s.Currency.Encode(e) + } +} + +var jsonFieldsNameOfExtraCurrencyTransferAction = [6]string{ + 0: "sender", + 1: "recipient", + 2: "amount", + 3: "comment", + 4: "encrypted_comment", + 5: "currency", +} + +// Decode decodes ExtraCurrencyTransferAction from json. +func (s *ExtraCurrencyTransferAction) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode ExtraCurrencyTransferAction to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "sender": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + if err := s.Sender.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"sender\"") + } + case "recipient": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + if err := s.Recipient.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"recipient\"") + } + case "amount": + requiredBitSet[0] |= 1 << 2 + 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 "comment": + if err := func() error { + s.Comment.Reset() + if err := s.Comment.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"comment\"") + } + case "encrypted_comment": + if err := func() error { + s.EncryptedComment.Reset() + if err := s.EncryptedComment.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"encrypted_comment\"") + } + case "currency": + requiredBitSet[0] |= 1 << 5 + if err := func() error { + if err := s.Currency.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"currency\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode ExtraCurrencyTransferAction") + } + // Validate required fields. + var failures []validate.FieldError + for i, mask := range [1]uint8{ + 0b00100111, + } { + 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(jsonFieldsNameOfExtraCurrencyTransferAction) { + name = jsonFieldsNameOfExtraCurrencyTransferAction[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 *ExtraCurrencyTransferAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *ExtraCurrencyTransferAction) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *FoundAccounts) Encode(e *jx.Encoder) { e.ObjStart() @@ -15718,12 +16122,17 @@ func (s *FoundAccountsAddressesItem) encodeFields(e *jx.Encoder) { e.FieldStart("preview") e.Str(s.Preview) } + { + e.FieldStart("trust") + s.Trust.Encode(e) + } } -var jsonFieldsNameOfFoundAccountsAddressesItem = [3]string{ +var jsonFieldsNameOfFoundAccountsAddressesItem = [4]string{ 0: "address", 1: "name", 2: "preview", + 3: "trust", } // Decode decodes FoundAccountsAddressesItem from json. @@ -15771,6 +16180,16 @@ func (s *FoundAccountsAddressesItem) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"preview\"") } + case "trust": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + if err := s.Trust.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"trust\"") + } default: return d.Skip() } @@ -15781,7 +16200,7 @@ func (s *FoundAccountsAddressesItem) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00000111, + 0b00001111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -16288,6 +16707,12 @@ func (s *GaslessEstimateReq) Encode(e *jx.Encoder) { // encodeFields encodes fields. func (s *GaslessEstimateReq) encodeFields(e *jx.Encoder) { + { + if s.ReturnEmulation.Set { + e.FieldStart("return_emulation") + s.ReturnEmulation.Encode(e) + } + } { e.FieldStart("wallet_address") e.Str(s.WalletAddress) @@ -16306,10 +16731,11 @@ func (s *GaslessEstimateReq) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfGaslessEstimateReq = [3]string{ - 0: "wallet_address", - 1: "wallet_public_key", - 2: "messages", +var jsonFieldsNameOfGaslessEstimateReq = [4]string{ + 0: "return_emulation", + 1: "wallet_address", + 2: "wallet_public_key", + 3: "messages", } // Decode decodes GaslessEstimateReq from json. @@ -16318,11 +16744,22 @@ func (s *GaslessEstimateReq) Decode(d *jx.Decoder) error { return errors.New("invalid: unable to decode GaslessEstimateReq to nil") } var requiredBitSet [1]uint8 + s.setDefaults() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { + case "return_emulation": + if err := func() error { + s.ReturnEmulation.Reset() + if err := s.ReturnEmulation.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"return_emulation\"") + } case "wallet_address": - requiredBitSet[0] |= 1 << 0 + requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Str() s.WalletAddress = string(v) @@ -16334,7 +16771,7 @@ func (s *GaslessEstimateReq) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"wallet_address\"") } case "wallet_public_key": - requiredBitSet[0] |= 1 << 1 + requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Str() s.WalletPublicKey = string(v) @@ -16346,7 +16783,7 @@ func (s *GaslessEstimateReq) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"wallet_public_key\"") } case "messages": - requiredBitSet[0] |= 1 << 2 + requiredBitSet[0] |= 1 << 3 if err := func() error { s.Messages = make([]GaslessEstimateReqMessagesItem, 0) if err := d.Arr(func(d *jx.Decoder) error { @@ -16373,7 +16810,7 @@ func (s *GaslessEstimateReq) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00000111, + 0b00001110, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -16628,6 +17065,102 @@ func (s *GaslessSendReq) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *GaslessTx) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *GaslessTx) encodeFields(e *jx.Encoder) { + { + e.FieldStart("protocol_name") + e.Str(s.ProtocolName) + } +} + +var jsonFieldsNameOfGaslessTx = [1]string{ + 0: "protocol_name", +} + +// Decode decodes GaslessTx from json. +func (s *GaslessTx) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode GaslessTx to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "protocol_name": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.ProtocolName = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"protocol_name\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode GaslessTx") + } + // 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(jsonFieldsNameOfGaslessTx) { + name = jsonFieldsNameOfGaslessTx[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 *GaslessTx) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *GaslessTx) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *GetAccountDiffOK) Encode(e *jx.Encoder) { e.ObjStart() @@ -24298,9 +24831,13 @@ func (s *JettonPreview) encodeFields(e *jx.Encoder) { s.CustomPayloadAPIURI.Encode(e) } } + { + e.FieldStart("score") + e.Int32(s.Score) + } } -var jsonFieldsNameOfJettonPreview = [7]string{ +var jsonFieldsNameOfJettonPreview = [8]string{ 0: "address", 1: "name", 2: "symbol", @@ -24308,6 +24845,7 @@ var jsonFieldsNameOfJettonPreview = [7]string{ 4: "image", 5: "verification", 6: "custom_payload_api_uri", + 7: "score", } // Decode decodes JettonPreview from json. @@ -24399,6 +24937,18 @@ func (s *JettonPreview) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"custom_payload_api_uri\"") } + case "score": + requiredBitSet[0] |= 1 << 7 + if err := func() error { + v, err := d.Int32() + s.Score = int32(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"score\"") + } default: return d.Skip() } @@ -24409,7 +24959,7 @@ func (s *JettonPreview) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00111111, + 0b10111111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -25179,8 +25729,6 @@ func (s *JettonVerificationType) Decode(d *jx.Decoder) error { switch JettonVerificationType(v) { case JettonVerificationTypeWhitelist: *s = JettonVerificationTypeWhitelist - case JettonVerificationTypeGraylist: - *s = JettonVerificationTypeGraylist case JettonVerificationTypeBlacklist: *s = JettonVerificationTypeBlacklist case JettonVerificationTypeNone: @@ -25580,6 +26128,16 @@ func (s *Message) encodeFields(e *jx.Encoder) { e.FieldStart("value") e.Int64(s.Value) } + { + if s.ValueExtra != nil { + e.FieldStart("value_extra") + e.ArrStart() + for _, elem := range s.ValueExtra { + elem.Encode(e) + } + e.ArrEnd() + } + } { e.FieldStart("fwd_fee") e.Int64(s.FwdFee) @@ -25644,25 +26202,26 @@ func (s *Message) encodeFields(e *jx.Encoder) { } } -var jsonFieldsNameOfMessage = [18]string{ +var jsonFieldsNameOfMessage = [19]string{ 0: "msg_type", 1: "created_lt", 2: "ihr_disabled", 3: "bounce", 4: "bounced", 5: "value", - 6: "fwd_fee", - 7: "ihr_fee", - 8: "destination", - 9: "source", - 10: "import_fee", - 11: "created_at", - 12: "op_code", - 13: "init", - 14: "hash", - 15: "raw_body", - 16: "decoded_op_name", - 17: "decoded_body", + 6: "value_extra", + 7: "fwd_fee", + 8: "ihr_fee", + 9: "destination", + 10: "source", + 11: "import_fee", + 12: "created_at", + 13: "op_code", + 14: "init", + 15: "hash", + 16: "raw_body", + 17: "decoded_op_name", + 18: "decoded_body", } // Decode decodes Message from json. @@ -25744,8 +26303,25 @@ func (s *Message) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"value\"") } + case "value_extra": + if err := func() error { + s.ValueExtra = 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.ValueExtra = append(s.ValueExtra, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"value_extra\"") + } case "fwd_fee": - requiredBitSet[0] |= 1 << 6 + requiredBitSet[0] |= 1 << 7 if err := func() error { v, err := d.Int64() s.FwdFee = int64(v) @@ -25757,7 +26333,7 @@ func (s *Message) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"fwd_fee\"") } case "ihr_fee": - requiredBitSet[0] |= 1 << 7 + requiredBitSet[1] |= 1 << 0 if err := func() error { v, err := d.Int64() s.IhrFee = int64(v) @@ -25789,7 +26365,7 @@ func (s *Message) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"source\"") } case "import_fee": - requiredBitSet[1] |= 1 << 2 + requiredBitSet[1] |= 1 << 3 if err := func() error { v, err := d.Int64() s.ImportFee = int64(v) @@ -25801,7 +26377,7 @@ func (s *Message) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"import_fee\"") } case "created_at": - requiredBitSet[1] |= 1 << 3 + requiredBitSet[1] |= 1 << 4 if err := func() error { v, err := d.Int64() s.CreatedAt = int64(v) @@ -25833,7 +26409,7 @@ func (s *Message) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"init\"") } case "hash": - requiredBitSet[1] |= 1 << 6 + requiredBitSet[1] |= 1 << 7 if err := func() error { v, err := d.Str() s.Hash = string(v) @@ -25885,8 +26461,8 @@ func (s *Message) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [3]uint8{ - 0b11111111, - 0b01001100, + 0b10111111, + 0b10011001, 0b00000000, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { @@ -26099,6 +26675,119 @@ func (s *MessageMsgType) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *Method) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Method) encodeFields(e *jx.Encoder) { + { + e.FieldStart("id") + e.Int64(s.ID) + } + { + e.FieldStart("method") + e.Str(s.Method) + } +} + +var jsonFieldsNameOfMethod = [2]string{ + 0: "id", + 1: "method", +} + +// Decode decodes Method from json. +func (s *Method) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Method to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "id": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Int64() + s.ID = int64(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "method": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Method = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"method\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Method") + } + // 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(jsonFieldsNameOfMethod) { + name = jsonFieldsNameOfMethod[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 *Method) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Method) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *MethodExecutionResult) Encode(e *jx.Encoder) { e.ObjStart() @@ -28904,39 +29593,6 @@ func (s *OptBlockCurrencyCollection) UnmarshalJSON(data []byte) error { return s.Decode(d) } -// Encode encodes BlockchainAccountInspectCompiler as json. -func (o OptBlockchainAccountInspectCompiler) Encode(e *jx.Encoder) { - if !o.Set { - return - } - e.Str(string(o.Value)) -} - -// Decode decodes BlockchainAccountInspectCompiler from json. -func (o *OptBlockchainAccountInspectCompiler) Decode(d *jx.Decoder) error { - if o == nil { - return errors.New("invalid: unable to decode OptBlockchainAccountInspectCompiler to nil") - } - o.Set = true - if err := o.Value.Decode(d); err != nil { - return err - } - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s OptBlockchainAccountInspectCompiler) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptBlockchainAccountInspectCompiler) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - // Encode encodes BlockchainConfig10 as json. func (o OptBlockchainConfig10) Encode(e *jx.Encoder) { if !o.Set { @@ -30557,6 +31213,39 @@ func (s *OptEncryptedComment) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes ExtraCurrencyTransferAction as json. +func (o OptExtraCurrencyTransferAction) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes ExtraCurrencyTransferAction from json. +func (o *OptExtraCurrencyTransferAction) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptExtraCurrencyTransferAction to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptExtraCurrencyTransferAction) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptExtraCurrencyTransferAction) 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 { @@ -31124,6 +31813,39 @@ func (s *OptMessage) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes MessageConsequences as json. +func (o OptMessageConsequences) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes MessageConsequences from json. +func (o *OptMessageConsequences) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptMessageConsequences to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptMessageConsequences) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptMessageConsequences) 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 { @@ -31356,6 +32078,40 @@ func (s *OptSale) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes SendBlockchainMessageReqMeta as json. +func (o OptSendBlockchainMessageReqMeta) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes SendBlockchainMessageReqMeta from json. +func (o *OptSendBlockchainMessageReqMeta) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptSendBlockchainMessageReqMeta to nil") + } + o.Set = true + o.Value = make(SendBlockchainMessageReqMeta) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptSendBlockchainMessageReqMeta) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptSendBlockchainMessageReqMeta) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes SmartContractAction as json. func (o OptSmartContractAction) Encode(e *jx.Encoder) { if !o.Set { @@ -31389,6 +32145,39 @@ func (s *OptSmartContractAction) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes Source as json. +func (o OptSource) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes Source from json. +func (o *OptSource) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptSource to nil") + } + o.Set = true + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptSource) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptSource) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes StateInit as json. func (o OptStateInit) Encode(e *jx.Encoder) { if !o.Set { @@ -33792,11 +34581,18 @@ func (s *SendBlockchainMessageReq) encodeFields(e *jx.Encoder) { e.ArrEnd() } } + { + if s.Meta.Set { + e.FieldStart("meta") + s.Meta.Encode(e) + } + } } -var jsonFieldsNameOfSendBlockchainMessageReq = [2]string{ +var jsonFieldsNameOfSendBlockchainMessageReq = [3]string{ 0: "boc", 1: "batch", + 2: "meta", } // Decode decodes SendBlockchainMessageReq from json. @@ -33836,6 +34632,16 @@ func (s *SendBlockchainMessageReq) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"batch\"") } + case "meta": + if err := func() error { + s.Meta.Reset() + if err := s.Meta.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"meta\"") + } default: return d.Skip() } @@ -33860,6 +34666,62 @@ func (s *SendBlockchainMessageReq) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s SendBlockchainMessageReqMeta) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields implements json.Marshaler. +func (s SendBlockchainMessageReqMeta) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) + + e.Str(elem) + } +} + +// Decode decodes SendBlockchainMessageReqMeta from json. +func (s *SendBlockchainMessageReqMeta) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SendBlockchainMessageReqMeta 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 SendBlockchainMessageReqMeta") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s SendBlockchainMessageReqMeta) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SendBlockchainMessageReqMeta) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *SendRawMessageOK) Encode(e *jx.Encoder) { e.ObjStart() @@ -34435,6 +35297,10 @@ func (s *SignRawParams) Encode(e *jx.Encoder) { // encodeFields encodes fields. func (s *SignRawParams) encodeFields(e *jx.Encoder) { + { + e.FieldStart("protocol_name") + e.Str(s.ProtocolName) + } { e.FieldStart("relay_address") e.Str(s.RelayAddress) @@ -34459,14 +35325,22 @@ func (s *SignRawParams) encodeFields(e *jx.Encoder) { } e.ArrEnd() } + { + if s.Emulation.Set { + e.FieldStart("emulation") + s.Emulation.Encode(e) + } + } } -var jsonFieldsNameOfSignRawParams = [5]string{ - 0: "relay_address", - 1: "commission", - 2: "from", - 3: "valid_until", - 4: "messages", +var jsonFieldsNameOfSignRawParams = [7]string{ + 0: "protocol_name", + 1: "relay_address", + 2: "commission", + 3: "from", + 4: "valid_until", + 5: "messages", + 6: "emulation", } // Decode decodes SignRawParams from json. @@ -34478,8 +35352,20 @@ func (s *SignRawParams) Decode(d *jx.Decoder) error { if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { switch string(k) { - case "relay_address": + case "protocol_name": requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.ProtocolName = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"protocol_name\"") + } + case "relay_address": + requiredBitSet[0] |= 1 << 1 if err := func() error { v, err := d.Str() s.RelayAddress = string(v) @@ -34491,7 +35377,7 @@ func (s *SignRawParams) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"relay_address\"") } case "commission": - requiredBitSet[0] |= 1 << 1 + requiredBitSet[0] |= 1 << 2 if err := func() error { v, err := d.Str() s.Commission = string(v) @@ -34503,7 +35389,7 @@ func (s *SignRawParams) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"commission\"") } case "from": - requiredBitSet[0] |= 1 << 2 + requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Str() s.From = string(v) @@ -34515,7 +35401,7 @@ func (s *SignRawParams) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"from\"") } case "valid_until": - requiredBitSet[0] |= 1 << 3 + requiredBitSet[0] |= 1 << 4 if err := func() error { v, err := d.Int64() s.ValidUntil = int64(v) @@ -34527,7 +35413,7 @@ func (s *SignRawParams) Decode(d *jx.Decoder) error { return errors.Wrap(err, "decode field \"valid_until\"") } case "messages": - requiredBitSet[0] |= 1 << 4 + requiredBitSet[0] |= 1 << 5 if err := func() error { s.Messages = make([]SignRawMessage, 0) if err := d.Arr(func(d *jx.Decoder) error { @@ -34544,6 +35430,16 @@ func (s *SignRawParams) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"messages\"") } + case "emulation": + if err := func() error { + s.Emulation.Reset() + if err := s.Emulation.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"emulation\"") + } default: return d.Skip() } @@ -34554,7 +35450,7 @@ func (s *SignRawParams) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00011111, + 0b00111111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. @@ -34992,6 +35888,276 @@ func (s *SmartContractAction) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *Source) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *Source) encodeFields(e *jx.Encoder) { + { + e.FieldStart("files") + e.ArrStart() + for _, elem := range s.Files { + elem.Encode(e) + } + e.ArrEnd() + } +} + +var jsonFieldsNameOfSource = [1]string{ + 0: "files", +} + +// Decode decodes Source from json. +func (s *Source) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Source to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "files": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + s.Files = make([]SourceFile, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem SourceFile + if err := elem.Decode(d); err != nil { + return err + } + s.Files = append(s.Files, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"files\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode Source") + } + // 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(jsonFieldsNameOfSource) { + name = jsonFieldsNameOfSource[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 *Source) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Source) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *SourceFile) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *SourceFile) encodeFields(e *jx.Encoder) { + { + e.FieldStart("name") + e.Str(s.Name) + } + { + e.FieldStart("content") + e.Str(s.Content) + } + { + e.FieldStart("is_entrypoint") + e.Bool(s.IsEntrypoint) + } + { + e.FieldStart("is_std_lib") + e.Bool(s.IsStdLib) + } + { + e.FieldStart("include_in_command") + e.Bool(s.IncludeInCommand) + } +} + +var jsonFieldsNameOfSourceFile = [5]string{ + 0: "name", + 1: "content", + 2: "is_entrypoint", + 3: "is_std_lib", + 4: "include_in_command", +} + +// Decode decodes SourceFile from json. +func (s *SourceFile) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode SourceFile to nil") + } + var requiredBitSet [1]uint8 + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "name": + requiredBitSet[0] |= 1 << 0 + if err := func() error { + v, err := d.Str() + s.Name = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"name\"") + } + case "content": + requiredBitSet[0] |= 1 << 1 + if err := func() error { + v, err := d.Str() + s.Content = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"content\"") + } + case "is_entrypoint": + requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Bool() + s.IsEntrypoint = bool(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"is_entrypoint\"") + } + case "is_std_lib": + requiredBitSet[0] |= 1 << 3 + if err := func() error { + v, err := d.Bool() + s.IsStdLib = bool(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"is_std_lib\"") + } + case "include_in_command": + requiredBitSet[0] |= 1 << 4 + if err := func() error { + v, err := d.Bool() + s.IncludeInCommand = bool(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"include_in_command\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode SourceFile") + } + // 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(jsonFieldsNameOfSourceFile) { + name = jsonFieldsNameOfSourceFile[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 *SourceFile) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *SourceFile) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode implements json.Marshaler. func (s *StateInit) Encode(e *jx.Encoder) { e.ObjStart() @@ -39212,16 +40378,21 @@ func (s *ValueFlowJettonsItem) encodeFields(e *jx.Encoder) { e.FieldStart("jetton") s.Jetton.Encode(e) } + { + e.FieldStart("qty") + e.Str(s.Qty) + } { e.FieldStart("quantity") e.Int64(s.Quantity) } } -var jsonFieldsNameOfValueFlowJettonsItem = [3]string{ +var jsonFieldsNameOfValueFlowJettonsItem = [4]string{ 0: "account", 1: "jetton", - 2: "quantity", + 2: "qty", + 3: "quantity", } // Decode decodes ValueFlowJettonsItem from json. @@ -39253,8 +40424,20 @@ func (s *ValueFlowJettonsItem) Decode(d *jx.Decoder) error { }(); err != nil { return errors.Wrap(err, "decode field \"jetton\"") } - case "quantity": + case "qty": requiredBitSet[0] |= 1 << 2 + if err := func() error { + v, err := d.Str() + s.Qty = string(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"qty\"") + } + case "quantity": + requiredBitSet[0] |= 1 << 3 if err := func() error { v, err := d.Int64() s.Quantity = int64(v) @@ -39275,7 +40458,7 @@ func (s *ValueFlowJettonsItem) Decode(d *jx.Decoder) error { // Validate required fields. var failures []validate.FieldError for i, mask := range [1]uint8{ - 0b00000111, + 0b00001111, } { if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { // Mask only required fields and check equality to mask using XOR. diff --git a/oas_operations_gen.go b/oas_operations_gen.go index 11a5ab7..5152980 100644 --- a/oas_operations_gen.go +++ b/oas_operations_gen.go @@ -24,6 +24,7 @@ const ( GetAccountDnsExpiringOperation OperationName = "GetAccountDnsExpiring" GetAccountEventOperation OperationName = "GetAccountEvent" GetAccountEventsOperation OperationName = "GetAccountEvents" + GetAccountExtraCurrencyHistoryByIDOperation OperationName = "GetAccountExtraCurrencyHistoryByID" GetAccountInfoByStateInitOperation OperationName = "GetAccountInfoByStateInit" GetAccountInscriptionsOperation OperationName = "GetAccountInscriptions" GetAccountInscriptionsHistoryOperation OperationName = "GetAccountInscriptionsHistory" @@ -60,6 +61,7 @@ const ( GetDnsInfoOperation OperationName = "GetDnsInfo" GetDomainBidsOperation OperationName = "GetDomainBids" GetEventOperation OperationName = "GetEvent" + GetExtraCurrencyInfoOperation OperationName = "GetExtraCurrencyInfo" GetInscriptionOpTemplateOperation OperationName = "GetInscriptionOpTemplate" GetItemsFromCollectionOperation OperationName = "GetItemsFromCollection" GetJettonHoldersOperation OperationName = "GetJettonHolders" @@ -76,6 +78,8 @@ const ( GetNftHistoryByIDOperation OperationName = "GetNftHistoryByID" GetNftItemByAddressOperation OperationName = "GetNftItemByAddress" GetNftItemsByAddressesOperation OperationName = "GetNftItemsByAddresses" + GetOpenapiJsonOperation OperationName = "GetOpenapiJson" + GetOpenapiYmlOperation OperationName = "GetOpenapiYml" GetOutMsgQueueSizesOperation OperationName = "GetOutMsgQueueSizes" GetRatesOperation OperationName = "GetRates" GetRawAccountStateOperation OperationName = "GetRawAccountState" diff --git a/oas_parameters_gen.go b/oas_parameters_gen.go index 497df90..3b6b9d0 100644 --- a/oas_parameters_gen.go +++ b/oas_parameters_gen.go @@ -61,6 +61,7 @@ type ExecGetMethodForBlockchainAccountParams struct { // GaslessEstimateParams is parameters of gaslessEstimate operation. type GaslessEstimateParams struct { + AcceptLanguage OptString // Jetton to pay commission. MasterID string } @@ -114,6 +115,20 @@ type GetAccountEventsParams struct { EndDate OptInt64 } +// GetAccountExtraCurrencyHistoryByIDParams is parameters of getAccountExtraCurrencyHistoryByID operation. +type GetAccountExtraCurrencyHistoryByIDParams struct { + // Account ID. + AccountID string + // Extra currency id. + ID int32 + AcceptLanguage OptString + // Omit this parameter to get last events. + BeforeLt OptInt64 + Limit int + StartDate OptInt64 + EndDate OptInt64 +} + // GetAccountInscriptionsParams is parameters of getAccountInscriptions operation. type GetAccountInscriptionsParams struct { // Account ID. @@ -367,9 +382,16 @@ type GetEventParams struct { AcceptLanguage OptString } +// GetExtraCurrencyInfoParams is parameters of getExtraCurrencyInfo operation. +type GetExtraCurrencyInfoParams struct { + // Extra currency id. + ID int32 +} + // GetInscriptionOpTemplateParams is parameters of getInscriptionOpTemplate operation. type GetInscriptionOpTemplateParams struct { - Operation Operation + // Masterchain block seqno. + Operation InscriptionOperation Type GetInscriptionOpTemplateType Destination OptString Comment OptString diff --git a/oas_response_decoders_gen.go b/oas_response_decoders_gen.go index ef92ade..4a7ed50 100644 --- a/oas_response_decoders_gen.go +++ b/oas_response_decoders_gen.go @@ -3,6 +3,7 @@ package tonapi import ( + "bytes" "io" "mime" "net/http" @@ -1109,11 +1110,43 @@ func decodeGaslessEstimateResponse(resp *http.Response) (res *SignRawParams, _ e return res, errors.Wrap(defRes, "error") } -func decodeGaslessSendResponse(resp *http.Response) (res *GaslessSendOK, _ error) { +func decodeGaslessSendResponse(resp *http.Response) (res *GaslessTx, _ error) { switch resp.StatusCode { case 200: // Code 200. - return &GaslessSendOK{}, nil + 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 GaslessTx + 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 &response, nil + default: + return res, validate.InvalidContentType(ct) + } } // Convenient error response. defRes, err := func() (res *ErrorStatusCode, err error) { @@ -1611,6 +1644,98 @@ func decodeGetAccountEventsResponse(resp *http.Response) (res *AccountEvents, _ return res, errors.Wrap(defRes, "error") } +func decodeGetAccountExtraCurrencyHistoryByIDResponse(resp *http.Response) (res *AccountEvents, _ 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 AccountEvents + 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 decodeGetAccountInfoByStateInitResponse(resp *http.Response) (res *AccountInfoByStateInit, _ error) { switch resp.StatusCode { case 200: @@ -4887,6 +5012,89 @@ func decodeGetEventResponse(resp *http.Response) (res *Event, _ error) { return res, errors.Wrap(defRes, "error") } +func decodeGetExtraCurrencyInfoResponse(resp *http.Response) (res *EcPreview, _ 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 EcPreview + 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 &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 decodeGetInscriptionOpTemplateResponse(resp *http.Response) (res *GetInscriptionOpTemplateOK, _ error) { switch resp.StatusCode { case 200: @@ -6341,6 +6549,158 @@ func decodeGetNftItemsByAddressesResponse(resp *http.Response) (res *NftItems, _ 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 + } + + response := GetOpenapiYmlOK{Data: bytes.NewReader(b)} + 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 decodeGetOutMsgQueueSizesResponse(resp *http.Response) (res *GetOutMsgQueueSizesOK, _ error) { switch resp.StatusCode { case 200: diff --git a/oas_schemas_gen.go b/oas_schemas_gen.go index 7524151..0b5b6c2 100644 --- a/oas_schemas_gen.go +++ b/oas_schemas_gen.go @@ -4,6 +4,7 @@ package tonapi import ( "fmt" + "io" "github.com/go-faster/errors" "github.com/go-faster/jx" @@ -64,8 +65,9 @@ func (s *AccStatusChange) UnmarshalText(data []byte) error { // Ref: #/components/schemas/Account type Account struct { - Address string `json:"address"` - Balance int64 `json:"balance"` + Address string `json:"address"` + Balance int64 `json:"balance"` + ExtraBalance []ExtraCurrency `json:"extra_balance"` // {'USD': 1, 'IDR': 1000}. CurrenciesBalance OptAccountCurrenciesBalance `json:"currencies_balance"` // Unix timestamp. @@ -91,6 +93,11 @@ func (s *Account) GetBalance() int64 { return s.Balance } +// GetExtraBalance returns the value of ExtraBalance. +func (s *Account) GetExtraBalance() []ExtraCurrency { + return s.ExtraBalance +} + // GetCurrenciesBalance returns the value of CurrenciesBalance. func (s *Account) GetCurrenciesBalance() OptAccountCurrenciesBalance { return s.CurrenciesBalance @@ -156,6 +163,11 @@ func (s *Account) SetBalance(val int64) { s.Balance = val } +// SetExtraBalance sets the value of ExtraBalance. +func (s *Account) SetExtraBalance(val []ExtraCurrency) { + s.ExtraBalance = val +} + // SetCurrenciesBalance sets the value of CurrenciesBalance. func (s *Account) SetCurrenciesBalance(val OptAccountCurrenciesBalance) { s.CurrenciesBalance = val @@ -647,6 +659,7 @@ type Action struct { Type ActionType `json:"type"` Status ActionStatus `json:"status"` TonTransfer OptTonTransferAction `json:"TonTransfer"` + ExtraCurrencyTransfer OptExtraCurrencyTransferAction `json:"ExtraCurrencyTransfer"` ContractDeploy OptContractDeployAction `json:"ContractDeploy"` JettonTransfer OptJettonTransferAction `json:"JettonTransfer"` JettonBurn OptJettonBurnAction `json:"JettonBurn"` @@ -685,6 +698,11 @@ func (s *Action) GetTonTransfer() OptTonTransferAction { return s.TonTransfer } +// GetExtraCurrencyTransfer returns the value of ExtraCurrencyTransfer. +func (s *Action) GetExtraCurrencyTransfer() OptExtraCurrencyTransferAction { + return s.ExtraCurrencyTransfer +} + // GetContractDeploy returns the value of ContractDeploy. func (s *Action) GetContractDeploy() OptContractDeployAction { return s.ContractDeploy @@ -805,6 +823,11 @@ func (s *Action) SetTonTransfer(val OptTonTransferAction) { s.TonTransfer = val } +// SetExtraCurrencyTransfer sets the value of ExtraCurrencyTransfer. +func (s *Action) SetExtraCurrencyTransfer(val OptExtraCurrencyTransferAction) { + s.ExtraCurrencyTransfer = val +} + // SetContractDeploy sets the value of ContractDeploy. func (s *Action) SetContractDeploy(val OptContractDeployAction) { s.ContractDeploy = val @@ -1109,6 +1132,7 @@ type ActionType string const ( ActionTypeTonTransfer ActionType = "TonTransfer" + ActionTypeExtraCurrencyTransfer ActionType = "ExtraCurrencyTransfer" ActionTypeJettonTransfer ActionType = "JettonTransfer" ActionTypeJettonBurn ActionType = "JettonBurn" ActionTypeJettonMint ActionType = "JettonMint" @@ -1135,6 +1159,7 @@ const ( func (ActionType) AllValues() []ActionType { return []ActionType{ ActionTypeTonTransfer, + ActionTypeExtraCurrencyTransfer, ActionTypeJettonTransfer, ActionTypeJettonBurn, ActionTypeJettonMint, @@ -1163,6 +1188,8 @@ func (s ActionType) MarshalText() ([]byte, error) { switch s { case ActionTypeTonTransfer: return []byte(s), nil + case ActionTypeExtraCurrencyTransfer: + return []byte(s), nil case ActionTypeJettonTransfer: return []byte(s), nil case ActionTypeJettonBurn: @@ -1214,6 +1241,9 @@ func (s *ActionType) UnmarshalText(data []byte) error { case ActionTypeTonTransfer: *s = ActionTypeTonTransfer return nil + case ActionTypeExtraCurrencyTransfer: + *s = ActionTypeExtraCurrencyTransfer + return nil case ActionTypeJettonTransfer: *s = ActionTypeJettonTransfer return nil @@ -1926,10 +1956,12 @@ func (s *BlockValueFlow) SetMinted(val BlockCurrencyCollection) { // Ref: #/components/schemas/BlockchainAccountInspect type BlockchainAccountInspect struct { - Code string `json:"code"` - CodeHash string `json:"code_hash"` - Methods []BlockchainAccountInspectMethodsItem `json:"methods"` - Compiler OptBlockchainAccountInspectCompiler `json:"compiler"` + Code string `json:"code"` + DisassembledCode OptString `json:"disassembled_code"` + CodeHash string `json:"code_hash"` + Methods []Method `json:"methods"` + Compiler BlockchainAccountInspectCompiler `json:"compiler"` + Source OptSource `json:"source"` } // GetCode returns the value of Code. @@ -1937,51 +1969,75 @@ func (s *BlockchainAccountInspect) GetCode() string { return s.Code } +// GetDisassembledCode returns the value of DisassembledCode. +func (s *BlockchainAccountInspect) GetDisassembledCode() OptString { + return s.DisassembledCode +} + // GetCodeHash returns the value of CodeHash. func (s *BlockchainAccountInspect) GetCodeHash() string { return s.CodeHash } // GetMethods returns the value of Methods. -func (s *BlockchainAccountInspect) GetMethods() []BlockchainAccountInspectMethodsItem { +func (s *BlockchainAccountInspect) GetMethods() []Method { return s.Methods } // GetCompiler returns the value of Compiler. -func (s *BlockchainAccountInspect) GetCompiler() OptBlockchainAccountInspectCompiler { +func (s *BlockchainAccountInspect) GetCompiler() BlockchainAccountInspectCompiler { return s.Compiler } +// GetSource returns the value of Source. +func (s *BlockchainAccountInspect) GetSource() OptSource { + return s.Source +} + // SetCode sets the value of Code. func (s *BlockchainAccountInspect) SetCode(val string) { s.Code = val } +// SetDisassembledCode sets the value of DisassembledCode. +func (s *BlockchainAccountInspect) SetDisassembledCode(val OptString) { + s.DisassembledCode = val +} + // SetCodeHash sets the value of CodeHash. func (s *BlockchainAccountInspect) SetCodeHash(val string) { s.CodeHash = val } // SetMethods sets the value of Methods. -func (s *BlockchainAccountInspect) SetMethods(val []BlockchainAccountInspectMethodsItem) { +func (s *BlockchainAccountInspect) SetMethods(val []Method) { s.Methods = val } // SetCompiler sets the value of Compiler. -func (s *BlockchainAccountInspect) SetCompiler(val OptBlockchainAccountInspectCompiler) { +func (s *BlockchainAccountInspect) SetCompiler(val BlockchainAccountInspectCompiler) { s.Compiler = val } +// SetSource sets the value of Source. +func (s *BlockchainAccountInspect) SetSource(val OptSource) { + s.Source = val +} + type BlockchainAccountInspectCompiler string const ( BlockchainAccountInspectCompilerFunc BlockchainAccountInspectCompiler = "func" + BlockchainAccountInspectCompilerFift BlockchainAccountInspectCompiler = "fift" + BlockchainAccountInspectCompilerTact BlockchainAccountInspectCompiler = "tact" ) // AllValues returns all BlockchainAccountInspectCompiler values. func (BlockchainAccountInspectCompiler) AllValues() []BlockchainAccountInspectCompiler { return []BlockchainAccountInspectCompiler{ BlockchainAccountInspectCompilerFunc, + BlockchainAccountInspectCompilerFift, + BlockchainAccountInspectCompilerTact, } } @@ -1990,6 +2046,10 @@ func (s BlockchainAccountInspectCompiler) MarshalText() ([]byte, error) { switch s { case BlockchainAccountInspectCompilerFunc: return []byte(s), nil + case BlockchainAccountInspectCompilerFift: + return []byte(s), nil + case BlockchainAccountInspectCompilerTact: + return []byte(s), nil default: return nil, errors.Errorf("invalid value: %q", s) } @@ -2001,36 +2061,17 @@ func (s *BlockchainAccountInspectCompiler) UnmarshalText(data []byte) error { case BlockchainAccountInspectCompilerFunc: *s = BlockchainAccountInspectCompilerFunc return nil + case BlockchainAccountInspectCompilerFift: + *s = BlockchainAccountInspectCompilerFift + return nil + case BlockchainAccountInspectCompilerTact: + *s = BlockchainAccountInspectCompilerTact + return nil default: return errors.Errorf("invalid value: %q", data) } } -type BlockchainAccountInspectMethodsItem struct { - ID int64 `json:"id"` - Method string `json:"method"` -} - -// GetID returns the value of ID. -func (s *BlockchainAccountInspectMethodsItem) GetID() int64 { - return s.ID -} - -// GetMethod returns the value of Method. -func (s *BlockchainAccountInspectMethodsItem) GetMethod() string { - return s.Method -} - -// SetID sets the value of ID. -func (s *BlockchainAccountInspectMethodsItem) SetID(val int64) { - s.ID = val -} - -// SetMethod sets the value of Method. -func (s *BlockchainAccountInspectMethodsItem) SetMethod(val string) { - s.Method = val -} - // Ref: #/components/schemas/BlockchainBlock type BlockchainBlock struct { TxQuantity int `json:"tx_quantity"` @@ -5114,6 +5155,54 @@ func (s *DomainRenewAction) SetRenewer(val AccountAddress) { s.Renewer = val } +// Ref: #/components/schemas/EcPreview +type EcPreview struct { + ID int32 `json:"id"` + Symbol string `json:"symbol"` + Decimals int `json:"decimals"` + Image string `json:"image"` +} + +// GetID returns the value of ID. +func (s *EcPreview) GetID() int32 { + return s.ID +} + +// GetSymbol returns the value of Symbol. +func (s *EcPreview) GetSymbol() string { + return s.Symbol +} + +// GetDecimals returns the value of Decimals. +func (s *EcPreview) GetDecimals() int { + return s.Decimals +} + +// GetImage returns the value of Image. +func (s *EcPreview) GetImage() string { + return s.Image +} + +// SetID sets the value of ID. +func (s *EcPreview) SetID(val int32) { + s.ID = val +} + +// SetSymbol sets the value of Symbol. +func (s *EcPreview) SetSymbol(val string) { + s.Symbol = val +} + +// SetDecimals sets the value of Decimals. +func (s *EcPreview) SetDecimals(val int) { + s.Decimals = val +} + +// SetImage sets the value of Image. +func (s *EcPreview) SetImage(val string) { + s.Image = val +} + // Ref: #/components/schemas/ElectionsDepositStakeAction type ElectionsDepositStakeAction struct { Amount int64 `json:"amount"` @@ -5419,6 +5508,103 @@ func (s *Event) SetInProgress(val bool) { s.InProgress = val } +// Ref: #/components/schemas/ExtraCurrency +type ExtraCurrency struct { + Amount string `json:"amount"` + Preview EcPreview `json:"preview"` +} + +// GetAmount returns the value of Amount. +func (s *ExtraCurrency) GetAmount() string { + return s.Amount +} + +// GetPreview returns the value of Preview. +func (s *ExtraCurrency) GetPreview() EcPreview { + return s.Preview +} + +// SetAmount sets the value of Amount. +func (s *ExtraCurrency) SetAmount(val string) { + s.Amount = val +} + +// SetPreview sets the value of Preview. +func (s *ExtraCurrency) SetPreview(val EcPreview) { + s.Preview = val +} + +// Ref: #/components/schemas/ExtraCurrencyTransferAction +type ExtraCurrencyTransferAction struct { + Sender AccountAddress `json:"sender"` + Recipient AccountAddress `json:"recipient"` + // Amount in quanta of tokens. + Amount string `json:"amount"` + Comment OptString `json:"comment"` + EncryptedComment OptEncryptedComment `json:"encrypted_comment"` + Currency EcPreview `json:"currency"` +} + +// GetSender returns the value of Sender. +func (s *ExtraCurrencyTransferAction) GetSender() AccountAddress { + return s.Sender +} + +// GetRecipient returns the value of Recipient. +func (s *ExtraCurrencyTransferAction) GetRecipient() AccountAddress { + return s.Recipient +} + +// GetAmount returns the value of Amount. +func (s *ExtraCurrencyTransferAction) GetAmount() string { + return s.Amount +} + +// GetComment returns the value of Comment. +func (s *ExtraCurrencyTransferAction) GetComment() OptString { + return s.Comment +} + +// GetEncryptedComment returns the value of EncryptedComment. +func (s *ExtraCurrencyTransferAction) GetEncryptedComment() OptEncryptedComment { + return s.EncryptedComment +} + +// GetCurrency returns the value of Currency. +func (s *ExtraCurrencyTransferAction) GetCurrency() EcPreview { + return s.Currency +} + +// SetSender sets the value of Sender. +func (s *ExtraCurrencyTransferAction) SetSender(val AccountAddress) { + s.Sender = val +} + +// SetRecipient sets the value of Recipient. +func (s *ExtraCurrencyTransferAction) SetRecipient(val AccountAddress) { + s.Recipient = val +} + +// SetAmount sets the value of Amount. +func (s *ExtraCurrencyTransferAction) SetAmount(val string) { + s.Amount = val +} + +// SetComment sets the value of Comment. +func (s *ExtraCurrencyTransferAction) SetComment(val OptString) { + s.Comment = val +} + +// SetEncryptedComment sets the value of EncryptedComment. +func (s *ExtraCurrencyTransferAction) SetEncryptedComment(val OptEncryptedComment) { + s.EncryptedComment = val +} + +// SetCurrency sets the value of Currency. +func (s *ExtraCurrencyTransferAction) SetCurrency(val EcPreview) { + s.Currency = val +} + // Ref: #/components/schemas/FoundAccounts type FoundAccounts struct { Addresses []FoundAccountsAddressesItem `json:"addresses"` @@ -5435,9 +5621,10 @@ func (s *FoundAccounts) SetAddresses(val []FoundAccountsAddressesItem) { } type FoundAccountsAddressesItem struct { - Address string `json:"address"` - Name string `json:"name"` - Preview string `json:"preview"` + Address string `json:"address"` + Name string `json:"name"` + Preview string `json:"preview"` + Trust TrustType `json:"trust"` } // GetAddress returns the value of Address. @@ -5455,6 +5642,11 @@ func (s *FoundAccountsAddressesItem) GetPreview() string { return s.Preview } +// GetTrust returns the value of Trust. +func (s *FoundAccountsAddressesItem) GetTrust() TrustType { + return s.Trust +} + // SetAddress sets the value of Address. func (s *FoundAccountsAddressesItem) SetAddress(val string) { s.Address = val @@ -5470,6 +5662,11 @@ func (s *FoundAccountsAddressesItem) SetPreview(val string) { s.Preview = val } +// SetTrust sets the value of Trust. +func (s *FoundAccountsAddressesItem) SetTrust(val TrustType) { + s.Trust = val +} + // Ref: #/components/schemas/GasLimitPrices type GasLimitPrices struct { SpecialGasLimit OptInt64 `json:"special_gas_limit"` @@ -5616,11 +5813,17 @@ func (s *GaslessConfigGasJettonsItem) SetMasterID(val string) { } type GaslessEstimateReq struct { + ReturnEmulation OptBool `json:"return_emulation"` WalletAddress string `json:"wallet_address"` WalletPublicKey string `json:"wallet_public_key"` Messages []GaslessEstimateReqMessagesItem `json:"messages"` } +// GetReturnEmulation returns the value of ReturnEmulation. +func (s *GaslessEstimateReq) GetReturnEmulation() OptBool { + return s.ReturnEmulation +} + // GetWalletAddress returns the value of WalletAddress. func (s *GaslessEstimateReq) GetWalletAddress() string { return s.WalletAddress @@ -5636,6 +5839,11 @@ func (s *GaslessEstimateReq) GetMessages() []GaslessEstimateReqMessagesItem { return s.Messages } +// SetReturnEmulation sets the value of ReturnEmulation. +func (s *GaslessEstimateReq) SetReturnEmulation(val OptBool) { + s.ReturnEmulation = val +} + // SetWalletAddress sets the value of WalletAddress. func (s *GaslessEstimateReq) SetWalletAddress(val string) { s.WalletAddress = val @@ -5665,9 +5873,6 @@ func (s *GaslessEstimateReqMessagesItem) SetBoc(val string) { s.Boc = val } -// GaslessSendOK is response for GaslessSend operation. -type GaslessSendOK struct{} - type GaslessSendReq struct { // Hex encoded public key. WalletPublicKey string `json:"wallet_public_key"` @@ -5694,6 +5899,21 @@ func (s *GaslessSendReq) SetBoc(val string) { s.Boc = val } +// Ref: #/components/schemas/GaslessTx +type GaslessTx struct { + ProtocolName string `json:"protocol_name"` +} + +// GetProtocolName returns the value of ProtocolName. +func (s *GaslessTx) GetProtocolName() string { + return s.ProtocolName +} + +// SetProtocolName sets the value of ProtocolName. +func (s *GaslessTx) SetProtocolName(val string) { + s.ProtocolName = val +} + type GetAccountDiffOK struct { BalanceChange int64 `json:"balance_change"` } @@ -5964,6 +6184,20 @@ func (s *GetNftItemsByAddressesReq) SetAccountIds(val []string) { s.AccountIds = val } +type GetOpenapiYmlOK struct { + Data io.Reader +} + +// Read reads data from the Data reader. +// +// Kept to satisfy the io.Reader interface. +func (s GetOpenapiYmlOK) Read(p []byte) (n int, err error) { + if s.Data == nil { + return 0, io.EOF + } + return s.Data.Read(p) +} + type GetOutMsgQueueSizesOK struct { ExtMsgQueueSizeLimit uint32 `json:"ext_msg_queue_size_limit"` Shards []GetOutMsgQueueSizesOKShardsItem `json:"shards"` @@ -7262,6 +7496,40 @@ func (s *InscriptionMintActionType) UnmarshalText(data []byte) error { } } +type InscriptionOperation string + +const ( + InscriptionOperationTransfer InscriptionOperation = "transfer" +) + +// AllValues returns all InscriptionOperation values. +func (InscriptionOperation) AllValues() []InscriptionOperation { + return []InscriptionOperation{ + InscriptionOperationTransfer, + } +} + +// MarshalText implements encoding.TextMarshaler. +func (s InscriptionOperation) MarshalText() ([]byte, error) { + switch s { + case InscriptionOperationTransfer: + return []byte(s), nil + default: + return nil, errors.Errorf("invalid value: %q", s) + } +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (s *InscriptionOperation) UnmarshalText(data []byte) error { + switch InscriptionOperation(data) { + case InscriptionOperationTransfer: + *s = InscriptionOperationTransfer + return nil + default: + return errors.Errorf("invalid value: %q", data) + } +} + // Ref: #/components/schemas/InscriptionTransferAction type InscriptionTransferAction struct { Sender AccountAddress `json:"sender"` @@ -8000,6 +8268,7 @@ type JettonPreview struct { 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. @@ -8037,6 +8306,11 @@ func (s *JettonPreview) GetCustomPayloadAPIURI() OptString { return s.CustomPayloadAPIURI } +// GetScore returns the value of Score. +func (s *JettonPreview) GetScore() int32 { + return s.Score +} + // SetAddress sets the value of Address. func (s *JettonPreview) SetAddress(val string) { s.Address = val @@ -8072,6 +8346,11 @@ func (s *JettonPreview) SetCustomPayloadAPIURI(val OptString) { s.CustomPayloadAPIURI = val } +// SetScore sets the value of Score. +func (s *JettonPreview) SetScore(val int32) { + s.Score = val +} + // Ref: #/components/schemas/JettonQuantity type JettonQuantity struct { Quantity string `json:"quantity"` @@ -8397,7 +8676,6 @@ type JettonVerificationType string const ( JettonVerificationTypeWhitelist JettonVerificationType = "whitelist" - JettonVerificationTypeGraylist JettonVerificationType = "graylist" JettonVerificationTypeBlacklist JettonVerificationType = "blacklist" JettonVerificationTypeNone JettonVerificationType = "none" ) @@ -8406,7 +8684,6 @@ const ( func (JettonVerificationType) AllValues() []JettonVerificationType { return []JettonVerificationType{ JettonVerificationTypeWhitelist, - JettonVerificationTypeGraylist, JettonVerificationTypeBlacklist, JettonVerificationTypeNone, } @@ -8417,8 +8694,6 @@ func (s JettonVerificationType) MarshalText() ([]byte, error) { switch s { case JettonVerificationTypeWhitelist: return []byte(s), nil - case JettonVerificationTypeGraylist: - return []byte(s), nil case JettonVerificationTypeBlacklist: return []byte(s), nil case JettonVerificationTypeNone: @@ -8434,9 +8709,6 @@ func (s *JettonVerificationType) UnmarshalText(data []byte) error { case JettonVerificationTypeWhitelist: *s = JettonVerificationTypeWhitelist return nil - case JettonVerificationTypeGraylist: - *s = JettonVerificationTypeGraylist - return nil case JettonVerificationTypeBlacklist: *s = JettonVerificationTypeBlacklist return nil @@ -8523,6 +8795,7 @@ type Message struct { Bounce bool `json:"bounce"` Bounced bool `json:"bounced"` Value int64 `json:"value"` + ValueExtra []ExtraCurrency `json:"value_extra"` FwdFee int64 `json:"fwd_fee"` IhrFee int64 `json:"ihr_fee"` Destination OptAccountAddress `json:"destination"` @@ -8568,6 +8841,11 @@ func (s *Message) GetValue() int64 { return s.Value } +// GetValueExtra returns the value of ValueExtra. +func (s *Message) GetValueExtra() []ExtraCurrency { + return s.ValueExtra +} + // GetFwdFee returns the value of FwdFee. func (s *Message) GetFwdFee() int64 { return s.FwdFee @@ -8658,6 +8936,11 @@ func (s *Message) SetValue(val int64) { s.Value = val } +// SetValueExtra sets the value of ValueExtra. +func (s *Message) SetValueExtra(val []ExtraCurrency) { + s.ValueExtra = val +} + // SetFwdFee sets the value of FwdFee. func (s *Message) SetFwdFee(val int64) { s.FwdFee = val @@ -8803,6 +9086,32 @@ func (s *MessageMsgType) UnmarshalText(data []byte) error { } } +// Ref: #/components/schemas/Method +type Method struct { + ID int64 `json:"id"` + Method string `json:"method"` +} + +// GetID returns the value of ID. +func (s *Method) GetID() int64 { + return s.ID +} + +// GetMethod returns the value of Method. +func (s *Method) GetMethod() string { + return s.Method +} + +// SetID sets the value of ID. +func (s *Method) SetID(val int64) { + s.ID = val +} + +// SetMethod sets the value of Method. +func (s *Method) SetMethod(val string) { + s.Method = val +} + // Ref: #/components/schemas/MethodExecutionResult type MethodExecutionResult struct { Success bool `json:"success"` @@ -9792,40 +10101,6 @@ func (s *NftPurchaseActionAuctionType) UnmarshalText(data []byte) error { } } -type Operation string - -const ( - OperationTransfer Operation = "transfer" -) - -// AllValues returns all Operation values. -func (Operation) AllValues() []Operation { - return []Operation{ - OperationTransfer, - } -} - -// MarshalText implements encoding.TextMarshaler. -func (s Operation) MarshalText() ([]byte, error) { - switch s { - case OperationTransfer: - return []byte(s), nil - default: - return nil, errors.Errorf("invalid value: %q", s) - } -} - -// UnmarshalText implements encoding.TextUnmarshaler. -func (s *Operation) UnmarshalText(data []byte) error { - switch Operation(data) { - case OperationTransfer: - *s = OperationTransfer - return nil - default: - return errors.Errorf("invalid value: %q", data) - } -} - // NewOptAccountAddress returns new OptAccountAddress with value set to v. func NewOptAccountAddress(v AccountAddress) OptAccountAddress { return OptAccountAddress{ @@ -10056,52 +10331,6 @@ func (o OptBlockCurrencyCollection) Or(d BlockCurrencyCollection) BlockCurrencyC return d } -// NewOptBlockchainAccountInspectCompiler returns new OptBlockchainAccountInspectCompiler with value set to v. -func NewOptBlockchainAccountInspectCompiler(v BlockchainAccountInspectCompiler) OptBlockchainAccountInspectCompiler { - return OptBlockchainAccountInspectCompiler{ - Value: v, - Set: true, - } -} - -// OptBlockchainAccountInspectCompiler is optional BlockchainAccountInspectCompiler. -type OptBlockchainAccountInspectCompiler struct { - Value BlockchainAccountInspectCompiler - Set bool -} - -// IsSet returns true if OptBlockchainAccountInspectCompiler was set. -func (o OptBlockchainAccountInspectCompiler) IsSet() bool { return o.Set } - -// Reset unsets value. -func (o *OptBlockchainAccountInspectCompiler) Reset() { - var v BlockchainAccountInspectCompiler - o.Value = v - o.Set = false -} - -// SetTo sets value to v. -func (o *OptBlockchainAccountInspectCompiler) SetTo(v BlockchainAccountInspectCompiler) { - o.Set = true - o.Value = v -} - -// Get returns value and boolean that denotes whether value was set. -func (o OptBlockchainAccountInspectCompiler) Get() (v BlockchainAccountInspectCompiler, 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 OptBlockchainAccountInspectCompiler) Or(d BlockchainAccountInspectCompiler) BlockchainAccountInspectCompiler { - if v, ok := o.Get(); ok { - return v - } - return d -} - // NewOptBlockchainConfig10 returns new OptBlockchainConfig10 with value set to v. func NewOptBlockchainConfig10(v BlockchainConfig10) OptBlockchainConfig10 { return OptBlockchainConfig10{ @@ -12356,6 +12585,52 @@ func (o OptEncryptedComment) Or(d EncryptedComment) EncryptedComment { return d } +// NewOptExtraCurrencyTransferAction returns new OptExtraCurrencyTransferAction with value set to v. +func NewOptExtraCurrencyTransferAction(v ExtraCurrencyTransferAction) OptExtraCurrencyTransferAction { + return OptExtraCurrencyTransferAction{ + Value: v, + Set: true, + } +} + +// OptExtraCurrencyTransferAction is optional ExtraCurrencyTransferAction. +type OptExtraCurrencyTransferAction struct { + Value ExtraCurrencyTransferAction + Set bool +} + +// IsSet returns true if OptExtraCurrencyTransferAction was set. +func (o OptExtraCurrencyTransferAction) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptExtraCurrencyTransferAction) Reset() { + var v ExtraCurrencyTransferAction + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptExtraCurrencyTransferAction) SetTo(v ExtraCurrencyTransferAction) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptExtraCurrencyTransferAction) Get() (v ExtraCurrencyTransferAction, 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 OptExtraCurrencyTransferAction) Or(d ExtraCurrencyTransferAction) ExtraCurrencyTransferAction { + 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{ @@ -13184,6 +13459,52 @@ func (o OptMessage) Or(d Message) Message { return d } +// NewOptMessageConsequences returns new OptMessageConsequences with value set to v. +func NewOptMessageConsequences(v MessageConsequences) OptMessageConsequences { + return OptMessageConsequences{ + Value: v, + Set: true, + } +} + +// OptMessageConsequences is optional MessageConsequences. +type OptMessageConsequences struct { + Value MessageConsequences + Set bool +} + +// IsSet returns true if OptMessageConsequences was set. +func (o OptMessageConsequences) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptMessageConsequences) Reset() { + var v MessageConsequences + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptMessageConsequences) SetTo(v MessageConsequences) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptMessageConsequences) Get() (v MessageConsequences, 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 OptMessageConsequences) Or(d MessageConsequences) MessageConsequences { + 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{ @@ -13506,6 +13827,52 @@ func (o OptSale) Or(d Sale) Sale { return d } +// NewOptSendBlockchainMessageReqMeta returns new OptSendBlockchainMessageReqMeta with value set to v. +func NewOptSendBlockchainMessageReqMeta(v SendBlockchainMessageReqMeta) OptSendBlockchainMessageReqMeta { + return OptSendBlockchainMessageReqMeta{ + Value: v, + Set: true, + } +} + +// OptSendBlockchainMessageReqMeta is optional SendBlockchainMessageReqMeta. +type OptSendBlockchainMessageReqMeta struct { + Value SendBlockchainMessageReqMeta + Set bool +} + +// IsSet returns true if OptSendBlockchainMessageReqMeta was set. +func (o OptSendBlockchainMessageReqMeta) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptSendBlockchainMessageReqMeta) Reset() { + var v SendBlockchainMessageReqMeta + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptSendBlockchainMessageReqMeta) SetTo(v SendBlockchainMessageReqMeta) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptSendBlockchainMessageReqMeta) Get() (v SendBlockchainMessageReqMeta, 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 OptSendBlockchainMessageReqMeta) Or(d SendBlockchainMessageReqMeta) SendBlockchainMessageReqMeta { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptSmartContractAction returns new OptSmartContractAction with value set to v. func NewOptSmartContractAction(v SmartContractAction) OptSmartContractAction { return OptSmartContractAction{ @@ -13552,6 +13919,52 @@ func (o OptSmartContractAction) Or(d SmartContractAction) SmartContractAction { return d } +// NewOptSource returns new OptSource with value set to v. +func NewOptSource(v Source) OptSource { + return OptSource{ + Value: v, + Set: true, + } +} + +// OptSource is optional Source. +type OptSource struct { + Value Source + Set bool +} + +// IsSet returns true if OptSource was set. +func (o OptSource) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptSource) Reset() { + var v Source + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptSource) SetTo(v Source) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptSource) Get() (v Source, 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 OptSource) Or(d Source) Source { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptStateInit returns new OptStateInit with value set to v. func NewOptStateInit(v StateInit) OptStateInit { return OptStateInit{ @@ -14930,8 +15343,9 @@ func (s *Sale) SetPrice(val Price) { type SendBlockchainMessageOK struct{} type SendBlockchainMessageReq struct { - Boc OptString `json:"boc"` - Batch []string `json:"batch"` + Boc OptString `json:"boc"` + Batch []string `json:"batch"` + Meta OptSendBlockchainMessageReqMeta `json:"meta"` } // GetBoc returns the value of Boc. @@ -14944,6 +15358,11 @@ func (s *SendBlockchainMessageReq) GetBatch() []string { return s.Batch } +// GetMeta returns the value of Meta. +func (s *SendBlockchainMessageReq) GetMeta() OptSendBlockchainMessageReqMeta { + return s.Meta +} + // SetBoc sets the value of Boc. func (s *SendBlockchainMessageReq) SetBoc(val OptString) { s.Boc = val @@ -14954,6 +15373,22 @@ func (s *SendBlockchainMessageReq) SetBatch(val []string) { s.Batch = val } +// SetMeta sets the value of Meta. +func (s *SendBlockchainMessageReq) SetMeta(val OptSendBlockchainMessageReqMeta) { + s.Meta = val +} + +type SendBlockchainMessageReqMeta map[string]string + +func (s *SendBlockchainMessageReqMeta) init() SendBlockchainMessageReqMeta { + m := *s + if m == nil { + m = map[string]string{} + *s = m + } + return m +} + type SendRawMessageOK struct { Code int32 `json:"code"` } @@ -15087,12 +15522,19 @@ func (s *SignRawMessage) SetStateInit(val OptString) { // Ref: #/components/schemas/SignRawParams type SignRawParams struct { + ProtocolName string `json:"protocol_name"` RelayAddress string `json:"relay_address"` // Commission for the transaction. In nanocoins. - Commission string `json:"commission"` - From string `json:"from"` - ValidUntil int64 `json:"valid_until"` - Messages []SignRawMessage `json:"messages"` + Commission string `json:"commission"` + From string `json:"from"` + ValidUntil int64 `json:"valid_until"` + Messages []SignRawMessage `json:"messages"` + Emulation OptMessageConsequences `json:"emulation"` +} + +// GetProtocolName returns the value of ProtocolName. +func (s *SignRawParams) GetProtocolName() string { + return s.ProtocolName } // GetRelayAddress returns the value of RelayAddress. @@ -15120,6 +15562,16 @@ func (s *SignRawParams) GetMessages() []SignRawMessage { return s.Messages } +// GetEmulation returns the value of Emulation. +func (s *SignRawParams) GetEmulation() OptMessageConsequences { + return s.Emulation +} + +// SetProtocolName sets the value of ProtocolName. +func (s *SignRawParams) SetProtocolName(val string) { + s.ProtocolName = val +} + // SetRelayAddress sets the value of RelayAddress. func (s *SignRawParams) SetRelayAddress(val string) { s.RelayAddress = val @@ -15145,6 +15597,11 @@ func (s *SignRawParams) SetMessages(val []SignRawMessage) { s.Messages = val } +// SetEmulation sets the value of Emulation. +func (s *SignRawParams) SetEmulation(val OptMessageConsequences) { + s.Emulation = val +} + // Ref: #/components/schemas/SizeLimitsConfig type SizeLimitsConfig struct { MaxMsgBits int64 `json:"max_msg_bits"` @@ -15308,6 +15765,80 @@ func (s *SmartContractAction) SetRefund(val OptRefund) { s.Refund = val } +// Ref: #/components/schemas/Source +type Source struct { + Files []SourceFile `json:"files"` +} + +// GetFiles returns the value of Files. +func (s *Source) GetFiles() []SourceFile { + return s.Files +} + +// SetFiles sets the value of Files. +func (s *Source) SetFiles(val []SourceFile) { + s.Files = val +} + +// Ref: #/components/schemas/SourceFile +type SourceFile struct { + Name string `json:"name"` + Content string `json:"content"` + IsEntrypoint bool `json:"is_entrypoint"` + IsStdLib bool `json:"is_std_lib"` + IncludeInCommand bool `json:"include_in_command"` +} + +// GetName returns the value of Name. +func (s *SourceFile) GetName() string { + return s.Name +} + +// GetContent returns the value of Content. +func (s *SourceFile) GetContent() string { + return s.Content +} + +// GetIsEntrypoint returns the value of IsEntrypoint. +func (s *SourceFile) GetIsEntrypoint() bool { + return s.IsEntrypoint +} + +// GetIsStdLib returns the value of IsStdLib. +func (s *SourceFile) GetIsStdLib() bool { + return s.IsStdLib +} + +// GetIncludeInCommand returns the value of IncludeInCommand. +func (s *SourceFile) GetIncludeInCommand() bool { + return s.IncludeInCommand +} + +// SetName sets the value of Name. +func (s *SourceFile) SetName(val string) { + s.Name = val +} + +// SetContent sets the value of Content. +func (s *SourceFile) SetContent(val string) { + s.Content = val +} + +// SetIsEntrypoint sets the value of IsEntrypoint. +func (s *SourceFile) SetIsEntrypoint(val bool) { + s.IsEntrypoint = val +} + +// SetIsStdLib sets the value of IsStdLib. +func (s *SourceFile) SetIsStdLib(val bool) { + s.IsStdLib = val +} + +// SetIncludeInCommand sets the value of IncludeInCommand. +func (s *SourceFile) SetIncludeInCommand(val bool) { + s.IncludeInCommand = val +} + // Ref: #/components/schemas/StateInit type StateInit struct { Boc string `json:"boc"` @@ -16862,9 +17393,11 @@ func (s *ValueFlow) SetJettons(val []ValueFlowJettonsItem) { } type ValueFlowJettonsItem struct { - Account AccountAddress `json:"account"` - Jetton JettonPreview `json:"jetton"` - Quantity int64 `json:"quantity"` + Account AccountAddress `json:"account"` + Jetton JettonPreview `json:"jetton"` + Qty string `json:"qty"` + // Deprecated: schema marks this property as deprecated. + Quantity int64 `json:"quantity"` } // GetAccount returns the value of Account. @@ -16877,6 +17410,11 @@ func (s *ValueFlowJettonsItem) GetJetton() JettonPreview { return s.Jetton } +// GetQty returns the value of Qty. +func (s *ValueFlowJettonsItem) GetQty() string { + return s.Qty +} + // GetQuantity returns the value of Quantity. func (s *ValueFlowJettonsItem) GetQuantity() int64 { return s.Quantity @@ -16892,6 +17430,11 @@ func (s *ValueFlowJettonsItem) SetJetton(val JettonPreview) { s.Jetton = val } +// SetQty sets the value of Qty. +func (s *ValueFlowJettonsItem) SetQty(val string) { + s.Qty = val +} + // SetQuantity sets the value of Quantity. func (s *ValueFlowJettonsItem) SetQuantity(val int64) { s.Quantity = val diff --git a/oas_validators_gen.go b/oas_validators_gen.go index 6df668f..ed5b0f3 100644 --- a/oas_validators_gen.go +++ b/oas_validators_gen.go @@ -579,6 +579,8 @@ func (s ActionType) Validate() error { switch s { case "TonTransfer": return nil + case "ExtraCurrencyTransfer": + return nil case "JettonTransfer": return nil case "JettonBurn": @@ -896,7 +898,18 @@ func (s *BlockchainAccountInspect) Validate() error { }) } if err := func() error { - if value, ok := s.Compiler.Get(); ok { + if err := s.Compiler.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "compiler", + Error: err, + }) + } + if err := func() error { + if value, ok := s.Source.Get(); ok { if err := func() error { if err := value.Validate(); err != nil { return err @@ -909,7 +922,7 @@ func (s *BlockchainAccountInspect) Validate() error { return nil }(); err != nil { failures = append(failures, validate.FieldError{ - Name: "compiler", + Name: "source", Error: err, }) } @@ -923,6 +936,10 @@ func (s BlockchainAccountInspectCompiler) Validate() error { switch s { case "func": return nil + case "fift": + return nil + case "tact": + return nil default: return errors.Errorf("invalid value: %v", s) } @@ -2373,6 +2390,23 @@ func (s *FoundAccounts) Validate() error { if s.Addresses == nil { return errors.New("nil is invalid value") } + var failures []validate.FieldError + for i, elem := range s.Addresses { + 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{ @@ -2386,6 +2420,29 @@ func (s *FoundAccounts) Validate() error { return nil } +func (s *FoundAccountsAddressesItem) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if err := s.Trust.Validate(); err != nil { + return err + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "trust", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *GaslessConfig) Validate() error { if s == nil { return validate.ErrNilPointer @@ -3150,6 +3207,15 @@ func (s InscriptionMintActionType) Validate() error { } } +func (s InscriptionOperation) Validate() error { + switch s { + case "transfer": + return nil + default: + return errors.Errorf("invalid value: %v", s) + } +} + func (s *InscriptionTransferAction) Validate() error { if s == nil { return validate.ErrNilPointer @@ -3503,8 +3569,6 @@ func (s JettonVerificationType) Validate() error { switch s { case "whitelist": return nil - case "graylist": - return nil case "blacklist": return nil case "none": @@ -4155,15 +4219,6 @@ func (s NftPurchaseActionAuctionType) Validate() error { } } -func (s Operation) Validate() error { - switch s { - case "transfer": - return nil - default: - return errors.Errorf("invalid value: %v", s) - } -} - func (s *OracleBridgeParams) Validate() error { if s == nil { return validate.ErrNilPointer @@ -4445,7 +4500,7 @@ func (s *SendBlockchainMessageReq) Validate() error { if err := (validate.Array{ MinLength: 0, MinLengthSet: false, - MaxLength: 10, + MaxLength: 5, MaxLengthSet: true, }).ValidateLength(len(s.Batch)); err != nil { return errors.Wrap(err, "array") @@ -4480,6 +4535,24 @@ func (s *SignRawParams) Validate() error { Error: err, }) } + if err := func() error { + if value, ok := s.Emulation.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: "emulation", + Error: err, + }) + } if len(failures) > 0 { return &validate.Error{Fields: failures} } @@ -4516,6 +4589,29 @@ func (s *SmartContractAction) Validate() error { return nil } +func (s *Source) Validate() error { + if s == nil { + return validate.ErrNilPointer + } + + var failures []validate.FieldError + if err := func() error { + if s.Files == nil { + return errors.New("nil is invalid value") + } + return nil + }(); err != nil { + failures = append(failures, validate.FieldError{ + Name: "files", + Error: err, + }) + } + if len(failures) > 0 { + return &validate.Error{Fields: failures} + } + return nil +} + func (s *StateInit) Validate() error { if s == nil { return validate.ErrNilPointer