@taquito/taquito 17.3.1-beta-RC.0 → 17.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"taquito.es6.js","sources":["../src/injector/helper.ts","../src/injector/rpc-injector.ts","../src/signer/errors.ts","../src/signer/noop.ts","../src/subscribe/create-observable-from-subscription.ts","../src/constants.ts","../src/contract/errors.ts","../src/contract/prepare.ts","../src/operations/types.ts","../src/operations/errors.ts","../src/errors.ts","../src/operations/operations.ts","../src/operations/batch-operation.ts","../src/provider.ts","../src/wallet/wallet.ts","../src/wallet/receipt.ts","../src/wallet/errors.ts","../src/wallet/operation.ts","../src/wallet/transaction-operation.ts","../src/wallet/origination-operation.ts","../src/wallet/delegation-operation.ts","../src/wallet/legacy.ts","../src/contract/contract-methods/contract-method-object-param.ts","../src/contract/contract-methods/contract-method-flat-param.ts","../src/contract/contract-methods/contract-on-chain-view.ts","../src/contract/contract-methods/contract-method-factory.ts","../src/contract/contract.ts","../src/contract/manager-lambda.ts","../src/contract/view_lambda.ts","../src/contract/compose.ts","../src/contract/sapling-state-abstraction.ts","../src/prepare/prepare-provider.ts","../src/batch/rpc-batch-provider.ts","../src/wallet/batch-operation.ts","../src/wallet/increase-paid-storage-operation.ts","../src/wallet/operation-factory.ts","../src/tz/rpc-tz-provider.ts","../src/estimate/estimate.ts","../src/estimate/errors.ts","../src/estimate/rpc-estimate-provider.ts","../src/operations/delegate-operation.ts","../src/operations/origination-operation.ts","../src/operations/register-global-constant-operation.ts","../src/operations/reveal-operation.ts","../src/operations/transaction-operation.ts","../src/contract/big-map.ts","../src/contract/semantic.ts","../src/operations/ballot-operation.ts","../src/operations/drain-delegate-operation.ts","../src/operations/transfer-ticket-operation.ts","../src/operations/increase-paid-storage-operation.ts","../src/operations/proposals-operation.ts","../src/operations/update-consensus-key-operation.ts","../src/operations/smart-rollup-add-messages-operation.ts","../src/operations/smart-rollup-originate-operation.ts","../src/contract/rpc-contract-provider.ts","../src/parser/michel-codec-parser.ts","../src/packer/rpc-packer.ts","../src/global-constants/errors.ts","../src/global-constants/noop-global-constants-provider.ts","../src/read-provider/rpc-read-adapter.ts","../src/subscribe/errors.ts","../src/subscribe/filters.ts","../src/subscribe/observable-subscription.ts","../src/subscribe/polling-subcribe-provider.ts","../src/forger/taquito-local-forger.ts","../src/context.ts","../src/version.ts","../src/forger/errors.ts","../src/forger/composite-forger.ts","../src/forger/rpc-forger.ts","../src/parser/noop-parser.ts","../src/packer/michel-codec-packer.ts","../src/global-constants/default-global-constants-provider.ts","../src/taquito.ts"],"sourcesContent":["import { HttpResponseError } from '@taquito/http-utils';\n\nexport function formatErrorMessage(error: HttpResponseError, stringToReplace: string) {\n const body = JSON.parse(error.body);\n if (body[0] && body[0].kind && body[0].msg) {\n const newBody = JSON.stringify({\n kind: body[0].kind,\n id: body[0].id,\n msg: body[0].msg.replace(stringToReplace, ''),\n });\n return new HttpResponseError(\n `Http error response: (${error.status}) ${newBody}`,\n error.status,\n error.statusText,\n newBody,\n error.url\n );\n } else {\n return error;\n }\n}\n","import { Injector } from './interface';\nimport { Context } from '../context';\nimport { formatErrorMessage } from './helper';\nimport { HttpResponseError } from '@taquito/http-utils';\n\nexport class RpcInjector implements Injector {\n constructor(private context: Context) {}\n async inject(signedOperationBytes: string): Promise<string> {\n let hash: string;\n try {\n hash = await this.context.rpc.injectOperation(signedOperationBytes);\n } catch (error) {\n const stringToStrip =\n '. You may want to use --replace to provide adequate fee and replace it';\n if (error instanceof HttpResponseError && error.message.includes(stringToStrip)) {\n throw formatErrorMessage(error, stringToStrip);\n } else {\n throw error;\n }\n }\n return hash;\n }\n}\n","import { TezosToolkitConfigError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates no signer has been configured in the TezosToolkit instance\n */\nexport class UnconfiguredSignerError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'UnconfiguredSignerError';\n this.message =\n 'No signer has been configured. Please configure one by calling setProvider({signer}) on your TezosToolkit instance.';\n }\n}\n","import { Signer } from './interface';\nimport { UnconfiguredSignerError } from './errors';\n/**\n * @description Default signer implementation which does nothing and produce invalid signature\n * @throw {@link UnconfiguredSignerError}\n */\nexport class NoopSigner implements Signer {\n async publicKey(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async publicKeyHash(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async secretKey(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async sign(_bytes: string, _watermark?: Uint8Array): Promise<any> {\n throw new UnconfiguredSignerError();\n }\n}\n","import { BlockResponse } from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { OperationContent, Subscription } from './interface';\n\nexport function createObservableFromSubscription<\n T extends BlockResponse | string | OperationContent\n>(sub: Subscription<T>) {\n return new Observable<T>((subscriber) => {\n sub.on('data', (data: T) => {\n subscriber.next(data);\n });\n\n sub.on('error', (error: Error) => {\n subscriber.error(error);\n });\n\n sub.on('close', () => {\n subscriber.complete();\n });\n\n return () => {\n sub.close();\n };\n });\n}\n","export enum DEFAULT_GAS_LIMIT {\n DELEGATION = 10600,\n ORIGINATION = 10600,\n TRANSFER = 10600,\n /* This is used for gas_limit. There is no harm in setting a higher limit. \n Only if an account has a balance that is very close to the total gas consumption, \n then this margin can fail the operation.\n Another benefit of this higher value is that then Dapps build with Taquito 17 can\n still work with Mumbainet, as this value is higher than the reveal cost in Mumbai.\n */\n REVEAL_TZ1 = 1000,\n REVEAL_TZ2 = 1000,\n REVEAL_TZ3 = 2000,\n REVEAL_TZ4 = 2000,\n}\nexport enum DEFAULT_FEE {\n DELEGATION = 1257,\n ORIGINATION = 10000,\n TRANSFER = 10000,\n REVEAL = 374,\n}\nexport enum DEFAULT_STORAGE_LIMIT {\n DELEGATION = 0,\n ORIGINATION = 257,\n TRANSFER = 257,\n REVEAL = 0,\n}\n\nexport const COST_PER_BYTE = 250;\n\nexport enum Protocols {\n Pt24m4xi = 'Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd',\n PsBABY5H = 'PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU',\n PsBabyM1 = 'PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS',\n PsCARTHA = 'PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb',\n PsDELPH1 = 'PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo',\n PtEdo2Zk = 'PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA',\n PsFLorena = 'PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i',\n PtGRANADs = 'PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV',\n PtHangz2 = 'PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx',\n PsiThaCa = 'PsiThaCaT47Zboaw71QWScM8sXeMM7bbQFncK9FLqYc6EKdpjVP',\n Psithaca2 = 'Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A',\n PtJakart2 = 'PtJakart2xVj7pYXJBXrqHgd82rdkLey5ZeeGwDgPp9rhQUbSqY',\n PtKathman = 'PtKathmankSpLLDALzWw7CGD2j2MtyveTwboEYokqUCP4a1LxMg',\n PtLimaPtL = 'PtLimaPtLMwfNinJi9rCfDPWea8dFgTZ1MeJ9f1m2SRic6ayiwW',\n PtMumbaii = 'PtMumbaiiFFEGbew1rRjzSPyzRbA51Tm3RVZL5suHPxSZYDhCEc',\n PtMumbai2 = 'PtMumbai2TmsJHNGRkD8v8YDbtao7BLUC3wjASn1inAKLFCjaH1',\n PtNairobi = 'PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf',\n ProtoALpha = 'ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK',\n}\n\nexport const protocols = {\n '004': [Protocols.Pt24m4xi],\n '005': [Protocols.PsBABY5H, Protocols.PsBabyM1],\n '006': [Protocols.PsCARTHA],\n '007': [Protocols.PsDELPH1],\n '008': [Protocols.PtEdo2Zk], // edonet v2\n '009': [Protocols.PsFLorena],\n '010': [Protocols.PtGRANADs],\n '011': [Protocols.PtHangz2], // hangzhou v2,\n '012': [Protocols.PsiThaCa, Protocols.Psithaca2],\n '013': [Protocols.PtJakart2],\n '014': [Protocols.PtKathman],\n '015': [Protocols.PtLimaPtL],\n '016': [Protocols.PtMumbai2], // mumbai v2\n '017': [Protocols.PtNairobi],\n '018': [Protocols.ProtoALpha],\n};\n\nexport enum ChainIds {\n MAINNET = 'NetXdQprcVkpaWU',\n CARTHAGENET = 'NetXjD3HPJJjmcd',\n DELPHINET = 'NetXm8tYqnMWky1',\n EDONET = 'NetXSgo1ZT2DRUG',\n FLORENCENET = 'NetXxkAx4woPLyu',\n GRANADANET = 'NetXz969SFaFn8k',\n HANGZHOUNET = 'NetXZSsxBpMQeAT',\n ITHACANET = 'NetXbhmtAbMukLc',\n ITHACANET2 = 'NetXnHfVqm9iesp',\n JAKARTANET2 = 'NetXLH1uAxK7CCh',\n KATHMANDUNET = 'NetXazhm4yetmff',\n LIMANET = 'NetXizpkH94bocH',\n MUMBAINET = 'NetXQw6nWSnrJ5t',\n MUMBAINET2 = 'NetXgbcrNtXD2yA',\n NAIROBINET = 'NetXyuzvDo2Ugzb',\n}\n\nexport const getRevealGasLimit = (address: string) =>\n Math.round((getRevealGasLimitInternal(address) * 11) / 10);\n\nconst getRevealGasLimitInternal = (address: string) => {\n switch (address.substring(0, 3)) {\n case 'tz1':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ1;\n case 'tz2':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ2;\n case 'tz3':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ3;\n case 'tz4':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ4;\n default:\n throw new Error(`Cannot estimate reveal gas limit for ${address}`);\n }\n};\n","import { ParameterValidationError, RpcError } from '@taquito/core';\nimport { HttpResponseError } from '@taquito/http-utils';\nimport { MichelsonV1Expression } from '@taquito/rpc';\n\n/**\n * @category Error\n * @description Error that indicates invalid smart contract parameters being passed or used\n */\nexport class InvalidParameterError extends ParameterValidationError {\n constructor(\n public readonly smartContractMethodName: string,\n public readonly sigs: any[],\n public readonly invalidParams: any[]\n ) {\n super();\n this.name = 'InvalidParameterError';\n this.message = `${smartContractMethodName} Received ${\n invalidParams.length\n } arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid delegation source contract address being passed or used\n */\nexport class InvalidDelegationSource extends ParameterValidationError {\n constructor(public readonly source: string) {\n super();\n this.name = `InvalidDelegationSource`;\n this.message = `Since Babylon delegation source can no longer be a contract address ${source}. Please use the smart contract abstraction to set your delegate.`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid smart contract code parameter being passed or used\n */\nexport class InvalidCodeParameter extends ParameterValidationError {\n constructor(public readonly message: string, public readonly data: any) {\n super();\n this.name = 'InvalidCodeParameter';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates invalid smart contract init parameter being passed or used\n */\nexport class InvalidInitParameter extends ParameterValidationError {\n constructor(public readonly message: string, public readonly data: any) {\n super();\n this.name = 'InvalidInitParameter';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a failure when conducting a view simulation\n */\nexport class ViewSimulationError extends RpcError {\n constructor(\n public readonly message: string,\n public readonly viewName: string,\n public readonly failWith?: MichelsonV1Expression,\n public readonly cause?: any\n ) {\n super();\n this.name = 'ViewSimulationError';\n }\n}\n\nexport const validateAndExtractFailwith = (\n error: HttpResponseError\n): MichelsonV1Expression | undefined => {\n if (isJsonString(error.body)) {\n const parsedError = JSON.parse(error.body);\n if (Array.isArray(parsedError) && 'with' in parsedError[parsedError.length - 1]) {\n return parsedError[parsedError.length - 1].with;\n }\n }\n};\n\nconst isJsonString = (str: string) => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * @category Error\n * @description Error that indicates invalid or unconfigured context when executing a view\n */\nexport class InvalidViewSimulationContext extends ParameterValidationError {\n constructor(public readonly info: string) {\n super();\n this.name = 'InvalidViewSimulationContext';\n this.message = `${info} Please configure the context of the view execution in the executeView method.`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a mistake happening during the reveal operation\n */\nexport class RevealOperationError extends RpcError {\n constructor(public readonly message: string) {\n super();\n this.name = 'RevealOperationError';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a mistake in the parameters in the preparation of an Origination operation\n */\nexport class OriginationParameterError extends ParameterValidationError {\n constructor(public readonly message: string) {\n super();\n this.name;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid balance being passed or used\n */\nexport class InvalidBalanceError extends ParameterValidationError {\n constructor(public readonly message: string) {\n super();\n this.name = 'InvalidBalanceError';\n }\n}\n","import { Schema } from '@taquito/michelson-encoder';\nimport { OpKind, MichelsonV1Expression } from '@taquito/rpc';\nimport { Prim, Expr } from '@taquito/michel-codec';\nimport {\n OriginateParams,\n RPCOriginationOperation,\n TransferParams,\n RPCTransferOperation,\n DelegateParams,\n RPCDelegateOperation,\n RegisterDelegateParams,\n RPCRevealOperation,\n RevealParams,\n RegisterGlobalConstantParams,\n RPCRegisterGlobalConstantOperation,\n TransferTicketParams,\n RPCTransferTicketOperation,\n IncreasePaidStorageParams,\n RPCIncreasePaidStorageOperation,\n DrainDelegateParams,\n RPCDrainDelegateOperation,\n BallotParams,\n RPCBallotOperation,\n ProposalsParams,\n RPCProposalsOperation,\n UpdateConsensusKeyParams,\n RPCUpdateConsensusKeyOperation,\n SmartRollupAddMessagesParams,\n RPCSmartRollupAddMessagesOperation,\n RPCSmartRollupOriginateOperation,\n SmartRollupOriginateParamsWithProof,\n ActivationParams,\n RPCActivateOperation,\n} from '../operations/types';\nimport {\n DEFAULT_FEE,\n DEFAULT_GAS_LIMIT,\n DEFAULT_STORAGE_LIMIT,\n getRevealGasLimit,\n} from '../constants';\nimport { format } from '@taquito/utils';\nimport {\n InvalidCodeParameter,\n InvalidInitParameter,\n OriginationParameterError,\n InvalidBalanceError,\n} from './errors';\n\nexport const createActivationOperation = async ({ pkh, secret }: ActivationParams) => {\n return {\n kind: OpKind.ACTIVATION,\n pkh,\n secret,\n } as RPCActivateOperation;\n};\n\nexport const createOriginationOperation = async ({\n code,\n init,\n balance = '0',\n delegate,\n storage,\n fee = DEFAULT_FEE.ORIGINATION,\n gasLimit = DEFAULT_GAS_LIMIT.ORIGINATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.ORIGINATION,\n mutez = false,\n}: OriginateParams) => {\n if (storage !== undefined && init !== undefined) {\n throw new OriginationParameterError(\n 'Storage and Init cannot be set a the same time. Please either use storage or init but not both.'\n );\n }\n\n if (!Array.isArray(code)) {\n throw new InvalidCodeParameter('Wrong code parameter type, expected an array', code);\n }\n\n let contractStorage: Expr | undefined;\n if (storage !== undefined) {\n const storageType = (code as Expr[]).find(\n (p): p is Prim => 'prim' in p && p.prim === 'storage'\n );\n if (storageType?.args === undefined) {\n throw new InvalidCodeParameter('The storage section is missing from the script', code);\n }\n const schema = new Schema(storageType.args[0] as MichelsonV1Expression); // TODO\n contractStorage = schema.Encode(storage);\n } else if (init !== undefined && typeof init === 'object') {\n contractStorage = init as Expr;\n } else {\n throw new InvalidInitParameter('Wrong init parameter type, expected JSON Michelson', init);\n }\n\n const script = {\n code,\n storage: contractStorage,\n };\n\n if (isNaN(Number(balance))) {\n throw new InvalidBalanceError(`Invalid Balance \"${balance}\", cannot be converted to a number`);\n }\n\n const operation: RPCOriginationOperation = {\n kind: OpKind.ORIGINATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n balance: mutez ? balance.toString() : format('tz', 'mutez', balance).toString(),\n script,\n };\n\n if (delegate) {\n operation.delegate = delegate;\n }\n return operation;\n};\n\nexport const createTransferOperation = async ({\n to,\n amount,\n parameter,\n fee = DEFAULT_FEE.TRANSFER,\n gasLimit = DEFAULT_GAS_LIMIT.TRANSFER,\n storageLimit = DEFAULT_STORAGE_LIMIT.TRANSFER,\n mutez = false,\n}: TransferParams) => {\n const operation: RPCTransferOperation = {\n kind: OpKind.TRANSACTION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n amount: mutez ? amount.toString() : format('tz', 'mutez', amount).toString(),\n destination: to,\n parameters: parameter,\n };\n return operation;\n};\n\nexport const createSetDelegateOperation = async ({\n delegate,\n source,\n fee = DEFAULT_FEE.DELEGATION,\n gasLimit = DEFAULT_GAS_LIMIT.DELEGATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.DELEGATION,\n}: DelegateParams) => {\n const operation: RPCDelegateOperation = {\n kind: OpKind.DELEGATION,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n delegate,\n };\n return operation;\n};\n\nexport const createRegisterDelegateOperation = async (\n {\n fee = DEFAULT_FEE.DELEGATION,\n gasLimit = DEFAULT_GAS_LIMIT.DELEGATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.DELEGATION,\n }: RegisterDelegateParams,\n source: string\n) => {\n return {\n kind: OpKind.DELEGATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n delegate: source,\n } as RPCDelegateOperation;\n};\n\nexport const createRevealOperation = async (\n {\n fee = DEFAULT_FEE.REVEAL,\n gasLimit = undefined,\n storageLimit = DEFAULT_STORAGE_LIMIT.REVEAL,\n }: RevealParams,\n source: string,\n publicKey: string\n) => {\n return {\n kind: OpKind.REVEAL,\n fee,\n public_key: publicKey,\n source,\n gas_limit: gasLimit ?? getRevealGasLimit(source),\n storage_limit: storageLimit,\n } as RPCRevealOperation;\n};\n\nexport const createRegisterGlobalConstantOperation = async ({\n value,\n source,\n fee,\n gasLimit,\n storageLimit,\n}: RegisterGlobalConstantParams) => {\n return {\n kind: OpKind.REGISTER_GLOBAL_CONSTANT,\n value,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n } as RPCRegisterGlobalConstantOperation;\n};\n\nexport const createTransferTicketOperation = async ({\n ticketContents,\n ticketTy,\n ticketTicketer,\n ticketAmount,\n destination,\n entrypoint,\n source,\n fee,\n gasLimit,\n storageLimit,\n}: TransferTicketParams) => {\n return {\n kind: OpKind.TRANSFER_TICKET,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n ticket_contents: ticketContents,\n ticket_ty: ticketTy,\n ticket_ticketer: ticketTicketer,\n ticket_amount: ticketAmount,\n destination,\n entrypoint,\n } as RPCTransferTicketOperation;\n};\n\nexport const createIncreasePaidStorageOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n amount,\n destination,\n}: IncreasePaidStorageParams) => {\n return {\n kind: OpKind.INCREASE_PAID_STORAGE,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n amount,\n destination,\n } as RPCIncreasePaidStorageOperation;\n};\n\nexport const createDrainDelegateOperation = async ({\n consensus_key,\n delegate,\n destination,\n}: DrainDelegateParams) => {\n return {\n kind: OpKind.DRAIN_DELEGATE,\n consensus_key,\n delegate,\n destination,\n } as RPCDrainDelegateOperation;\n};\n\nexport const createBallotOperation = async ({ source, proposal, ballot }: BallotParams) => {\n return {\n kind: OpKind.BALLOT,\n source,\n proposal,\n ballot,\n } as RPCBallotOperation;\n};\n\nexport const createProposalsOperation = async ({ source, proposals }: ProposalsParams) => {\n return {\n kind: OpKind.PROPOSALS,\n source,\n proposals,\n } as RPCProposalsOperation;\n};\n\nexport const createUpdateConsensusKeyOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n pk,\n}: UpdateConsensusKeyParams) => {\n return {\n kind: OpKind.UPDATE_CONSENSUS_KEY,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n pk,\n } as RPCUpdateConsensusKeyOperation;\n};\n\nexport const createSmartRollupAddMessagesOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n message,\n}: SmartRollupAddMessagesParams) => {\n return {\n kind: OpKind.SMART_ROLLUP_ADD_MESSAGES,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n message,\n } as RPCSmartRollupAddMessagesOperation;\n};\n\nexport const createSmartRollupOriginateOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n pvmKind,\n kernel,\n originationProof,\n parametersType,\n}: SmartRollupOriginateParamsWithProof) => {\n return {\n kind: OpKind.SMART_ROLLUP_ORIGINATE,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n pvm_kind: pvmKind,\n kernel,\n origination_proof: originationProof,\n parameters_ty: parametersType,\n } as RPCSmartRollupOriginateOperation;\n};\n","import {\n OperationObject,\n InternalOperationResultKindEnum,\n OpKind,\n TransactionOperationParameter,\n MichelsonV1Expression,\n BallotVote,\n PvmKind,\n} from '@taquito/rpc';\nimport { BlockIdentifier } from '../read-provider/interface';\n\nexport { OpKind } from '@taquito/rpc';\n\nexport type withKind<T, K extends OpKind> = T & { kind: K };\n\nexport type ParamsWithKind =\n | withKind<OriginateParams, OpKind.ORIGINATION>\n | withKind<DelegateParams, OpKind.DELEGATION>\n | withKind<TransferParams, OpKind.TRANSACTION>\n | withKind<ActivationParams, OpKind.ACTIVATION>\n | withKind<RegisterGlobalConstantParams, OpKind.REGISTER_GLOBAL_CONSTANT>\n | withKind<IncreasePaidStorageParams, OpKind.INCREASE_PAID_STORAGE>\n | withKind<TxRollupOriginateParams, OpKind.TX_ROLLUP_ORIGINATION>\n | withKind<TxRollupBatchParams, OpKind.TX_ROLLUP_SUBMIT_BATCH>\n | withKind<TransferTicketParams, OpKind.TRANSFER_TICKET>\n | withKind<UpdateConsensusKeyParams, OpKind.UPDATE_CONSENSUS_KEY>\n | withKind<SmartRollupAddMessagesParams, OpKind.SMART_ROLLUP_ADD_MESSAGES>\n | withKind<FailingNoopParams, OpKind.FAILING_NOOP>\n | withKind<SmartRollupOriginateParamsWithProof, OpKind.SMART_ROLLUP_ORIGINATE>;\n\nexport type ParamsWithKindExtended = ParamsWithKind | withKind<RevealParams, OpKind.REVEAL>;\n\nexport const attachKind = <T, K extends OpKind>(op: T, kind: K) => {\n return { ...op, kind } as withKind<T, K>;\n};\n\nexport const findWithKind = <T extends { kind: OpKind }, K extends OpKind>(\n arr: T[],\n kind: K\n): (T & { kind: K }) | undefined => {\n if (Array.isArray(arr)) {\n const found = arr.find((op) => op.kind === kind);\n\n if (found && isKind(found, kind)) {\n return found;\n }\n }\n};\n\nexport const isKind = <T extends { kind: OpKind }, K extends OpKind>(\n op: T,\n kind: K\n): op is withKind<T, K> => {\n return op.kind === kind;\n};\n\nexport type RPCOpWithFee =\n | RPCTransferOperation\n | RPCOriginationOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCRegisterGlobalConstantOperation\n | RPCIncreasePaidStorageOperation\n | RPCTxRollupOriginationOperation\n | RPCTxRollupBatchOperation\n | RPCTransferTicketOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCSmartRollupOriginateOperation;\n\nexport type RPCOpWithSource =\n | RPCTransferOperation\n | RPCOriginationOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCRegisterGlobalConstantOperation\n | RPCIncreasePaidStorageOperation\n | RPCTxRollupOriginationOperation\n | RPCTxRollupBatchOperation\n | RPCTransferTicketOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCSmartRollupOriginateOperation;\n\nexport const isOpWithFee = <T extends { kind: OpKind }>(\n op: T\n): op is withKind<T, Exclude<Exclude<OpKind, OpKind.ACTIVATION>, OpKind.FAILING_NOOP>> => {\n return (\n [\n 'transaction',\n 'delegation',\n 'origination',\n 'reveal',\n 'register_global_constant',\n 'increase_paid_storage',\n 'tx_rollup_origination',\n 'tx_rollup_submit_batch',\n 'transfer_ticket',\n 'update_consensus_key',\n 'smart_rollup_add_messages',\n 'smart_rollup_originate',\n ].indexOf(op.kind) !== -1\n );\n};\n\nexport const isOpRequireReveal = <T extends { kind: OpKind }>(\n op: T\n): op is withKind<T, Exclude<InternalOperationResultKindEnum, OpKind.REVEAL>> => {\n return (\n [\n 'transaction',\n 'delegation',\n 'origination',\n 'register_global_constant',\n 'increase_paid_storage',\n 'tx_rollup_origination',\n 'tx_rollup_submit_batch',\n 'transfer_ticket',\n 'update_consensus_key',\n 'smart_rollup_add_messages',\n 'smart_rollup_originate',\n ].indexOf(op.kind) !== -1\n );\n};\n\nexport type SourceKinds = InternalOperationResultKindEnum;\n\nexport const isSourceOp = <T extends { kind: OpKind }>(op: T): op is withKind<T, SourceKinds> => {\n return ['transaction', 'delegation', 'origination', 'reveal', 'ballot'].indexOf(op.kind) !== -1;\n};\n\nexport const hasMetadata = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: K;\n} => {\n return 'metadata' in op;\n};\n\nexport const hasMetadataWithResult = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: {\n operation_result: K;\n };\n} => {\n return hasMetadata<T, any>(op) && 'operation_result' in op.metadata;\n};\n\nexport const hasMetadataWithInternalOperationResult = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: {\n internal_operation_results?: K;\n };\n} => {\n return hasMetadata<T, any>(op) && 'internal_operation_results' in op.metadata;\n};\n\nexport interface GasConsumingOperation {\n consumedGas?: string;\n gasLimit: number;\n}\n\nexport interface StorageConsumingOperation {\n storageDiff?: string;\n storageSize?: string;\n storageLimit: number;\n}\n\nexport interface FeeConsumingOperation {\n fee: number;\n}\n\nexport type OriginateParamsBase = {\n balance?: string | number;\n code: string | object[];\n delegate?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n};\n\n/**\n * @description Parameters for originate method\n */\nexport type OriginateParams<TStorage = any> = OriginateParamsBase &\n (\n | {\n init?: never;\n /** JS representation of a storage object */\n storage: TStorage;\n }\n | {\n /** Initial storage object value. Either Micheline or JSON encoded */\n init: string | object;\n storage?: never;\n }\n );\n\nexport interface ActivationParams {\n pkh: string;\n secret: string;\n}\n\n/**\n * @description RPC origination operation\n */\nexport interface RPCOriginationOperation {\n kind: OpKind.ORIGINATION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n balance: string;\n delegate?: string;\n source?: string;\n script: {\n code: any;\n storage: any;\n };\n}\n\n/**\n * @description RPC reveal operation\n */\nexport interface RPCRevealOperation {\n kind: OpKind.REVEAL;\n fee: number;\n public_key: string;\n source?: string;\n gas_limit: number;\n storage_limit: number;\n}\n\nexport interface RevealParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Result of a forge operation contains the operation plus its encoded version\n */\nexport interface ForgedBytes {\n opbytes: string;\n opOb: OperationObject;\n counter: number;\n}\n\n/**\n * @description Parameters for setDelegate method\n */\nexport interface DelegateParams {\n source: string;\n delegate?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Parameters for registerDelegate method\n */\nexport interface RegisterDelegateParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description RPC delegation operation\n */\nexport interface RPCDelegateOperation {\n kind: OpKind.DELEGATION;\n source?: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n delegate?: string;\n}\n\n/**\n * @description Parameters for transfer method\n */\nexport interface TransferParams {\n to: string;\n source?: string;\n amount: number;\n fee?: number;\n parameter?: TransactionOperationParameter;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n}\n\n/**\n * @description RPC register global constant operation\n */\nexport interface RPCRegisterGlobalConstantOperation {\n kind: OpKind.REGISTER_GLOBAL_CONSTANT;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n source: string;\n value: MichelsonV1Expression;\n}\n\n/**\n * @description Parameters for the `registerGlobalConstant` method\n */\nexport interface RegisterGlobalConstantParams {\n value: MichelsonV1Expression;\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description RPC transfer operation\n */\nexport interface RPCTransferOperation {\n kind: OpKind.TRANSACTION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n amount: string;\n source?: string;\n destination: string;\n parameters?: TransactionOperationParameter;\n}\n\n/**\n * @description RPC activate account operation\n */\nexport interface RPCActivateOperation {\n kind: OpKind.ACTIVATION;\n pkh: string;\n secret: string;\n}\n\n/**\n * @description RPC tx rollup origination operation\n */\nexport interface RPCTxRollupOriginationOperation {\n kind: OpKind.TX_ROLLUP_ORIGINATION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n source: string;\n tx_rollup_origination: object;\n}\n\n/**\n * @description Parameters for the `txRollupOriginate` method\n */\nexport interface TxRollupOriginateParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Parameters for the `txRollupSubmitBatch` method\n */\nexport interface TxRollupBatchParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n rollup: string;\n content: string;\n}\n\n/**\n * @description RPC tx rollup batch operation\n */\nexport interface RPCTxRollupBatchOperation {\n kind: OpKind.TX_ROLLUP_SUBMIT_BATCH;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n source: string;\n rollup: string;\n content: string;\n}\n\n/**\n * @description Parameters for the transferTicket contract provider\n */\nexport interface TransferTicketParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n ticketContents: MichelsonV1Expression;\n ticketTy: MichelsonV1Expression;\n ticketTicketer: string;\n ticketAmount: number;\n destination: string;\n entrypoint: string;\n}\n\n/**\n * @description Rpc transfer-ticket operation\n */\nexport interface RPCTransferTicketOperation {\n kind: OpKind.TRANSFER_TICKET;\n source?: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n ticket_contents: MichelsonV1Expression;\n ticket_ty: MichelsonV1Expression;\n ticket_ticketer: string;\n ticket_amount: number;\n destination: string;\n entrypoint: string;\n}\n\n/**\n * @description Parameters for the increasePaidStorage method\n */\nexport interface IncreasePaidStorageParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n amount: number;\n destination: string;\n}\n\n/**\n * @description RPC IncreasePaidStorage operation\n */\nexport interface RPCIncreasePaidStorageOperation {\n kind: OpKind.INCREASE_PAID_STORAGE;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n amount: number;\n destination: string;\n}\n\n/**\n * @description Parameters for the DrainDelegate method\n */\nexport interface DrainDelegateParams {\n consensus_key: string;\n delegate: string;\n destination: string;\n}\n\n/**\n * @description RPC DrainDelegate operation\n */\nexport interface RPCDrainDelegateOperation {\n kind: OpKind.DRAIN_DELEGATE;\n consensus_key: string;\n delegate: string;\n destination: string;\n}\n\n/**\n * @description Ballot operation params\n */\nexport interface BallotParams {\n source?: string;\n proposal: string;\n ballot: BallotVote;\n}\n\nexport interface RPCBallotOperation {\n kind: OpKind.BALLOT;\n source: string;\n period: number;\n proposal: string;\n ballot: BallotVote;\n}\n\nexport interface ProposalsParams {\n source?: string;\n proposals: string[];\n}\n\nexport interface RPCProposalsOperation {\n kind: OpKind.PROPOSALS;\n source: string;\n period: number;\n proposals: string[];\n}\n\nexport interface UpdateConsensusKeyParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n pk: string;\n}\n\nexport interface RPCUpdateConsensusKeyOperation {\n kind: OpKind.UPDATE_CONSENSUS_KEY;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n pk: string;\n}\n\nexport interface RPCSmartRollupAddMessagesOperation {\n kind: OpKind.SMART_ROLLUP_ADD_MESSAGES;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n message: string[];\n}\n\nexport interface SmartRollupAddMessagesParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n message: string[];\n}\nexport interface SmartRollupOriginateParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n pvmKind: PvmKind;\n kernel: string;\n parametersType: MichelsonV1Expression;\n}\n\nexport interface SmartRollupOriginateParamsWithProof extends SmartRollupOriginateParams {\n originationProof: string;\n}\n\nexport interface RPCSmartRollupOriginateOperation {\n kind: OpKind.SMART_ROLLUP_ORIGINATE;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n pvm_kind: PvmKind;\n kernel: string;\n origination_proof: string;\n parameters_ty: MichelsonV1Expression;\n}\n\n/**\n * @description RPC failing noop operation\n */\nexport interface RPCFailingNoopOperation {\n kind: OpKind.FAILING_NOOP;\n arbitrary: string;\n}\n\n/**\n * @description Parameters for the `failingNoop` method\n */\nexport interface FailingNoopParams {\n arbitrary: string;\n basedOnBlock: BlockIdentifier;\n}\n\nexport type RPCOperation =\n | RPCOriginationOperation\n | RPCTransferOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCActivateOperation\n | RPCRegisterGlobalConstantOperation\n | RPCTransferTicketOperation\n | RPCIncreasePaidStorageOperation\n | RPCDrainDelegateOperation\n | RPCBallotOperation\n | RPCProposalsOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCFailingNoopOperation\n | RPCSmartRollupOriginateOperation;\n\nexport type PrepareOperationParams = {\n operation: RPCOperation | RPCOperation[];\n source?: string;\n};\n","import { ParameterValidationError, RpcError, TaquitoError } from '@taquito/core';\nimport {\n MichelsonV1ExpressionBase,\n OperationResult,\n OperationResultDelegation,\n OperationResultOrigination,\n OperationResultRegisterGlobalConstant,\n OperationResultReveal,\n OperationResultSmartRollupOriginate,\n OperationResultTransaction,\n OperationResultTransferTicket,\n OperationResultTxRollupOrigination,\n OperationResultTxRollupSubmitBatch,\n PreapplyResponse,\n TezosGenericOperationError,\n} from '@taquito/rpc';\nimport {\n hasMetadata,\n hasMetadataWithInternalOperationResult,\n hasMetadataWithResult,\n} from './types';\n\nexport interface TezosOperationErrorWithMessage extends TezosGenericOperationError {\n with: MichelsonV1ExpressionBase;\n}\n\nconst isErrorWithMessage = (error: any): error is TezosOperationErrorWithMessage => {\n return 'with' in error;\n};\n\n/**\n * @category Error\n * @description Generic tezos error that will be thrown when a mistake occurs when doing an operation; more details here https://tezos.gitlab.io/api/errors.html\n */\nexport class TezosOperationError extends RpcError {\n id: string;\n kind: string;\n\n constructor(\n public readonly errors: TezosGenericOperationError[],\n public readonly errorDetails?: string\n ) {\n super();\n this.name = 'TezosOperationError';\n // Last error is 'often' the one with more detail\n const lastError = errors[errors.length - 1];\n this.id = lastError.id;\n this.kind = lastError.kind;\n\n this.message = `(${this.kind}) ${this.id}`;\n\n if (isErrorWithMessage(lastError)) {\n if (lastError.with.string) {\n this.message = lastError.with.string;\n } else if (lastError.with.int) {\n this.message = lastError.with.int;\n } else {\n this.message = JSON.stringify(lastError.with);\n }\n }\n }\n}\n\n/**\n * @category Error\n * @description Tezos error that will be thrown when a mistake happens during the preapply stage\n */\nexport class TezosPreapplyFailureError extends Error {\n constructor(public readonly result: any) {\n super();\n this.name = 'TezosPreapplyFailureError';\n this.message = 'Preapply returned an unexpected result';\n }\n}\n\nexport type MergedOperationResult = OperationResultTransaction &\n OperationResultOrigination &\n OperationResultDelegation &\n OperationResultRegisterGlobalConstant &\n OperationResultTxRollupOrigination &\n OperationResultTxRollupSubmitBatch &\n OperationResultTransferTicket &\n Partial<OperationResultSmartRollupOriginate> &\n OperationResultReveal & {\n fee?: string;\n };\n\n// Flatten all operation content results and internal operation results into a single array\n// Some cases where we can have multiple operation results or internal operation results are:\n// - When an operation includes a reveal operation\n// - When an operation is made using the batch API\n// - Smart contract call can contains internal operation results when they call other smart contract internally or originate contracts\nexport const flattenOperationResult = (response: PreapplyResponse | PreapplyResponse[]) => {\n const results = Array.isArray(response) ? response : [response];\n\n const returnedResults: MergedOperationResult[] = [];\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n const content = results[i].contents[j];\n if (hasMetadataWithResult(content) && 'fee' in content) {\n returnedResults.push({\n fee: content.fee,\n ...content.metadata.operation_result,\n });\n\n if (Array.isArray(content.metadata.internal_operation_results)) {\n content.metadata.internal_operation_results.forEach((x) =>\n returnedResults.push(x.result)\n );\n }\n }\n }\n }\n\n return returnedResults;\n};\n\n/***\n * @description Flatten all error from preapply response (including internal error)\n */\nexport const flattenErrors = (\n response: PreapplyResponse | PreapplyResponse[],\n status = 'failed'\n) => {\n const results = Array.isArray(response) ? response : [response];\n\n let errors: TezosGenericOperationError[] = [];\n // Transaction that do not fail will be backtracked in case one failure occur\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n const content = results[i].contents[j];\n if (hasMetadata(content)) {\n if (\n hasMetadataWithResult(content) &&\n (content.metadata.operation_result as OperationResult).status === status\n ) {\n errors = errors.concat(\n (content.metadata.operation_result as OperationResult).errors || []\n );\n }\n if (\n hasMetadataWithInternalOperationResult(content) &&\n Array.isArray(content.metadata.internal_operation_results)\n ) {\n for (const internalResult of content.metadata.internal_operation_results) {\n if ('result' in internalResult && internalResult.result.status === status) {\n errors = errors.concat(internalResult.result.errors || []);\n }\n }\n }\n }\n }\n }\n\n return errors;\n};\n\n/**\n * @category Error\n * @description Error that indicates a general failure happening during an origination operation\n */\nexport class OriginationOperationError extends TaquitoError {\n constructor(public readonly message: string) {\n super();\n this.name = 'OriginationOperationError';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid estimate value being passed\n */\nexport class InvalidEstimateValueError extends ParameterValidationError {\n constructor(public readonly message: string) {\n super();\n this.name = 'InvalidEstimateValueError';\n }\n}\n","import { ParameterValidationError, RpcError, NetworkError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates invalid confirmation count has been passed or configured\n */\nexport class InvalidConfirmationCountError extends ParameterValidationError {\n constructor(public readonly invalidConfirmations: number) {\n super();\n this.name = 'InvalidConfirmationCountError';\n this.message = `Invalid confirmation count ${invalidConfirmations} expecting at least 1`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates that confirmation polling timed out\n */\nexport class ConfirmationTimeoutError extends NetworkError {\n constructor(public readonly message: string) {\n super();\n this.name = 'ConfirmationTimeoutError';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an error being returned from the RPC response\n */\nexport class RPCResponseError extends RpcError {\n constructor(public readonly message: string, public readonly cause?: any) {\n super();\n this.name = 'RPCResponseError';\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResult,\n OperationContentsAndResultReveal,\n OperationResult,\n} from '@taquito/rpc';\nimport { BehaviorSubject, defer, EMPTY, of, range, ReplaySubject, throwError } from 'rxjs';\nimport {\n catchError,\n concatMap,\n endWith,\n filter,\n first,\n map,\n shareReplay,\n switchMap,\n tap,\n timeout,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { ForgedBytes, hasMetadataWithResult } from './types';\nimport { validateOperation, ValidationResult } from '@taquito/utils';\nimport { createObservableFromSubscription } from '../subscribe/create-observable-from-subscription';\nimport { ConfirmationTimeoutError, InvalidConfirmationCountError } from '../errors';\nimport { InvalidOperationHashError } from '@taquito/core';\n\ninterface PollingConfig {\n timeout: number;\n interval: number;\n}\n\n/**\n * @description Utility class to interact with Tezos operations\n */\nexport class Operation {\n private _pollingConfig$ = new ReplaySubject<PollingConfig>(1);\n private lastHead: BlockResponse | undefined;\n\n private currentHead$ = this._pollingConfig$.pipe(\n switchMap((config) => {\n return new BehaviorSubject(config).pipe(\n timeout({\n each: config.timeout * 1000,\n with: () =>\n throwError(() => new ConfirmationTimeoutError(`Confirmation polling timed out`)),\n })\n );\n }),\n switchMap(() => {\n return defer(() =>\n createObservableFromSubscription(this.context.stream.subscribeBlock('head'))\n ).pipe(\n switchMap((newHead) => {\n const prevHead = this.lastHead?.header.level ?? newHead.header.level - 1;\n return range(prevHead + 1, newHead.header.level - prevHead - 1).pipe(\n concatMap((level) => this.context.readProvider.getBlock(level)),\n endWith(newHead)\n );\n }),\n tap((newHead) => (this.lastHead = newHead))\n );\n }),\n shareReplay({ refCount: true })\n );\n\n // Observable that emit once operation is seen in a block\n private confirmed$ = this.currentHead$.pipe(\n map((head) => {\n for (let i = 3; i >= 0; i--) {\n head.operations[i].forEach((op) => {\n if (op.hash === this.hash) {\n this._foundAt = head.header.level;\n }\n });\n }\n\n if (head.header.level - this._foundAt >= 0) {\n return this._foundAt;\n }\n }),\n filter((x) => x !== undefined),\n first(),\n shareReplay()\n );\n\n protected _foundAt = Number.POSITIVE_INFINITY;\n get includedInBlock() {\n return this._foundAt;\n }\n /**\n *\n * @param hash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n * @throws {@link InvalidOperationHashError}\n */\n constructor(\n public readonly hash: string,\n public readonly raw: ForgedBytes,\n public readonly results: OperationContentsAndResult[],\n protected readonly context: Context\n ) {\n if (validateOperation(this.hash) !== ValidationResult.VALID) {\n throw new InvalidOperationHashError(this.hash);\n }\n\n this.confirmed$\n .pipe(\n first(),\n catchError(() => {\n return of(EMPTY);\n })\n )\n .subscribe();\n }\n\n get revealOperation() {\n return (\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'reveal') as\n | OperationContentsAndResultReveal\n | undefined)\n );\n }\n\n public get revealStatus() {\n if (this.revealOperation) {\n return this.revealOperation.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n public get status() {\n return (\n this.results.map((result) => {\n if (hasMetadataWithResult(result)) {\n return (result.metadata.operation_result as OperationResult).status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n }\n\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n * @param timeout [180] Timeout\n */\n async confirmation(confirmations?: number, timeout?: number) {\n if (typeof confirmations !== 'undefined' && confirmations < 1) {\n throw new InvalidConfirmationCountError(confirmations);\n }\n\n const { defaultConfirmationCount, confirmationPollingTimeoutSecond } = this.context.config;\n this._pollingConfig$.next({\n timeout: timeout || confirmationPollingTimeoutSecond,\n } as Required<PollingConfig>);\n\n const conf = confirmations !== undefined ? confirmations : defaultConfirmationCount;\n\n return new Promise<number>((resolve, reject) => {\n this.confirmed$\n .pipe(\n switchMap(() => this.currentHead$),\n filter((head) => head.header.level - this._foundAt >= conf - 1),\n first()\n )\n .subscribe((_) => {\n resolve(this._foundAt + (conf - 1));\n }, reject);\n });\n }\n}\n","import {\n BatchOperationResult,\n OperationContents,\n OperationContentsAndResult,\n OperationContentsAndResultOrigination,\n} from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { BATCH_KINDS } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n hasMetadataWithResult,\n} from './types';\n\nexport class BatchOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContents[],\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n private sumProp(arr: any[], prop: string) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n public getOriginatedContractAddresses(): string[] {\n const originationOpResults = this.results.filter(\n (x) => x.kind === 'origination'\n ) as OperationContentsAndResultOrigination[];\n\n let addresses: string[] = [];\n for (const res of originationOpResults) {\n if (res.metadata.operation_result.originated_contracts) {\n addresses = [...addresses, ...res.metadata.operation_result.originated_contracts];\n }\n }\n\n return addresses;\n }\n\n public get status() {\n return (\n this.results\n .filter((result) => BATCH_KINDS.indexOf(result.kind) !== -1)\n .map((result) => {\n if (hasMetadataWithResult(result)) {\n const opResult = result.metadata.operation_result as BatchOperationResult;\n return opResult.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n }\n\n get fee() {\n return this.sumProp(this.params, 'fee');\n }\n\n get gasLimit() {\n return this.sumProp(this.params, 'gas_limit');\n }\n\n get storageLimit() {\n return this.sumProp(this.params, 'storage_limit');\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return new BigNumber(this.consumedMilliGas).dividedBy(1000).toString();\n }\n\n get consumedMilliGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.results }), 'consumed_milligas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.results }), 'paid_storage_size_diff')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.results });\n }\n}\n","import {\n OperationContentsAndResult,\n RPCRunOperationParam,\n RPCSimulateOperationParam,\n RpcClientInterface,\n} from '@taquito/rpc';\nimport { Context } from './context';\nimport { ForgedBytes, ParamsWithKind, RPCOperation, isOpRequireReveal } from './operations/types';\nimport {\n InvalidEstimateValueError,\n TezosOperationError,\n TezosPreapplyFailureError,\n flattenErrors,\n} from './operations/errors';\nimport {\n createOriginationOperation,\n createRegisterGlobalConstantOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from './contract/prepare';\nimport { OpKind } from '@taquito/rpc';\nimport { InvalidOperationKindError } from '@taquito/utils';\nimport { PreparedOperation } from './prepare';\nimport { Estimate } from './estimate';\n\nexport abstract class Provider {\n get rpc(): RpcClientInterface {\n return this.context.rpc;\n }\n\n get signer() {\n return this.context.signer;\n }\n\n constructor(protected context: Context) {}\n\n protected async forge({ opOb: { branch, contents, protocol }, counter }: PreparedOperation) {\n const forgedBytes = await this.context.forger.forge({ branch, contents });\n return {\n opbytes: forgedBytes,\n opOb: {\n branch,\n contents,\n protocol,\n },\n counter,\n };\n }\n\n protected async estimate<T extends { fee?: number; gasLimit?: number; storageLimit?: number }>(\n { fee, gasLimit, storageLimit, ...rest }: T,\n estimator: (param: T) => Promise<Estimate>\n ) {\n let calculatedFee = fee;\n let calculatedGas = gasLimit;\n let calculatedStorage = storageLimit;\n\n if (calculatedFee && calculatedFee % 1 !== 0) {\n throw new InvalidEstimateValueError(`Fee value must not be a decimal: ${calculatedFee}`);\n }\n if (calculatedGas && calculatedGas % 1 !== 0) {\n throw new InvalidEstimateValueError(\n `Gas Limit value must not be a decimal: ${calculatedGas}`\n );\n }\n if (calculatedStorage && calculatedStorage % 1 !== 0) {\n throw new InvalidEstimateValueError(\n `Storage Limit value must not be a decimal: ${calculatedStorage}`\n );\n }\n\n if (fee === undefined || gasLimit === undefined || storageLimit === undefined) {\n const estimation = await estimator({ fee, gasLimit, storageLimit, ...(rest as any) });\n calculatedFee ??= estimation.suggestedFeeMutez;\n calculatedGas ??= estimation.gasLimit;\n calculatedStorage ??= estimation.storageLimit;\n }\n\n return {\n fee: calculatedFee,\n gasLimit: calculatedGas,\n storageLimit: calculatedStorage,\n };\n }\n\n async getRPCOp(param: ParamsWithKind) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n return createTransferOperation({\n ...param,\n });\n case OpKind.ORIGINATION:\n return createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n })\n );\n case OpKind.DELEGATION:\n return createSetDelegateOperation({\n ...param,\n });\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n return createRegisterGlobalConstantOperation({\n ...param,\n });\n case OpKind.INCREASE_PAID_STORAGE:\n return createIncreasePaidStorageOperation({\n ...param,\n });\n case OpKind.TRANSFER_TICKET:\n return createTransferTicketOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n return createSmartRollupAddMessagesOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return createSmartRollupOriginateOperation({\n ...param,\n });\n default:\n throw new InvalidOperationKindError((param as any).kind);\n }\n }\n\n protected async runOperation(op: RPCRunOperationParam) {\n return {\n opResponse: await this.rpc.runOperation(op),\n op,\n context: this.context.clone(),\n };\n }\n\n protected async simulate(op: RPCSimulateOperationParam) {\n return {\n opResponse: await this.rpc.simulateOperation(op),\n op,\n context: this.context.clone(),\n };\n }\n\n protected async isRevealOpNeeded(op: RPCOperation[] | ParamsWithKind[], pkh: string) {\n return !(await this.isAccountRevealRequired(pkh)) || !this.isRevealRequiredForOpType(op)\n ? false\n : true;\n }\n\n protected async isAccountRevealRequired(publicKeyHash: string) {\n return !(await this.context.readProvider.isAccountRevealed(publicKeyHash, 'head'));\n }\n\n protected isRevealRequiredForOpType(op: RPCOperation[] | ParamsWithKind[]) {\n let opRequireReveal = false;\n for (const operation of op) {\n if (isOpRequireReveal(operation)) {\n opRequireReveal = true;\n }\n }\n return opRequireReveal;\n }\n\n protected async signAndInject(forgedBytes: ForgedBytes) {\n const signed = await this.signer.sign(forgedBytes.opbytes, new Uint8Array([3]));\n forgedBytes.opbytes = signed.sbytes;\n forgedBytes.opOb.signature = signed.prefixSig;\n\n const opResponse: OperationContentsAndResult[] = [];\n const results = await this.rpc.preapplyOperations([forgedBytes.opOb]);\n\n if (!Array.isArray(results)) {\n throw new TezosPreapplyFailureError(results);\n }\n\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n opResponse.push(results[i].contents[j]);\n }\n }\n\n const errors = flattenErrors(results);\n\n if (errors.length) {\n throw new TezosOperationError(\n errors,\n 'Error occurred during validation simulation of operation'\n );\n }\n\n return {\n hash: await this.context.injector.inject(forgedBytes.opbytes),\n forgedBytes,\n opResponse,\n context: this.context.clone(),\n };\n }\n}\n","import { Context } from '../context';\nimport {\n ContractAbstraction,\n ContractStorageType,\n DefaultWalletType,\n SendParams,\n} from '../contract';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { OpKind, withKind } from '../operations/types';\nimport { OriginationWalletOperation } from './origination-operation';\nimport {\n WalletDelegateParams,\n WalletFailingNoopParams,\n WalletIncreasePaidStorageParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\nimport {\n InvalidAddressError,\n InvalidContractAddressError,\n InvalidOperationKindError,\n} from '@taquito/core';\nimport {\n validateAddress,\n validateContractAddress,\n ValidationResult,\n invalidDetail,\n} from '@taquito/utils';\nimport { OperationContentsFailingNoop } from '@taquito/rpc';\n\nexport interface PKHOption {\n forceRefetch?: boolean;\n}\n\nexport type WalletParamsWithKind =\n | withKind<WalletTransferParams, OpKind.TRANSACTION>\n | withKind<WalletOriginateParams, OpKind.ORIGINATION>\n | withKind<WalletDelegateParams, OpKind.DELEGATION>\n | withKind<WalletIncreasePaidStorageParams, OpKind.INCREASE_PAID_STORAGE>;\n\nexport class WalletOperationBatch {\n private operations: WalletParamsWithKind[] = [];\n\n constructor(private walletProvider: WalletProvider, private context: Context) {}\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: WalletTransferParams) {\n const toValidation = validateAddress(params.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n this.operations.push({ kind: OpKind.TRANSACTION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a contract call to the batch\n *\n * @param params Call a contract method\n * @param options Generic operation parameters\n */\n withContractCall(\n params: ContractMethod<Wallet> | ContractMethodObject<Wallet>,\n options: Partial<SendParams> = {}\n ) {\n return this.withTransfer(params.toTransferParams(options));\n }\n\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: WalletDelegateParams) {\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n this.operations.push({ kind: OpKind.DELEGATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination<TWallet extends DefaultWalletType = DefaultWalletType>(\n params: WalletOriginateParams<ContractStorageType<TWallet>>\n ) {\n this.operations.push({ kind: OpKind.ORIGINATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an IncreasePaidStorage operation to the batch\n *\n * @param param IncreasePaidStorage operation parameter\n */\n withIncreasePaidStorage(params: WalletIncreasePaidStorageParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n this.operations.push({ kind: OpKind.INCREASE_PAID_STORAGE, ...params });\n return this;\n }\n\n private async mapOperation(param: WalletParamsWithKind) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n return this.walletProvider.mapTransferParamsToWalletParams(async () => param);\n case OpKind.ORIGINATION:\n return this.walletProvider.mapOriginateParamsToWalletParams(async () =>\n this.context.parser.prepareCodeOrigination({\n ...param,\n })\n );\n case OpKind.DELEGATION:\n return this.walletProvider.mapDelegateParamsToWalletParams(async () => param);\n case OpKind.INCREASE_PAID_STORAGE:\n return this.walletProvider.mapIncreasePaidStorageWalletParams(async () => param);\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n * @throws {@link InvalidOperationKindError}\n */\n with(params: WalletParamsWithKind[]) {\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n this.withTransfer(param);\n break;\n case OpKind.ORIGINATION:\n this.withOrigination(param);\n break;\n case OpKind.DELEGATION:\n this.withDelegation(param);\n break;\n case OpKind.INCREASE_PAID_STORAGE:\n this.withIncreasePaidStorage(param);\n break;\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n return this;\n }\n\n /**\n *\n * @description Submit batch operation to wallet\n *\n */\n async send() {\n const ops: WalletParamsWithKind[] = [];\n\n for (const op of this.operations) {\n ops.push(await this.mapOperation(op));\n }\n\n const opHash = await this.walletProvider.sendOperations(ops);\n\n return this.context.operationFactory.createBatchOperation(opHash);\n }\n}\n\nexport class Wallet {\n constructor(private context: Context) {}\n\n private get walletProvider() {\n return this.context.walletProvider;\n }\n\n private _pkh?: string;\n\n /**\n * @description Retrieve the PKH of the account that is currently in use by the wallet\n *\n * @param option Option to use while fetching the PKH.\n * If forceRefetch is specified the wallet provider implementation will refetch the PKH from the wallet\n */\n async pkh({ forceRefetch }: PKHOption = {}) {\n if (!this._pkh || forceRefetch) {\n this._pkh = await this.walletProvider.getPKH();\n }\n\n return this._pkh;\n }\n\n private walletCommand = <T>(send: () => Promise<T>) => {\n return {\n send,\n };\n };\n\n /**\n *\n * @description Originate a new contract according to the script in parameters.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param originateParams Originate operation parameter\n */\n originate<TWallet extends DefaultWalletType = DefaultWalletType>(\n params: WalletOriginateParams<ContractStorageType<TWallet>>\n ): { send: () => Promise<OriginationWalletOperation<TWallet>> } {\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapOriginateParamsToWalletParams(() =>\n this.context.parser.prepareCodeOrigination({\n ...(params as WalletOriginateParams),\n })\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createOriginationOperation(opHash) as Promise<\n OriginationWalletOperation<TWallet>\n >;\n });\n }\n\n /**\n *\n * @description Set the delegate for a contract.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param delegateParams operation parameter\n */\n setDelegate(params: WalletDelegateParams) {\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapDelegateParamsToWalletParams(\n async () => params\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createDelegationOperation(opHash);\n });\n }\n\n /**\n *\n * @description failing_noop operation that is guaranteed to fail. DISCLAIMER: Not all wallets support signing failing_noop operations.\n *\n * @returns Signature for a failing_noop\n *\n * @param params operation parameter\n */\n async signFailingNoop(params: WalletFailingNoopParams) {\n const op: OperationContentsFailingNoop = {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n };\n const hash = await this.context.readProvider.getBlockHash(params.basedOnBlock);\n const forgedBytes = await this.context.forger.forge({\n branch: hash,\n contents: [op],\n });\n const signature = await this.walletProvider.sign(forgedBytes, Uint8Array.from([3]));\n return {\n signature,\n bytes: forgedBytes,\n signedContent: {\n branch: hash,\n contents: [\n {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n },\n ],\n },\n };\n }\n\n /**\n *\n * @description Register the current address as delegate.\n *\n * @returns An operation handle with the result from the rpc node\n *\n */\n registerDelegate() {\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapDelegateParamsToWalletParams(async () => {\n const delegate = await this.pkh();\n return { delegate };\n });\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createDelegationOperation(opHash);\n });\n }\n\n /**\n *\n * @description Transfer tezos tokens from current address to a specific address or call a smart contract.\n *\n * @returns A wallet command from which we can send the operation to the wallet\n *\n * @param params operation parameter\n */\n transfer(params: WalletTransferParams) {\n const toValidation = validateAddress(params.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapTransferParamsToWalletParams(\n async () => params\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createTransactionOperation(opHash);\n });\n }\n\n /**\n *\n * @description\n *\n * @returns\n *\n * @param params\n */\n increasePaidStorage(params: WalletIncreasePaidStorageParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapIncreasePaidStorageWalletParams(\n async () => params\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createIncreasePaidStorageOperation(opHash);\n });\n }\n\n /**\n *\n * @description Create a batch of operation\n *\n * @returns A batch object from which we can add more operation or send a command to the wallet to execute the batch\n *\n * @param params List of operation to initialize the batch with\n */\n batch(params?: Parameters<WalletOperationBatch['with']>[0]) {\n const batch = new WalletOperationBatch(this.walletProvider, this.context);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n\n /**\n *\n * @description Create an smart contract abstraction for the address specified. Calling entrypoints with the returned\n * smart contract abstraction will leverage the wallet provider to make smart contract calls\n *\n * @param address Smart contract address\n * @throws {@link InvalidContractAddressError} If the contract address is not valid\n */\n async at<T extends ContractAbstraction<Wallet>>(\n address: string,\n contractAbstractionComposer: (abs: ContractAbstraction<Wallet>, context: Context) => T = (x) =>\n x as any\n ): Promise<T> {\n const addressValidation = validateContractAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address, invalidDetail(addressValidation));\n }\n const rpc = this.context.withExtensions().rpc;\n const readProvider = this.context.withExtensions().readProvider;\n const script = await readProvider.getScript(address, 'head');\n const entrypoints = await readProvider.getEntrypoints(address);\n const abs = new ContractAbstraction(\n address,\n script,\n this,\n this.context.contract,\n entrypoints,\n rpc,\n readProvider\n );\n return contractAbstractionComposer(abs, this.context);\n }\n\n getPK() {\n return this.walletProvider.getPK();\n }\n}\n","import { OperationContentsAndResult } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { COST_PER_BYTE } from '../constants';\nimport { flattenOperationResult } from '../operations/errors';\n\nexport interface Receipt {\n totalFee: BigNumber;\n totalGas: BigNumber;\n totalMilliGas: BigNumber;\n totalStorage: BigNumber;\n totalAllocationBurn: BigNumber;\n totalOriginationBurn: BigNumber;\n totalPaidStorageDiff: BigNumber;\n totalStorageBurn: BigNumber;\n}\n\nexport const receiptFromOperation = (\n op: OperationContentsAndResult[],\n { ALLOCATION_BURN, ORIGINATION_BURN } = {\n ALLOCATION_BURN: 257,\n ORIGINATION_BURN: 257,\n }\n): Receipt => {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n const operationResults = flattenOperationResult({ contents: op });\n let totalMilliGas = new BigNumber(0);\n let totalStorage = new BigNumber(0);\n let totalFee = new BigNumber(0);\n let totalOriginationBurn = new BigNumber(0);\n let totalAllocationBurn = new BigNumber(0);\n let totalPaidStorageDiff = new BigNumber(0);\n operationResults.forEach((result) => {\n totalFee = totalFee.plus(result.fee || 0);\n totalOriginationBurn = totalOriginationBurn.plus(\n Array.isArray(result.originated_contracts)\n ? result.originated_contracts.length * ORIGINATION_BURN\n : 0\n );\n totalAllocationBurn = totalAllocationBurn.plus(\n 'allocated_destination_contract' in result ? ALLOCATION_BURN : 0\n );\n totalMilliGas = totalMilliGas.plus(result.consumed_milligas || 0);\n totalPaidStorageDiff = totalPaidStorageDiff.plus(\n 'paid_storage_size_diff' in result ? Number(result.paid_storage_size_diff) || 0 : 0\n );\n });\n\n totalStorage = totalStorage\n .plus(totalAllocationBurn)\n .plus(totalOriginationBurn)\n .plus(totalPaidStorageDiff);\n\n return {\n totalFee,\n totalMilliGas,\n totalGas: totalMilliGas.dividedBy(1000),\n totalStorage,\n totalAllocationBurn,\n totalOriginationBurn,\n totalPaidStorageDiff,\n totalStorageBurn: new BigNumber(totalStorage.multipliedBy(COST_PER_BYTE)),\n };\n};\n","import { TezosToolkitConfigError, NetworkError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates undefined confirmation has not been specified or configured\n */\nexport class ConfirmationUndefinedError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'ConfirmationUndefinedError';\n this.message = 'Default confirmation count can not be undefined';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a generic failure when trying to fetch an observable\n */\nexport class ObservableError extends NetworkError {\n constructor(public readonly message: string) {\n super();\n this.name = 'ObservableError';\n }\n}\n","import { BlockResponse, OperationContentsAndResult, OperationResultStatusEnum } from '@taquito/rpc';\nimport { combineLatest, from, Observable, of, range, ReplaySubject } from 'rxjs';\nimport {\n catchError,\n concatMap,\n distinctUntilChanged,\n endWith,\n filter,\n first,\n map,\n share,\n switchMap,\n takeWhile,\n tap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { Receipt, receiptFromOperation } from './receipt';\nimport { validateOperation, ValidationResult } from '@taquito/utils';\nimport { BlockIdentifier } from '../read-provider/interface';\nimport { InvalidConfirmationCountError } from '../errors';\nimport { ConfirmationUndefinedError, ObservableError } from './errors';\nimport { InvalidOperationHashError } from '@taquito/core';\n\nexport type OperationStatus = 'pending' | 'unknown' | OperationResultStatusEnum;\n\nconst MAX_BRANCH_ANCESTORS = 60;\n\n/**\n * @description WalletOperation allows to monitor operation inclusion on chains and surface information related to the operation\n */\nexport class WalletOperation {\n protected _operationResult = new ReplaySubject<OperationContentsAndResult[]>(1);\n protected _includedInBlock = new ReplaySubject<BlockResponse>(1);\n protected _included = false;\n\n private lastHead: BlockResponse | undefined;\n protected newHead$: Observable<BlockResponse> = this._newHead$.pipe(\n switchMap((newHead) => {\n const prevHead = this.lastHead?.header.level ?? newHead.header.level - 1;\n return range(prevHead + 1, newHead.header.level - prevHead - 1).pipe(\n concatMap((level) => this.context.readProvider.getBlock(level)),\n endWith(newHead)\n );\n }),\n tap((newHead) => (this.lastHead = newHead)),\n share({\n connector: () => new ReplaySubject(1),\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: false,\n })\n );\n\n // Observable that emit once operation is seen in a block\n private confirmed$ = this.newHead$.pipe(\n map((head) => {\n for (const opGroup of head.operations) {\n for (const op of opGroup) {\n if (op.hash === this.opHash) {\n this._included = true;\n this._includedInBlock.next(head);\n this._operationResult.next(op.contents as OperationContentsAndResult[]);\n\n // Return the block where the operation was found\n return head;\n }\n }\n }\n }),\n filter<BlockResponse | undefined, BlockResponse>((x): x is BlockResponse => {\n return typeof x !== 'undefined';\n }),\n first(),\n share({\n connector: () => new ReplaySubject(1),\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: false,\n })\n );\n\n async operationResults() {\n return this._operationResult.pipe(first()).toPromise();\n }\n\n /**\n * @description Receipt expose the total amount of tezos token burn and spent on fees\n * The promise returned by receipt will resolve only once the transaction is included\n */\n async receipt(): Promise<Receipt> {\n const results = await this.operationResults();\n if (!results) {\n throw new ObservableError('Unable to get operation results');\n }\n return receiptFromOperation(results);\n }\n\n /**\n *\n * @param opHash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n * @throws {InvalidOperationHashError}\n */\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n private _newHead$: Observable<BlockResponse>\n ) {\n if (validateOperation(this.opHash) !== ValidationResult.VALID) {\n throw new InvalidOperationHashError(this.opHash);\n }\n this.confirmed$\n .pipe(\n first(),\n catchError(() => of(undefined))\n )\n .subscribe();\n }\n\n async getCurrentConfirmation() {\n if (!this._included) {\n return 0;\n }\n\n return combineLatest([this._includedInBlock, from(this.context.readProvider.getBlock('head'))])\n .pipe(\n map(([foundAtBlock, head]) => {\n return head.header.level - foundAtBlock.header.level + 1;\n }),\n first()\n )\n .toPromise();\n }\n\n async isInCurrentBranch(tipBlockIdentifier: BlockIdentifier = 'head') {\n // By default it is assumed that the operation is in the current branch\n if (!this._included) {\n return true;\n }\n\n const tipBlockHeaderLevel = await this.context.readProvider.getBlockLevel(tipBlockIdentifier);\n const inclusionBlock = await this._includedInBlock.pipe(first()).toPromise();\n if (!inclusionBlock) {\n throw new ObservableError('Inclusion block is undefined');\n }\n const levelDiff = (tipBlockHeaderLevel - inclusionBlock.header.level) as number;\n\n // Block produced before the operation is included are assumed to be part of the current branch\n if (levelDiff <= 0) {\n return true;\n }\n\n const tipBlockLevel = Math.min(\n inclusionBlock.header.level + levelDiff,\n inclusionBlock.header.level + MAX_BRANCH_ANCESTORS\n );\n\n const blocks = new Set(await this.context.readProvider.getLiveBlocks(tipBlockLevel));\n return blocks.has(inclusionBlock.hash);\n }\n\n confirmationObservable(confirmations?: number) {\n if (typeof confirmations !== 'undefined' && confirmations < 1) {\n throw new InvalidConfirmationCountError(confirmations);\n }\n\n const { defaultConfirmationCount } = this.context.config;\n\n const conf = confirmations !== undefined ? confirmations : defaultConfirmationCount;\n\n if (conf === undefined) {\n throw new ConfirmationUndefinedError();\n }\n\n return combineLatest([this._includedInBlock, this.newHead$]).pipe(\n distinctUntilChanged(([, previousHead], [, newHead]) => {\n return previousHead.hash === newHead.hash;\n }),\n map(([foundAtBlock, head]) => {\n return {\n block: head,\n expectedConfirmation: conf,\n currentConfirmation: head.header.level - foundAtBlock.header.level + 1,\n completed: head.header.level - foundAtBlock.header.level >= conf - 1,\n isInCurrentBranch: () => this.isInCurrentBranch(head.hash as BlockIdentifier),\n };\n }),\n takeWhile(({ completed }) => !completed, true)\n );\n }\n\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n */\n confirmation(confirmations?: number) {\n return this.confirmationObservable(confirmations).toPromise();\n }\n}\n","import { WalletOperation, OperationStatus } from './operation';\nimport { Context } from '../context';\nimport { Observable } from 'rxjs';\nimport {\n BlockResponse,\n OpKind,\n OperationContentsAndResultReveal,\n OperationContentsAndResultTransaction,\n} from '@taquito/rpc';\nimport { ObservableError } from './errors';\n\nexport class TransactionWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('operationResult returned undefined');\n }\n\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async transactionOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('operationResult returned undefined');\n }\n return operationResult.find((x) => x.kind === OpKind.TRANSACTION) as\n | OperationContentsAndResultTransaction\n | undefined;\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.transactionOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResultOrigination,\n OperationContentsAndResultReveal,\n OpKind,\n} from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { DefaultWalletType } from '../contract/contract';\nimport { findWithKind } from '../operations/types';\nimport { WalletOperation, OperationStatus } from './operation';\nimport { ObservableError } from './errors';\n\nexport class OriginationWalletOperation<\n TWallet extends DefaultWalletType = DefaultWalletType\n> extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async originationOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return findWithKind(operationResult, OpKind.ORIGINATION) as\n | OperationContentsAndResultOrigination\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return findWithKind(operationResult, OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.originationOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n\n public async contract() {\n const op = await this.originationOperation();\n const address = (op?.metadata.operation_result.originated_contracts || [])[0];\n return this.context.wallet.at<TWallet>(address);\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResultDelegation,\n OperationContentsAndResultReveal,\n OpKind,\n} from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { WalletOperation, OperationStatus } from './operation';\nimport { ObservableError } from './errors';\n\nexport class DelegationWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async delegationOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return operationResult.find((x) => x.kind === OpKind.DELEGATION) as\n | OperationContentsAndResultDelegation\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.delegationOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import { Context } from '../context';\nimport { attachKind, OpKind } from '../operations/types';\nimport {\n WalletDelegateParams,\n WalletIncreasePaidStorageParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\nimport { WalletParamsWithKind } from './wallet';\n\nexport class LegacyWalletProvider implements WalletProvider {\n constructor(private context: Context) {}\n\n async getPKH(): Promise<string> {\n return this.context.signer.publicKeyHash();\n }\n\n async mapTransferParamsToWalletParams(params: () => Promise<WalletTransferParams>) {\n return attachKind(await params(), OpKind.TRANSACTION);\n }\n\n async mapOriginateParamsToWalletParams(params: () => Promise<WalletOriginateParams>) {\n return attachKind(await params(), OpKind.ORIGINATION);\n }\n\n async mapDelegateParamsToWalletParams(params: () => Promise<WalletDelegateParams>) {\n return attachKind(await params(), OpKind.DELEGATION);\n }\n\n async mapIncreasePaidStorageWalletParams(params: () => Promise<WalletIncreasePaidStorageParams>) {\n return attachKind(await params(), OpKind.INCREASE_PAID_STORAGE);\n }\n\n async sendOperations(params: WalletParamsWithKind[]) {\n const op = await this.context.batch.batch(params as any).send();\n return op.hash;\n }\n\n async sign(bytes: string, watermark?: Uint8Array) {\n const { prefixSig } = await this.context.signer.sign(bytes, watermark);\n return prefixSig;\n }\n\n getPK() {\n return this.context.signer.publicKey();\n }\n}\n","import { TransactionOperation } from '../../operations/transaction-operation';\nimport { TransferParams } from '../../operations/types';\nimport { ContractProvider } from '../interface';\nimport { TransactionWalletOperation, Wallet } from '../../wallet';\nimport { ParameterSchema } from \"@taquito/michelson-encoder\";\nimport { ContractMethodInterface, ExplicitTransferParams, SendParams } from './contract-method-interface';\nimport { DEFAULT_SMART_CONTRACT_METHOD_NAME } from '../contract';\n\n/**\n * @description Utility class to send smart contract operation\n * The format for the arguments is the object representation\n */\nexport class ContractMethodObject<T extends ContractProvider | Wallet> implements ContractMethodInterface {\n constructor(\n private provider: T,\n private address: string,\n private parameterSchema: ParameterSchema,\n private name: string,\n private args: any = 'unit',\n private isMultipleEntrypoint = true,\n private isAnonymous = false\n ) { }\n\n /**\n * @description Get the signature of the smart contract method\n */\n getSignature() {\n return this.isAnonymous\n ? this.parameterSchema.ExtractSchema()[this.name]\n : this.parameterSchema.ExtractSchema();\n }\n\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(\n params: Partial<SendParams> = {}\n ): Promise<T extends Wallet ? TransactionWalletOperation : TransactionOperation> {\n if (this.provider instanceof Wallet) {\n return (this.provider as unknown as Wallet).transfer(this.toTransferParams(params)).send() as any;\n } else {\n return this.provider.transfer(this.toTransferParams(params)) as any;\n }\n }\n\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams({\n fee,\n gasLimit,\n storageLimit,\n source,\n amount = 0,\n mutez = false,\n }: Partial<SendParams> = {}): TransferParams {\n const fullTransferParams: ExplicitTransferParams = {\n to: this.address,\n amount,\n fee,\n mutez,\n source,\n gasLimit,\n storageLimit,\n parameter: {\n entrypoint: this.isMultipleEntrypoint ? this.name : DEFAULT_SMART_CONTRACT_METHOD_NAME,\n value: this.isAnonymous\n ? this.parameterSchema.EncodeObject({ [this.name]: this.args })\n : this.parameterSchema.EncodeObject(this.args),\n },\n };\n return fullTransferParams;\n }\n}","import { TransactionOperation } from '../../operations/transaction-operation';\nimport { TransferParams } from '../../operations/types';\nimport { ContractProvider } from '../interface';\nimport { TransactionWalletOperation, Wallet } from '../../wallet';\nimport { ParameterSchema } from '@taquito/michelson-encoder';\nimport {\n ContractMethodInterface,\n ExplicitTransferParams,\n SendParams,\n} from './contract-method-interface';\nimport { DEFAULT_SMART_CONTRACT_METHOD_NAME } from '../contract';\nimport { InvalidParameterError } from '../errors';\n\n/**\n * @description Utility class to send smart contract operation\n * The format for the arguments is the flattened representation\n */\nexport class ContractMethod<T extends ContractProvider | Wallet>\n implements ContractMethodInterface\n{\n constructor(\n private provider: T,\n private address: string,\n private parameterSchema: ParameterSchema,\n private name: string,\n private args: any[],\n private isMultipleEntrypoint = true,\n private isAnonymous = false\n ) {}\n\n private validateArgs(args: any[], schema: ParameterSchema, name: string) {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidParameterError(name, sigs, args);\n }\n }\n\n /**\n * @description Get the schema of the smart contract method\n */\n get schema() {\n return this.isAnonymous\n ? this.parameterSchema.ExtractSchema()[this.name]\n : this.parameterSchema.ExtractSchema();\n }\n\n /**\n * @description Get the signature of the smart contract method\n */\n getSignature() {\n if (this.isAnonymous) {\n const sig = this.parameterSchema.ExtractSignatures().find((x: any[]) => x[0] === this.name);\n if (sig) {\n sig.shift();\n return sig;\n }\n } else {\n const sig = this.parameterSchema.ExtractSignatures();\n return sig.length == 1 ? sig[0] : sig;\n }\n }\n\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(\n params: Partial<SendParams> = {}\n ): Promise<T extends Wallet ? TransactionWalletOperation : TransactionOperation> {\n if (this.provider instanceof Wallet) {\n return (this.provider as unknown as Wallet)\n .transfer(this.toTransferParams(params))\n .send() as any;\n } else {\n return this.provider.transfer(this.toTransferParams(params)) as any;\n }\n }\n\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams({\n fee,\n gasLimit,\n storageLimit,\n source,\n amount = 0,\n mutez = false,\n }: Partial<SendParams> = {}): TransferParams {\n const fullTransferParams: ExplicitTransferParams = {\n to: this.address,\n amount,\n fee,\n mutez,\n source,\n gasLimit,\n storageLimit,\n parameter: {\n entrypoint: this.isMultipleEntrypoint ? this.name : DEFAULT_SMART_CONTRACT_METHOD_NAME,\n value: this.isAnonymous\n ? this.parameterSchema.Encode(this.name, ...this.args)\n : this.parameterSchema.Encode(...this.args),\n },\n };\n return fullTransferParams;\n }\n}\n","import { ViewSchema } from '@taquito/michelson-encoder';\nimport {\n MichelsonV1Expression,\n MichelsonV1ExpressionExtended,\n RpcClientInterface,\n RPCRunCodeParam,\n RPCRunScriptViewParam,\n} from '@taquito/rpc';\nimport { validateAddress, ValidationResult } from '@taquito/utils';\nimport { TzReadProvider } from '../../read-provider/interface';\nimport {\n InvalidViewSimulationContext,\n ViewSimulationError,\n validateAndExtractFailwith,\n} from '../errors';\nimport { InvalidViewParameterError } from '@taquito/core';\n\nexport interface ExecutionContextParams {\n source?: string;\n viewCaller: string;\n}\n\nexport class OnChainView {\n constructor(\n private _rpc: RpcClientInterface,\n private _readProvider: TzReadProvider,\n private _contractAddress: string,\n private _smartContractViewSchema: ViewSchema,\n private _contractStorageType: MichelsonV1Expression,\n private _args: any = 'Unit'\n ) {}\n\n /**\n * @description Get the signature of the smart contract view\n */\n getSignature() {\n return {\n parameter: this._smartContractViewSchema.extractArgsSchema(),\n result: this._smartContractViewSchema.extractResultSchema(),\n };\n }\n\n /**\n * @description Get the result of the view simulation\n * @param executionContext.source the public key hash of the account who initialized this view execution.\n * @param executionContext.viewCaller the contract address which is the caller of view.\n */\n async executeView(executionContext: ExecutionContextParams) {\n this.verifyContextExecution(executionContext);\n const chainId = await this._readProvider.getChainId();\n const viewArgs = this.transformArgsToMichelson();\n const scriptView: RPCRunScriptViewParam = {\n contract: this._contractAddress,\n view: this._smartContractViewSchema.viewName,\n input: viewArgs,\n chain_id: chainId,\n source: executionContext.viewCaller,\n };\n if (executionContext.source) {\n scriptView.payer = executionContext.source;\n }\n return this.executeViewAndDecodeResult(scriptView);\n }\n\n private verifyContextExecution(executionContext: ExecutionContextParams) {\n if (\n executionContext.source &&\n validateAddress(executionContext.source) !== ValidationResult.VALID\n ) {\n throw new InvalidViewSimulationContext(\n `The source account who initialized the view execution is invalid: ${executionContext.source}.`\n );\n }\n if (\n !executionContext.viewCaller ||\n validateAddress(executionContext.viewCaller) !== ValidationResult.VALID\n ) {\n throw new InvalidViewSimulationContext(\n `The contract which is the caller of view is invalid: ${executionContext.viewCaller}.`\n );\n }\n }\n\n private transformArgsToMichelson() {\n try {\n return this._smartContractViewSchema.encodeViewArgs(this._args);\n } catch (error) {\n throw new InvalidViewParameterError(\n this._smartContractViewSchema.viewName,\n this.getSignature(),\n this._args,\n error\n );\n }\n }\n /**\n * @description Loops through the view's instructions and replace BALANCE, SENDER, SELF_ADDRESS and AMOUNT with Michelson expressions that match the current context, if applicable.\n *\n * Certain specific instructions have different semantics in view:\n * BALANCE represents the current amount of mutez held by the contract where view is;\n * SENDER represents the contract which is the caller of view;\n * SELF_ADDRESS represents the contract where view is;\n * AMOUNT is always 0 mutez.\n *\n */\n private adaptViewCodeToContext(\n instructions: MichelsonV1ExpressionExtended[],\n viewCaller: string,\n contractBalance: string\n ) {\n const instructionsToReplace = {\n BALANCE: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: contractBalance }] }],\n SENDER: [{ prim: 'PUSH', args: [{ prim: 'address' }, { string: viewCaller }] }],\n SELF_ADDRESS: [\n { prim: 'PUSH', args: [{ prim: 'address' }, { string: this._contractAddress }] },\n ],\n AMOUNT: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: '0' }] }],\n };\n\n instructions.forEach((inst: any, i: number) => {\n if (inst.prim in instructionsToReplace) {\n instructions[i] = Object(instructionsToReplace)[inst.prim];\n }\n if (inst.args && inst.args.length !== 0) {\n this.adaptViewCodeToContext(inst.args, viewCaller, contractBalance);\n } else if (Array.isArray(inst)) {\n this.adaptViewCodeToContext(inst, viewCaller, contractBalance);\n }\n });\n return instructions;\n }\n\n private async executeViewAndDecodeResult(viewScript: RPCRunScriptViewParam | RPCRunCodeParam) {\n let storage: MichelsonV1ExpressionExtended;\n try {\n storage = (await this._rpc.runScriptView(viewScript as RPCRunScriptViewParam))\n .data as MichelsonV1ExpressionExtended;\n } catch (error: any) {\n const failWith = validateAndExtractFailwith(error);\n throw failWith\n ? new ViewSimulationError(\n `The simulation of the on-chain view named ${\n this._smartContractViewSchema.viewName\n } failed with: ${JSON.stringify(failWith)}`,\n this._smartContractViewSchema.viewName,\n failWith,\n error\n )\n : error;\n }\n return this._smartContractViewSchema.decodeViewResult(storage);\n }\n}\n","import { Wallet } from '../../wallet';\nimport { ContractProvider } from '../../contract';\nimport { ContractMethodObject } from './contract-method-object-param';\nimport { ContractMethod } from './contract-method-flat-param';\nimport { ParameterSchema, ViewSchema } from '@taquito/michelson-encoder';\nimport { RpcClientInterface, MichelsonV1Expression } from '@taquito/rpc';\nimport { OnChainView } from './contract-on-chain-view';\nimport { TzReadProvider } from '../../read-provider/interface';\n\nexport class ContractMethodFactory<T extends ContractProvider | Wallet> {\n constructor(private provider: T, private contractAddress: string) {}\n\n createContractMethodFlatParams(\n smartContractMethodSchema: ParameterSchema,\n smartContractMethodName: string,\n args: any[],\n isMultipleEntrypoint = true,\n isAnonymous = false\n ) {\n return new ContractMethod<T>(\n this.provider,\n this.contractAddress,\n smartContractMethodSchema,\n smartContractMethodName,\n args,\n isMultipleEntrypoint,\n isAnonymous\n );\n }\n\n createContractMethodObjectParam(\n smartContractMethodSchema: ParameterSchema,\n smartContractMethodName: string,\n args: any[],\n isMultipleEntrypoint = true,\n isAnonymous = false\n ) {\n return new ContractMethodObject<T>(\n this.provider,\n this.contractAddress,\n smartContractMethodSchema,\n smartContractMethodName,\n args,\n isMultipleEntrypoint,\n isAnonymous\n );\n }\n\n createContractViewObjectParam(\n rpc: RpcClientInterface,\n readProvider: TzReadProvider,\n smartContractViewSchema: ViewSchema,\n contractStorageType: MichelsonV1Expression,\n viewArgs: any\n ) {\n return new OnChainView(\n rpc,\n readProvider,\n this.contractAddress,\n smartContractViewSchema,\n contractStorageType,\n viewArgs\n );\n }\n}\n","import { ParameterSchema, Schema, ViewSchema, EventSchema } from '@taquito/michelson-encoder';\nimport {\n EntrypointsResponse,\n MichelsonV1Expression,\n RpcClientInterface,\n ScriptResponse,\n} from '@taquito/rpc';\nimport {\n invalidDetail,\n validateChain,\n validateContractAddress,\n ValidationResult,\n} from '@taquito/utils';\nimport { ChainIds } from '../constants';\nimport { TzReadProvider } from '../read-provider/interface';\nimport { Wallet } from '../wallet';\nimport { ContractMethodFactory } from './contract-methods/contract-method-factory';\nimport { ContractMethod } from './contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from './contract-methods/contract-method-object-param';\nimport { OnChainView } from './contract-methods/contract-on-chain-view';\nimport { InvalidParameterError } from './errors';\nimport { ContractProvider, StorageProvider } from './interface';\nimport { InvalidChainIdError, DeprecationError } from '@taquito/core';\n\nexport const DEFAULT_SMART_CONTRACT_METHOD_NAME = 'default';\n\n/**\n * @description Utility class to retrieve data from a smart contract's storage without incurring fees via a contract's view method\n */\nexport class ContractView {\n constructor(\n private currentContract: ContractAbstraction<ContractProvider | Wallet>,\n private name: string,\n private callbackParametersSchema: ParameterSchema,\n private parameterSchema: ParameterSchema,\n private args: any[],\n private rpc: RpcClientInterface,\n private readProvider: TzReadProvider\n ) {}\n\n async read(chainId?: ChainIds) {\n const chainIdValidation = validateChain(chainId ?? '');\n if (validateContractAddress(chainId ?? '') == ValidationResult.VALID) {\n throw new DeprecationError(\n `Since version 12, the lambda view no longer depends on a lambda contract. The read method no longer accepts a contract address as a parameter.`\n );\n } else if (chainId && chainIdValidation !== ValidationResult.VALID) {\n throw new InvalidChainIdError(chainId, invalidDetail(chainIdValidation));\n }\n const arg = this.parameterSchema.Encode(...this.args);\n const result = await this.rpc.runView({\n contract: this.currentContract.address,\n entrypoint: this.name,\n input: arg,\n chain_id: chainId ? chainId : await this.readProvider.getChainId(),\n });\n return this.callbackParametersSchema.Execute(result.data);\n }\n}\n\nconst validateArgs = (args: any[], schema: ParameterSchema, name: string) => {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidParameterError(name, sigs, args);\n }\n};\n\n// lambda view tzip4\nconst isView = (entrypoint: MichelsonV1Expression): boolean => {\n let isView = false;\n if ('prim' in entrypoint && entrypoint.prim === 'pair' && entrypoint.args) {\n const lastElement = entrypoint.args[entrypoint.args.length - 1];\n if ('prim' in lastElement && lastElement.prim === 'contract') {\n isView = true;\n }\n }\n return isView;\n};\n\nexport type Contract = ContractAbstraction<ContractProvider>;\nexport type WalletContract = ContractAbstraction<Wallet>;\n\ntype DefaultMethods<T extends ContractProvider | Wallet> = Record<\n string,\n (...args: any[]) => ContractMethod<T>\n>;\ntype DefaultMethodsObject<T extends ContractProvider | Wallet> = Record<\n string,\n (args?: any) => ContractMethodObject<T>\n>;\ntype DefaultViews = Record<string, (...args: any[]) => ContractView>;\ntype DefaultContractViews = Record<string, (args?: any) => OnChainView>;\ntype DefaultStorage = unknown; // Record<string, unknown>;\n\ntype PromiseReturnType<T extends (...args: any) => any> = T extends (\n ...args: any\n) => Promise<infer R>\n ? R\n : any;\nexport type ContractStorageType<T extends ContractAbstraction<ContractProvider | Wallet>> =\n PromiseReturnType<T['storage']>;\nexport type DefaultContractType = ContractAbstraction<ContractProvider>;\nexport type DefaultWalletType = ContractAbstraction<Wallet>;\n\n/**\n * @description Smart contract abstraction\n */\nexport class ContractAbstraction<\n T extends ContractProvider | Wallet,\n TMethods extends DefaultMethods<T> = DefaultMethods<T>,\n TMethodsObject extends DefaultMethodsObject<T> = DefaultMethodsObject<T>,\n TViews extends DefaultViews = DefaultViews,\n TContractViews extends DefaultContractViews = DefaultContractViews,\n TStorage extends DefaultStorage = DefaultStorage\n> {\n private contractMethodFactory: ContractMethodFactory<T>;\n /**\n * @description Contains methods that are implemented by the target Tezos Smart Contract, and offers the user to call the Smart Contract methods as if they were native TS/JS methods.\n * NB: if the contract contains annotation it will include named properties; if not it will be indexed by a number.\n *\n */\n public methods: TMethods = {} as TMethods;\n /**\n * @description Contains methods that are implemented by the target Tezos Smart Contract, and offers the user to call the Smart Contract methods as if they were native TS/JS methods.\n * `methodsObject` serves the exact same purpose as the `methods` member. The difference is that it allows passing the parameter in an object format when calling the smart contract method (instead of the flattened representation)\n * NB: if the contract contains annotation it will include named properties; if not it will be indexed by a number.\n *\n */\n public methodsObject: TMethodsObject = {} as TMethodsObject;\n /**\n * @description Contains lamda views (tzip4) that are implemented by the target Tezos Smart Contract, and offers the user to call the lambda views as if they were native TS/JS methods.\n * NB: These are the view defined in the tzip4 standard, not the views introduced by the Hangzhou protocol.\n */\n public views: TViews = {} as TViews;\n /**\n * @description Contains on-chain views that are defined by the target Tezos Smart Contract, and offers the user to simulate the views execution as if they were native TS/JS methods.\n * NB: the expected format for the parameter when calling a smart contract view is the object format (same format as for the storage) and not the flattened representation.\n *\n */\n public contractViews: TContractViews = {} as TContractViews;\n\n public readonly schema: Schema;\n\n public readonly parameterSchema: ParameterSchema;\n public readonly viewSchema: ViewSchema[];\n public readonly eventSchema: EventSchema[];\n\n constructor(\n public readonly address: string,\n public readonly script: ScriptResponse,\n provider: T,\n private storageProvider: StorageProvider,\n public readonly entrypoints: EntrypointsResponse,\n private rpc: RpcClientInterface,\n private readProvider: TzReadProvider\n ) {\n this.contractMethodFactory = new ContractMethodFactory(provider, address);\n this.schema = Schema.fromRPCResponse({ script: this.script });\n this.parameterSchema = ParameterSchema.fromRPCResponse({ script: this.script });\n\n this.viewSchema = ViewSchema.fromRPCResponse({ script: this.script });\n if (this.viewSchema.length !== 0) {\n this._initializeOnChainViews(this, rpc, this.readProvider, this.viewSchema);\n }\n this.eventSchema = EventSchema.fromRPCResponse({ script: this.script });\n this._initializeMethods(this, this.entrypoints.entrypoints, this.rpc, this.readProvider);\n }\n\n private _initializeMethods(\n currentContract: ContractAbstraction<T>,\n entrypoints: {\n [key: string]: object;\n },\n rpc: RpcClientInterface,\n readProvider: TzReadProvider\n ) {\n const parameterSchema = this.parameterSchema;\n const keys = Object.keys(entrypoints);\n if (parameterSchema.isMultipleEntryPoint) {\n keys.forEach((smartContractMethodName) => {\n const smartContractMethodSchema = new ParameterSchema(entrypoints[smartContractMethodName]);\n\n (this.methods as DefaultMethods<T>)[smartContractMethodName] = function (...args: any[]) {\n return currentContract.contractMethodFactory.createContractMethodFlatParams(\n smartContractMethodSchema,\n smartContractMethodName,\n args\n );\n };\n\n (this.methodsObject as DefaultMethodsObject<T>)[smartContractMethodName] = function (\n args: any\n ) {\n return currentContract.contractMethodFactory.createContractMethodObjectParam(\n smartContractMethodSchema,\n smartContractMethodName,\n args\n );\n };\n\n if (isView(entrypoints[smartContractMethodName])) {\n const view = function (...args: any[]) {\n const entrypointParamWithoutCallback = (entrypoints[smartContractMethodName] as any)\n .args[0];\n const smartContractMethodSchemaWithoutCallback = new ParameterSchema(\n entrypointParamWithoutCallback\n );\n const parametersCallback = (entrypoints[smartContractMethodName] as any).args[1]\n .args[0];\n const smartContractMethodCallbackSchema = new ParameterSchema(parametersCallback);\n\n validateArgs(args, smartContractMethodSchemaWithoutCallback, smartContractMethodName);\n return new ContractView(\n currentContract,\n smartContractMethodName,\n smartContractMethodCallbackSchema,\n smartContractMethodSchemaWithoutCallback,\n args,\n rpc,\n readProvider\n );\n };\n (this.views as DefaultViews)[smartContractMethodName] = view;\n }\n });\n\n // Deal with methods with no annotations which were not discovered by the RPC endpoint\n // Methods with no annotations are discovered using parameter schema\n const anonymousMethods = Object.keys(parameterSchema.ExtractSchema()).filter(\n (key) => Object.keys(entrypoints).indexOf(key) === -1\n );\n\n anonymousMethods.forEach((smartContractMethodName) => {\n (this.methods as DefaultMethods<T>)[smartContractMethodName] = function (...args: any[]) {\n return currentContract.contractMethodFactory.createContractMethodFlatParams(\n parameterSchema,\n smartContractMethodName,\n args,\n false,\n true\n );\n };\n\n (this.methodsObject as DefaultMethodsObject<T>)[smartContractMethodName] = function (\n args: any\n ) {\n return currentContract.contractMethodFactory.createContractMethodObjectParam(\n parameterSchema,\n smartContractMethodName,\n args,\n false,\n true\n );\n };\n });\n } else {\n const smartContractMethodSchema = this.parameterSchema;\n (this.methods as DefaultMethods<T>)[DEFAULT_SMART_CONTRACT_METHOD_NAME] = function (\n ...args: any[]\n ) {\n return currentContract.contractMethodFactory.createContractMethodFlatParams(\n smartContractMethodSchema,\n DEFAULT_SMART_CONTRACT_METHOD_NAME,\n args,\n false\n );\n };\n\n (this.methodsObject as DefaultMethodsObject<T>)[DEFAULT_SMART_CONTRACT_METHOD_NAME] =\n function (args: any) {\n return currentContract.contractMethodFactory.createContractMethodObjectParam(\n smartContractMethodSchema,\n DEFAULT_SMART_CONTRACT_METHOD_NAME,\n args,\n false\n );\n };\n }\n }\n\n private _initializeOnChainViews(\n currentContract: ContractAbstraction<T>,\n rpc: RpcClientInterface,\n readProvider: TzReadProvider,\n allContractViews: ViewSchema[]\n ) {\n const storageType = this.schema.val;\n\n allContractViews.forEach((viewSchema) => {\n (this.contractViews as DefaultContractViews)[viewSchema.viewName] = function (args: any) {\n return currentContract.contractMethodFactory.createContractViewObjectParam(\n rpc,\n readProvider,\n viewSchema,\n storageType,\n args\n );\n };\n });\n }\n\n /**\n * @description Return a friendly representation of the smart contract storage\n */\n public storage<T extends TStorage = TStorage>() {\n return this.storageProvider.getStorage<T>(this.address, this.schema);\n }\n\n /**\n *\n * @description Return a friendly representation of the smart contract big map value\n *\n * @param key BigMap key to fetch\n *\n * @deprecated getBigMapKey has been deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n public bigMap(key: string) {\n return this.storageProvider.getBigMapKey(this.address, key, this.schema);\n }\n}\n","const setDelegate = (key: string) => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n {\n prim: 'PUSH',\n args: [{ prim: 'key_hash' }, { string: key }],\n },\n { prim: 'SOME' },\n { prim: 'SET_DELEGATE' },\n { prim: 'CONS' },\n ];\n};\n\nconst transferImplicit = (key: string, mutez: number) => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n {\n prim: 'PUSH',\n args: [{ prim: 'key_hash' }, { string: key }],\n },\n { prim: 'IMPLICIT_ACCOUNT' },\n {\n prim: 'PUSH',\n args: [{ prim: 'mutez' }, { int: `${mutez}` }],\n },\n { prim: 'UNIT' },\n { prim: 'TRANSFER_TOKENS' },\n { prim: 'CONS' },\n ];\n};\n\nconst removeDelegate = () => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n { prim: 'NONE', args: [{ prim: 'key_hash' }] },\n { prim: 'SET_DELEGATE' },\n { prim: 'CONS' },\n ];\n};\n\nconst transferToContract = (key: string, amount: number) => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n {\n prim: 'PUSH',\n args: [{ prim: 'address' }, { string: key }],\n },\n { prim: 'CONTRACT', args: [{ prim: 'unit' }] },\n {\n prim: 'IF_NONE',\n args: [[{ prim: 'UNIT' }, { prim: 'FAILWITH' }], []],\n },\n {\n prim: 'PUSH',\n args: [{ prim: 'mutez' }, { int: `${amount}` }],\n },\n { prim: 'UNIT' },\n { prim: 'TRANSFER_TOKENS' },\n { prim: 'CONS' },\n ];\n};\n\nexport const MANAGER_LAMBDA = {\n setDelegate,\n removeDelegate,\n transferImplicit,\n transferToContract,\n};\n","const code = [\n {\n prim: 'parameter',\n args: [\n {\n prim: 'lambda',\n args: [\n { prim: 'unit' },\n {\n prim: 'pair',\n args: [{ prim: 'list', args: [{ prim: 'operation' }] }, { prim: 'unit' }],\n },\n ],\n },\n ],\n },\n { prim: 'storage', args: [{ prim: 'unit' }] },\n { prim: 'code', args: [[{ prim: 'CAR' }, { prim: 'UNIT' }, { prim: 'EXEC' }]] },\n];\n\nconst storage = 'Unit';\n\nexport const VIEW_LAMBDA = {\n code,\n storage\n}\n","import { Wallet } from '../wallet/wallet';\nimport { Context } from '../context';\nimport { ContractAbstraction } from './contract';\nimport { ContractProvider } from './interface';\n\nexport function compose<\n ContractAbsComposer1 extends ContractAbstraction<ContractProvider | Wallet>,\n ContractAbsComposer2 extends ContractAbstraction<ContractProvider | Wallet>,\n ContractAbstractionComposed\n>(\n functioncomposer1: (abs: ContractAbsComposer1, context: Context) => ContractAbsComposer2,\n functioncomposer2: (abs: ContractAbsComposer2, context: Context) => ContractAbstractionComposed\n): (abs: ContractAbsComposer1, context: Context) => ContractAbstractionComposed {\n return (contractAbstraction, context) =>\n functioncomposer2(functioncomposer1(contractAbstraction, context), context);\n}\n","import BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\n\nexport class SaplingStateAbstraction {\n constructor(private id: BigNumber, private provider: ContractProvider) { }\n\n /**\n *\n * @description Fetch the sapling state\n * \n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a json object of the sapling_state\n *\n */\n async getSaplingDiff(block?: number) {\n return this.provider.getSaplingDiffByID(this.id.toString(), block);\n }\n\n getId() {\n return this.id.toString();\n }\n}\n","import {\n OperationContents,\n OpKind,\n VotingPeriodBlockResult,\n PreapplyParams,\n ConstantsResponse,\n} from '@taquito/rpc';\nimport {\n DelegateParams,\n RevealParams,\n RPCOperation,\n RPCOpWithFee,\n RPCOpWithSource,\n isOpRequireReveal,\n RegisterGlobalConstantParams,\n TransferParams,\n OriginateParams,\n UpdateConsensusKeyParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n BallotParams,\n ProposalsParams,\n DrainDelegateParams,\n ParamsWithKind,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n isOpWithFee,\n RegisterDelegateParams,\n ActivationParams,\n} from '../operations/types';\nimport { PreparationProvider, PreparedOperation } from './interface';\nimport { DEFAULT_FEE, DEFAULT_STORAGE_LIMIT, Protocols, getRevealGasLimit } from '../constants';\nimport { RPCResponseError } from '../errors';\nimport { PublicKeyNotFoundError, InvalidOperationKindError, DeprecationError } from '@taquito/core';\nimport { Context } from '../context';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { ContractProvider } from '../contract/interface';\nimport {\n createSetDelegateOperation,\n createTransferOperation,\n createRevealOperation,\n createRegisterGlobalConstantOperation,\n createOriginationOperation,\n createUpdateConsensusKeyOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createBallotOperation,\n createProposalsOperation,\n createDrainDelegateOperation,\n DefaultContractType,\n ContractStorageType,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n createRegisterDelegateOperation,\n createActivationOperation,\n} from '../contract';\nimport { Estimate } from '../estimate';\nimport { ForgeParams } from '@taquito/local-forging';\nimport { Provider } from '../provider';\nimport BigNumber from 'bignumber.js';\nimport { BlockIdentifier } from '../read-provider/interface';\n\ninterface Limits {\n fee?: number;\n storageLimit?: number;\n gasLimit?: number;\n}\n\nconst mergeLimits = (\n userDefinedLimit: Limits,\n defaultLimits: Required<Limits>\n): Required<Limits> => {\n return {\n fee: userDefinedLimit.fee ?? defaultLimits.fee,\n gasLimit: userDefinedLimit.gasLimit ?? defaultLimits.gasLimit,\n storageLimit: userDefinedLimit.storageLimit ?? defaultLimits.storageLimit,\n };\n};\n\n/**\n * @description PrepareProvider is a utility class to output the prepared format of an operation\n */\nexport class PrepareProvider extends Provider implements PreparationProvider {\n #counters: { [key: string]: number };\n\n constructor(protected context: Context) {\n super(context);\n this.#counters = {};\n }\n\n private async getBlockHash(block?: BlockIdentifier) {\n return this.context.readProvider.getBlockHash(block ?? 'head~2');\n }\n\n private async getProtocolHash() {\n return this.context.readProvider.getNextProtocol('head');\n }\n\n private async getHeadCounter(pkh: string): Promise<string> {\n return this.context.readProvider.getCounter(pkh, 'head') ?? '0';\n }\n\n private adjustGasForBatchOperation(\n gasLimitBlock: BigNumber,\n gaslimitOp: BigNumber,\n numberOfOps: number\n ) {\n return BigNumber.min(gaslimitOp, gasLimitBlock.div(numberOfOps + 1));\n }\n\n private async getAccountLimits(\n pkh: string,\n constants: Pick<\n ConstantsResponse,\n | 'hard_gas_limit_per_operation'\n | 'hard_gas_limit_per_block'\n | 'hard_storage_limit_per_operation'\n | 'cost_per_byte'\n >,\n numberOfOps?: number\n ) {\n const balance = await this.context.readProvider.getBalance(pkh, 'head');\n const {\n hard_gas_limit_per_operation,\n hard_gas_limit_per_block,\n hard_storage_limit_per_operation,\n cost_per_byte,\n } = constants;\n return {\n fee: 0,\n gasLimit: numberOfOps\n ? Math.floor(\n this.adjustGasForBatchOperation(\n hard_gas_limit_per_block,\n hard_gas_limit_per_operation,\n numberOfOps\n ).toNumber()\n )\n : hard_gas_limit_per_operation.toNumber(),\n storageLimit: Math.floor(\n BigNumber.min(balance.dividedBy(cost_per_byte), hard_storage_limit_per_operation).toNumber()\n ),\n };\n }\n\n private getFee(op: RPCOpWithFee, pkh: string, headCounter: number) {\n if (!this.#counters[pkh] || this.#counters[pkh] < headCounter) {\n this.#counters[pkh] = headCounter;\n }\n const opCounter = ++this.#counters[pkh];\n\n return {\n counter: `${opCounter}`,\n fee: typeof op.fee === 'undefined' ? '0' : `${op.fee}`,\n gas_limit: typeof op.gas_limit === 'undefined' ? '0' : `${op.gas_limit}`,\n storage_limit: typeof op.storage_limit === 'undefined' ? '0' : `${op.storage_limit}`,\n };\n }\n\n private getSource(op: RPCOpWithSource, pkh: string, source: string | undefined) {\n return { source: typeof op.source === 'undefined' ? source || pkh : op.source };\n }\n\n private async addRevealOperationIfNeeded(operation: RPCOperation, publicKeyHash: string) {\n if (isOpRequireReveal(operation)) {\n const ops: RPCOperation[] = [operation];\n const { publicKey, pkh } = await this.getKeys();\n if (await this.isAccountRevealRequired(publicKeyHash)) {\n if (!publicKey) {\n throw new PublicKeyNotFoundError(pkh);\n }\n ops.unshift(\n await createRevealOperation(\n {\n fee: DEFAULT_FEE.REVEAL,\n storageLimit: DEFAULT_STORAGE_LIMIT.REVEAL,\n gasLimit: getRevealGasLimit(pkh),\n },\n publicKeyHash,\n publicKey\n )\n );\n return ops;\n }\n }\n return operation;\n }\n\n private async getKeys(): Promise<{\n pkh: string;\n publicKey?: string;\n }> {\n const isSignerConfigured = this.context.isAnySignerConfigured();\n return {\n pkh: isSignerConfigured\n ? await this.signer.publicKeyHash()\n : await this.context.walletProvider.getPKH(),\n publicKey: isSignerConfigured ? await this.signer.publicKey() : undefined,\n };\n }\n\n private convertIntoArray(op: RPCOperation | RPCOperation[]): RPCOperation[] {\n if (Array.isArray(op)) {\n return [...op];\n } else {\n return [op];\n }\n }\n\n private constructOpContents(\n ops: RPCOperation[],\n headCounter: number,\n pkh: string,\n source?: string | undefined,\n currentVotingPeriod?: VotingPeriodBlockResult\n ): OperationContents[] {\n return ops.map((op: RPCOperation) => {\n switch (op.kind) {\n case OpKind.ACTIVATION:\n case OpKind.DRAIN_DELEGATE:\n return {\n ...op,\n };\n case OpKind.ORIGINATION:\n return {\n ...op,\n balance: typeof op.balance !== 'undefined' ? `${op.balance}` : '0',\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.TRANSACTION: {\n const cops = {\n ...op,\n amount: typeof op.amount !== 'undefined' ? `${op.amount}` : '0',\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n if (cops.source.toLowerCase().startsWith('kt1')) {\n throw new DeprecationError(\n `KT1 addresses are not supported as source since ${Protocols.PsBabyM1}`\n );\n }\n return cops;\n }\n case OpKind.REVEAL:\n case OpKind.DELEGATION:\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n case OpKind.UPDATE_CONSENSUS_KEY:\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return {\n ...op,\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.TRANSFER_TICKET:\n return {\n ...op,\n ticket_amount: `${op.ticket_amount}`,\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.INCREASE_PAID_STORAGE:\n return {\n ...op,\n amount: `${op.amount}`,\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.BALLOT:\n if (currentVotingPeriod === undefined) {\n throw new RPCResponseError(`Failed to get the current voting period index`);\n }\n return {\n ...op,\n period: currentVotingPeriod?.voting_period.index,\n };\n case OpKind.PROPOSALS:\n if (currentVotingPeriod === undefined) {\n throw new RPCResponseError(`Failed to get the current voting period index`);\n }\n return {\n ...op,\n period: currentVotingPeriod?.voting_period.index,\n };\n default:\n throw new InvalidOperationKindError((op as RPCOperation).kind);\n }\n });\n }\n\n /**\n *\n * @description Method to prepare an activation operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async activate({ pkh, secret }: ActivationParams): Promise<PreparedOperation> {\n const op = await createActivationOperation({\n pkh,\n secret,\n });\n\n const ops = this.convertIntoArray(op);\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n const contents = this.constructOpContents(ops, headCounter, pkh);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a reveal operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async reveal({ fee, gasLimit, storageLimit }: RevealParams): Promise<PreparedOperation> {\n const { pkh, publicKey } = await this.getKeys();\n\n if (!publicKey) {\n throw new PublicKeyNotFoundError(pkh);\n }\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const mergedEstimates = mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS);\n\n const op = await createRevealOperation(\n {\n fee: mergedEstimates.fee,\n gasLimit: mergedEstimates.gasLimit,\n storageLimit: mergedEstimates.storageLimit,\n },\n pkh,\n publicKey\n );\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare an origination operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async originate<TContract extends DefaultContractType = DefaultContractType>(\n { fee, storageLimit, gasLimit, ...rest }: OriginateParams<ContractStorageType<TContract>>,\n source?: string\n ): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n })\n );\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a transaction operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async transaction({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: TransferParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTransferOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a delegation operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async delegation({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: DelegateParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createSetDelegateOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a register delegate operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async registerDelegate(\n { fee, storageLimit, gasLimit }: RegisterDelegateParams,\n source?: string\n ): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const mergedEstimates = mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS);\n\n const op = await createRegisterDelegateOperation(\n {\n fee: mergedEstimates.fee,\n storageLimit: mergedEstimates.storageLimit,\n gasLimit: mergedEstimates.gasLimit,\n },\n pkh\n );\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a register_global_constant operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async registerGlobalConstant({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: RegisterGlobalConstantParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createRegisterGlobalConstantOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare an update_consensus_key operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async updateConsensusKey(\n { fee, storageLimit, gasLimit, ...rest }: UpdateConsensusKeyParams,\n source?: string\n ): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createUpdateConsensusKeyOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare an increase_paid_storage operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async increasePaidStorage({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: IncreasePaidStorageParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createIncreasePaidStorageOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a ballot operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async ballot(params: BallotParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const op = await createBallotOperation({\n ...params,\n });\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n let currentVotingPeriod: VotingPeriodBlockResult;\n\n try {\n currentVotingPeriod = await this.rpc.getCurrentPeriod();\n } catch (e) {\n throw new RPCResponseError('Failed to get the current voting period index');\n }\n\n const contents = this.constructOpContents(\n ops,\n headCounter,\n pkh,\n undefined,\n currentVotingPeriod\n );\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a proposals operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async proposals(params: ProposalsParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const op = await createProposalsOperation({\n ...params,\n });\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n let currentVotingPeriod: VotingPeriodBlockResult;\n\n try {\n currentVotingPeriod = await this.rpc.getCurrentPeriod();\n } catch (e) {\n throw new RPCResponseError('Failed to get the current voting period index');\n }\n\n const contents = this.constructOpContents(\n ops,\n headCounter,\n pkh,\n undefined,\n currentVotingPeriod\n );\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a drain_delegate operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async drainDelegate(params: DrainDelegateParams, source?: string): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const op = await createDrainDelegateOperation({\n ...params,\n });\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a transfer_ticket operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async transferTicket({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: TransferTicketParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createTransferTicketOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a smart_rollup_add_messages operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async smartRollupAddMessages({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: SmartRollupAddMessagesParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createSmartRollupAddMessagesOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a smart_rollup_originate operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async smartRollupOriginate({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: SmartRollupOriginateParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const originationProof = await this.rpc.getOriginationProof({\n kind: rest.pvmKind,\n kernel: rest.kernel,\n });\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createSmartRollupOriginateOperation({\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n ...rest,\n originationProof,\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a batch operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async batch(batchParams: ParamsWithKind[], estimates?: Estimate[]): Promise<PreparedOperation> {\n const { pkh, publicKey } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants, batchParams.length);\n const revealNeeded = await this.isRevealOpNeeded(batchParams, pkh);\n\n const ops: RPCOperation[] = [];\n if (!estimates) {\n for (const op of batchParams) {\n if (isOpWithFee(op)) {\n const limits = mergeLimits(op, DEFAULT_PARAMS);\n\n ops.push(await this.getRPCOp({ ...op, ...limits }));\n } else {\n ops.push({ ...op });\n }\n }\n } else {\n for (const op of batchParams) {\n if (isOpWithFee(op)) {\n const e = estimates.shift();\n const limits = mergeLimits(op, {\n fee: e!.suggestedFeeMutez,\n storageLimit: e!.storageLimit,\n gasLimit: e!.gasLimit,\n });\n ops.push(await this.getRPCOp({ ...op, ...limits }));\n } else {\n ops.push({ ...op });\n }\n }\n }\n\n if (revealNeeded) {\n if (!publicKey) {\n throw new PublicKeyNotFoundError(pkh);\n }\n ops.unshift(\n await createRevealOperation(\n {\n fee: DEFAULT_FEE.REVEAL,\n storageLimit: DEFAULT_STORAGE_LIMIT.REVEAL,\n gasLimit: getRevealGasLimit(pkh),\n },\n pkh,\n publicKey\n )\n );\n }\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh);\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a batch operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async contractCall(\n contractMethod: ContractMethod<ContractProvider> | ContractMethodObject<ContractProvider>\n ): Promise<PreparedOperation> {\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n const { pkh } = await this.getKeys();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const params = contractMethod.toTransferParams();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const estimateLimits = mergeLimits(\n {\n fee: params.fee,\n storageLimit: params.storageLimit,\n gasLimit: params.gasLimit,\n },\n DEFAULT_PARAMS\n );\n\n const op = {\n kind: OpKind.TRANSACTION,\n fee: params.fee ?? estimateLimits.fee,\n gas_limit: params.gasLimit ?? estimateLimits.gasLimit,\n storage_limit: params.storageLimit ?? estimateLimits.storageLimit,\n amount: String(params.amount),\n destination: params.to,\n parameters: params.parameter,\n } as RPCOperation;\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const contents = this.constructOpContents(ops, headCounter, pkh);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for the preapplyOperation method\n * @param prepared a Prepared Operation\n * @returns a PreapplyParams object\n */\n async toPreapply(prepared: PreparedOperation): Promise<PreapplyParams> {\n const {\n opOb: { contents, branch, protocol },\n } = prepared;\n const forgeParams = this.toForge(prepared);\n const forged = await this.context.forger.forge(forgeParams);\n const sig = await this.context.signer.sign(forged, new Uint8Array([3]));\n\n return [{ contents, branch, protocol, signature: sig.prefixSig }];\n }\n\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for forging\n * @param param a Prepared Operation\n * @returns a ForgeParams object\n */\n toForge({ opOb: { contents, branch } }: PreparedOperation): ForgeParams {\n return {\n branch,\n contents,\n };\n }\n}\n","import { Context } from '../context';\nimport { ContractStorageType, DefaultContractType } from '../contract/contract';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { SendParams } from '../contract/contract-methods/contract-method-interface';\nimport { ContractProvider } from '../contract/interface';\nimport {\n createOriginationOperation,\n createRegisterGlobalConstantOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract/prepare';\nimport { BatchOperation } from '../operations/batch-operation';\nimport {\n ActivationParams,\n DelegateParams,\n OriginateParams,\n TransferParams,\n ParamsWithKind,\n RegisterGlobalConstantParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParamsWithProof,\n} from '../operations/types';\nimport { OpKind } from '@taquito/rpc';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { validateAddress, validateKeyHash, ValidationResult, invalidDetail } from '@taquito/utils';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport {\n InvalidAddressError,\n InvalidKeyHashError,\n InvalidOperationKindError,\n InvalidAmountError,\n} from '@taquito/core';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare';\n\nexport const BATCH_KINDS = [\n OpKind.ACTIVATION,\n OpKind.ORIGINATION,\n OpKind.TRANSACTION,\n OpKind.DELEGATION,\n];\nexport type BatchKinds =\n | OpKind.ACTIVATION\n | OpKind.ORIGINATION\n | OpKind.TRANSACTION\n | OpKind.DELEGATION;\n\nexport class OperationBatch extends Provider {\n private operations: ParamsWithKind[] = [];\n\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n\n private prepare = new PrepareProvider(this.context);\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: TransferParams) {\n const toValidation = validateAddress(params.to);\n if (params.amount < 0) {\n throw new InvalidAmountError(params.amount.toString());\n }\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n this.operations.push({ kind: OpKind.TRANSACTION, ...params });\n return this;\n }\n\n /**\n *\n * @description Transfer tickets from a Tezos address (tz1,tz2 or tz3) to a smart contract address( KT1)\n *\n * @param params Transfer operation parameter\n */\n withTransferTicket(params: TransferTicketParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n this.operations.push({ kind: OpKind.TRANSFER_TICKET, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a contract call to the batch\n *\n * @param params Call a contract method\n * @param options Generic operation parameters\n */\n withContractCall(\n params: ContractMethod<ContractProvider> | ContractMethodObject<ContractProvider>,\n options: Partial<SendParams> = {}\n ) {\n return this.withTransfer(params.toTransferParams(options));\n }\n\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: DelegateParams) {\n const sourceValidation = validateAddress(params.source);\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n this.operations.push({ kind: OpKind.DELEGATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an activation operation to the batch\n *\n * @param params Activation operation parameter\n * @throws {@link InvalidKeyHashError}\n */\n withActivation({ pkh, secret }: ActivationParams) {\n const pkhValidation = validateKeyHash(pkh);\n if (pkhValidation !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh, invalidDetail(pkhValidation));\n }\n this.operations.push({ kind: OpKind.ACTIVATION, pkh, secret });\n return this;\n }\n\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination<TContract extends DefaultContractType = DefaultContractType>(\n params: OriginateParams<ContractStorageType<TContract>>\n ) {\n this.operations.push({ kind: OpKind.ORIGINATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a register a global constant operation to the batch\n *\n * @param params RegisterGlobalConstant operation parameter\n */\n withRegisterGlobalConstant(params: RegisterGlobalConstantParams) {\n this.operations.push({ kind: OpKind.REGISTER_GLOBAL_CONSTANT, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an increase paid storage operation to the batch\n *\n * @param params IncreasePaidStorage operation parameter\n */\n withIncreasePaidStorage(params: IncreasePaidStorageParams) {\n this.operations.push({ kind: OpKind.INCREASE_PAID_STORAGE, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a smart rollup add messages operation to the batch\n *\n * @param params Rollup origination operation parameter\n */\n withSmartRollupAddMessages(params: SmartRollupAddMessagesParams) {\n this.operations.push({ kind: OpKind.SMART_ROLLUP_ADD_MESSAGES, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a smart rollup originate operation to the batch\n *\n * @param params Smart Rollup Originate operation parameter\n */\n withSmartRollupOriginate(params: SmartRollupOriginateParamsWithProof) {\n this.operations.push({ kind: OpKind.SMART_ROLLUP_ORIGINATE, ...params });\n return this;\n }\n\n async getRPCOp(param: ParamsWithKind) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n return createTransferOperation({\n ...param,\n });\n case OpKind.ORIGINATION:\n return createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n })\n );\n case OpKind.DELEGATION:\n return createSetDelegateOperation({\n ...param,\n });\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n return createRegisterGlobalConstantOperation({\n ...param,\n });\n case OpKind.INCREASE_PAID_STORAGE:\n return createIncreasePaidStorageOperation({\n ...param,\n });\n case OpKind.TRANSFER_TICKET:\n return createTransferTicketOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n return createSmartRollupAddMessagesOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return createSmartRollupOriginateOperation({\n ...param,\n });\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n * @throws {@link InvalidOperationKindError}\n */\n with(params: ParamsWithKind[]) {\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n this.withTransfer(param);\n break;\n case OpKind.ORIGINATION:\n this.withOrigination(param);\n break;\n case OpKind.DELEGATION:\n this.withDelegation(param);\n break;\n case OpKind.ACTIVATION:\n this.withActivation(param);\n break;\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n this.withRegisterGlobalConstant(param);\n break;\n case OpKind.INCREASE_PAID_STORAGE:\n this.withIncreasePaidStorage(param);\n break;\n case OpKind.TRANSFER_TICKET:\n this.withTransferTicket(param);\n break;\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n this.withSmartRollupAddMessages(param);\n break;\n case OpKind.SMART_ROLLUP_ORIGINATE:\n this.withSmartRollupOriginate(param);\n break;\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n return this;\n }\n\n /**\n *\n * @description Forge and Inject the operation batch\n *\n * @param params Optionally specify the source of the operation\n */\n async send(params?: { source?: string }) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const source = (params && params.source) || publicKeyHash;\n const estimates = await this.estimator.batch(this.operations);\n\n if (estimates.length !== this.operations.length) {\n estimates.shift();\n }\n const preparedOp = await this.prepare.batch(this.operations, estimates);\n\n const opBytes = await this.forge(preparedOp);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BatchOperation(\n hash,\n preparedOp.opOb.contents,\n source,\n forgedBytes,\n opResponse,\n context\n );\n }\n}\n\nexport class RPCBatchProvider {\n constructor(private context: Context, private estimator: EstimationProvider) {}\n\n /***\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]) {\n const batch = new OperationBatch(this.context, this.estimator);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n}\n","import {\n BatchOperationResult,\n BlockResponse,\n OperationContentsAndResultOrigination,\n OperationContentsAndResultReveal,\n OpKind,\n} from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { BATCH_KINDS } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { hasMetadataWithResult } from '../operations/types';\nimport { WalletOperation, OperationStatus } from './operation';\nimport { ObservableError } from './errors';\n\nexport class BatchWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('Unable to fetch operation results');\n } else {\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n }\n\n public getOriginatedContractAddresses = async (): Promise<string[]> => {\n const opResult = await this.operationResults();\n if (!opResult) {\n throw new ObservableError('Unable to fetch operation results');\n } else {\n const originationOpResults = opResult.filter(\n (x) => x.kind === 'origination'\n ) as OperationContentsAndResultOrigination[];\n\n let addresses: string[] = [];\n for (const res of originationOpResults) {\n if (res.metadata.operation_result.originated_contracts) {\n addresses = [...addresses, ...res.metadata.operation_result.originated_contracts];\n }\n }\n\n return addresses;\n }\n };\n\n async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.operationResults();\n if (op) {\n return (\n op\n .filter((result) => BATCH_KINDS.indexOf(result.kind) !== -1)\n .map((result) => {\n if (hasMetadataWithResult(result)) {\n const opResult = result.metadata.operation_result as BatchOperationResult;\n return opResult.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n } else {\n throw new ObservableError('Unable to fetch operation results');\n }\n }\n}\n","import { WalletOperation, OperationStatus } from './operation';\nimport { Context } from '../context';\nimport { Observable } from 'rxjs';\nimport {\n BlockResponse,\n OpKind,\n OperationContentsAndResultReveal,\n OperationContentsAndResultIncreasePaidStorage,\n} from '@taquito/rpc';\nimport { ObservableError } from './errors';\n\nexport class IncreasePaidStorageWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('Unable to fetch operation result');\n } else {\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n }\n\n public async increasePaidStorageOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('Unable to fetch operation result');\n } else {\n return operationResult.find((x) => x.kind === OpKind.INCREASE_PAID_STORAGE) as\n | OperationContentsAndResultIncreasePaidStorage\n | undefined;\n }\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.increasePaidStorageOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import { BlockResponse } from '@taquito/rpc';\nimport {\n BehaviorSubject,\n concat,\n defer,\n from,\n Observable,\n of,\n range,\n ReplaySubject,\n SchedulerLike,\n throwError,\n} from 'rxjs';\nimport { concatMap, mergeMap, share, startWith, switchMap, timeout } from 'rxjs/operators';\nimport { Context } from '../context';\nimport { BlockIdentifier } from '../read-provider/interface';\nimport { createObservableFromSubscription } from '../subscribe/create-observable-from-subscription';\nimport { BatchWalletOperation } from './batch-operation';\nimport { DelegationWalletOperation } from './delegation-operation';\nimport { IncreasePaidStorageWalletOperation } from './increase-paid-storage-operation';\nimport { WalletOperation } from './operation';\nimport { OriginationWalletOperation } from './origination-operation';\nimport { TransactionWalletOperation } from './transaction-operation';\nimport { ConfirmationTimeoutError } from '../errors';\n\nexport function timeoutAfter<T>(timeoutMillisec: number): (source: Observable<T>) => Observable<T> {\n return function inner(source: Observable<T>): Observable<T> {\n return new BehaviorSubject(null).pipe(\n timeout({\n each: timeoutMillisec,\n with: () =>\n throwError(() => new ConfirmationTimeoutError(`Confirmation polling timed out`)),\n }),\n mergeMap(() => source)\n );\n };\n}\n\nexport const createNewPollingBasedHeadObservable = (\n sharedHeadOb: Observable<BlockResponse>,\n context: Context,\n _scheduler?: SchedulerLike\n): Observable<BlockResponse> => {\n return sharedHeadOb.pipe(\n timeoutAfter(context.config.confirmationPollingTimeoutSecond * 1000),\n share({\n connector: () => new ReplaySubject(1),\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: false,\n })\n );\n};\n\nexport interface OperationFactoryConfig {\n blockIdentifier?: string;\n}\n\nexport class OperationFactory {\n constructor(private context: Context) {}\n\n // Cache the last block for one second across all operations\n private sharedHeadObs = defer(() => {\n return createObservableFromSubscription(this.context.stream.subscribeBlock('head'));\n });\n\n private async createNewHeadObservable() {\n return createNewPollingBasedHeadObservable(this.sharedHeadObs, this.context);\n }\n\n private createPastBlockWalker(startBlock: string, count = 1) {\n return from(this.context.readProvider.getBlock(startBlock as BlockIdentifier)).pipe(\n switchMap((block) => {\n if (count === 1) {\n return of(block);\n }\n\n return range(block.header.level, count - 1).pipe(\n startWith(block),\n concatMap(async (level) => {\n return this.context.readProvider.getBlock(\n typeof level === 'number' ? level : level.header.level\n );\n })\n );\n })\n );\n }\n\n private async createHeadObservableFromConfig({ blockIdentifier }: OperationFactoryConfig) {\n const observableSequence: Observable<BlockResponse>[] = [];\n\n if (blockIdentifier) {\n observableSequence.push(this.createPastBlockWalker(blockIdentifier));\n }\n\n observableSequence.push(await this.createNewHeadObservable());\n\n return concat(...observableSequence);\n }\n\n async createOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<WalletOperation> {\n return new WalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createBatchOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<BatchWalletOperation> {\n return new BatchWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createTransactionOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<TransactionWalletOperation> {\n return new TransactionWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createDelegationOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<DelegationWalletOperation> {\n return new DelegationWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createOriginationOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<OriginationWalletOperation> {\n return new OriginationWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createIncreasePaidStorageOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<IncreasePaidStorageWalletOperation> {\n return new IncreasePaidStorageWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from '../operations/operations';\nimport { TzProvider } from './interface';\nimport {\n validateAddress,\n ValidationResult,\n validateKeyHash,\n InvalidKeyHashError,\n invalidDetail,\n} from '@taquito/utils';\nimport { InvalidAddressError } from '@taquito/core';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare';\n\nexport class RpcTzProvider extends Provider implements TzProvider {\n constructor(context: Context) {\n super(context);\n }\n\n private prepare = new PrepareProvider(this.context);\n\n async getBalance(address: string): Promise<BigNumber> {\n const addressValidation = validateAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(address, invalidDetail(addressValidation));\n }\n return this.context.readProvider.getBalance(address, 'head');\n }\n\n async getDelegate(address: string): Promise<string | null> {\n const addressValidation = validateAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(address, invalidDetail(addressValidation));\n }\n return this.context.readProvider.getDelegate(address, 'head');\n }\n\n async activate(pkh: string, secret: string) {\n const pkhValidation = validateKeyHash(pkh);\n if (pkhValidation !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh, invalidDetail(pkhValidation));\n }\n\n const prepared = await this.prepare.activate({ pkh, secret });\n\n const forgedBytes = await this.forge(prepared);\n const bytes = `${forgedBytes.opbytes}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`;\n return new Operation(\n await this.rpc.injectOperation(bytes),\n { ...forgedBytes, opbytes: bytes },\n [],\n this.context.clone()\n );\n }\n}\n","const MINIMAL_FEE_MUTEZ = 100;\nconst MINIMAL_FEE_PER_BYTE_MUTEZ = 1;\nconst MINIMAL_FEE_PER_GAS_MUTEZ = 0.1;\n\nconst GAS_BUFFER = 100;\n\nexport interface EstimateProperties {\n milligasLimit: number;\n storageLimit: number;\n opSize: number;\n minimalFeePerStorageByteMutez: number;\n baseFeeMutez?: number;\n}\n\n/**\n * Examples of use :\n *\n * Estimate a transfer operation :\n * ```\n * // Assuming that provider and signer are already configured...\n *\n * const amount = 2;\n * const address = 'tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY';\n *\n * // Estimate gasLimit, storageLimit and fees for a transfer operation\n * const est = await Tezos.estimate.transfer({ to: address, amount: amount })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n *\n * Estimate a contract origination :\n * ```\n * // generic.json is referring to a Michelson Smart Contract\n *\n * const genericMultisigJSON = require('./generic.json')\n * const est = await Tezos.estimate.originate({\n * code: genericMultisigJSON,\n * storage: {\n * stored_counter: 0,\n * threshold: 1,\n * keys: ['edpkuLxx9PQD8fZ45eUzrK3BhfDZJHhBuK4Zi49DcEGANwd2rpX82t']\n * }\n * })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n */\n\nexport class Estimate {\n constructor(\n private readonly _milligasLimit: number | string,\n private readonly _storageLimit: number | string,\n public readonly opSize: number | string,\n private readonly minimalFeePerStorageByteMutez: number | string,\n /**\n * @description Base fee in mutez (1 mutez = 1e10−6 tez)\n */\n private readonly baseFeeMutez: number | string = MINIMAL_FEE_MUTEZ\n ) {}\n\n /**\n * @description The number of Mutez that will be burned for the storage of the [operation](https://tezos.gitlab.io/user/glossary.html#operations). (Storage + Allocation fees)\n */\n get burnFeeMutez() {\n return this.roundUp(Number(this.storageLimit) * Number(this.minimalFeePerStorageByteMutez));\n }\n\n /**\n * @description The limit on the amount of storage an [operation](https://tezos.gitlab.io/user/glossary.html#operations) can use.\n */\n get storageLimit() {\n const limit = Math.max(Number(this._storageLimit), 0);\n return limit > 0 ? limit : 0;\n }\n\n /**\n * @description The limit on the amount of [gas](https://tezos.gitlab.io/user/glossary.html#gas) a given operation can consume.\n */\n get gasLimit() {\n return this.roundUp(Number(this._milligasLimit) / 1000 + GAS_BUFFER);\n }\n\n private get operationFeeMutez() {\n return (\n (Number(this._milligasLimit) / 1000 + GAS_BUFFER) * MINIMAL_FEE_PER_GAS_MUTEZ +\n Number(this.opSize) * MINIMAL_FEE_PER_BYTE_MUTEZ\n );\n }\n\n private roundUp(nanotez: number) {\n return Math.ceil(Number(nanotez));\n }\n\n /**\n * @description Minimum fees for the [operation](https://tezos.gitlab.io/user/glossary.html#operations) according to [baker](https://tezos.gitlab.io/user/glossary.html#baker) defaults.\n */\n get minimalFeeMutez() {\n return this.roundUp(MINIMAL_FEE_MUTEZ + this.operationFeeMutez);\n }\n\n /**\n * @description The suggested fee for the operation which includes minimal fees and a small buffer.\n */\n get suggestedFeeMutez() {\n return this.roundUp(this.operationFeeMutez + MINIMAL_FEE_MUTEZ * 2);\n }\n\n /**\n * @description Fees according to your specified base fee will ensure that at least minimum fees are used.\n */\n get usingBaseFeeMutez() {\n return (\n Math.max(Number(this.baseFeeMutez), MINIMAL_FEE_MUTEZ) + this.roundUp(this.operationFeeMutez)\n );\n }\n\n /**\n * @description The sum of `minimalFeeMutez` + `burnFeeMutez`.\n */\n get totalCost() {\n return this.minimalFeeMutez + this.burnFeeMutez;\n }\n\n /**\n * @description Since Delphinet, consumed gas is provided in milligas for more precision.\n * This function returns an estimation of the gas that operation will consume in milligas.\n */\n get consumedMilligas() {\n return Number(this._milligasLimit);\n }\n\n static createEstimateInstanceFromProperties(estimateProperties: EstimateProperties[]) {\n let milligasLimit = 0;\n let storageLimit = 0;\n let opSize = 0;\n let minimalFeePerStorageByteMutez = 0;\n let baseFeeMutez: number | undefined;\n\n estimateProperties.forEach((estimate) => {\n milligasLimit += estimate.milligasLimit;\n storageLimit += estimate.storageLimit;\n opSize += estimate.opSize;\n minimalFeePerStorageByteMutez = Math.max(\n estimate.minimalFeePerStorageByteMutez,\n minimalFeePerStorageByteMutez\n );\n if (estimate.baseFeeMutez) {\n baseFeeMutez = baseFeeMutez ? baseFeeMutez + estimate.baseFeeMutez : estimate.baseFeeMutez;\n }\n });\n return new Estimate(\n milligasLimit,\n storageLimit,\n opSize,\n minimalFeePerStorageByteMutez,\n baseFeeMutez\n );\n }\n\n static createArrayEstimateInstancesFromProperties(estimateProperties: EstimateProperties[]) {\n return estimateProperties.map(\n (x) =>\n new Estimate(\n x.milligasLimit,\n x.storageLimit,\n x.opSize,\n x.minimalFeePerStorageByteMutez,\n x.baseFeeMutez\n )\n );\n }\n}\n","import { TaquitoError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates unable to get public key to estimate reveal operation in Wallet API\n */\nexport class RevealEstimateError extends TaquitoError {\n constructor() {\n super();\n this.name = 'RevealEstimateError';\n this.message = 'Public key is unknown, unable to estimate the reveal operation in Wallet API.';\n }\n}\n","import { PreapplyResponse, ConstantsResponse, RPCSimulateOperationParam } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { flattenErrors, flattenOperationResult, TezosOperationError } from '../operations/errors';\nimport {\n DelegateParams,\n isOpWithFee,\n OriginateParams,\n ParamsWithKind,\n RegisterDelegateParams,\n TransferParams,\n RevealParams,\n RegisterGlobalConstantParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n UpdateConsensusKeyParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n} from '../operations/types';\nimport { Estimate, EstimateProperties } from './estimate';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { validateAddress, ValidationResult, invalidDetail } from '@taquito/utils';\nimport { RevealEstimateError } from './errors';\nimport { ContractMethod, ContractMethodObject, ContractProvider } from '../contract';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare/prepare-provider';\nimport { PreparedOperation } from '../prepare';\nimport { InvalidAddressError, InvalidAmountError } from '@taquito/core';\n\nexport class RPCEstimateProvider extends Provider implements EstimationProvider {\n private readonly ALLOCATION_STORAGE = 257;\n private readonly ORIGINATION_STORAGE = 257;\n private readonly OP_SIZE_REVEAL = 128;\n\n private prepare = new PrepareProvider(this.context);\n\n private async getKeys(): Promise<{\n publicKeyHash: string;\n publicKey?: string;\n }> {\n const isSignerConfigured = this.context.isAnySignerConfigured();\n return {\n publicKeyHash: isSignerConfigured\n ? await this.signer.publicKeyHash()\n : await this.context.walletProvider.getPKH(),\n publicKey: isSignerConfigured ? await this.signer.publicKey() : undefined,\n };\n }\n\n private getEstimationPropertiesFromOperationContent(\n content: PreapplyResponse['contents'][0],\n size: number,\n costPerByte: BigNumber\n ): EstimateProperties {\n const operationResults = flattenOperationResult({ contents: [content] });\n let totalMilligas = 0;\n let totalStorage = 0;\n operationResults.forEach((result) => {\n totalStorage +=\n 'originated_contracts' in result && typeof result.originated_contracts !== 'undefined'\n ? result.originated_contracts.length * this.ORIGINATION_STORAGE\n : 0;\n totalStorage += 'allocated_destination_contract' in result ? this.ALLOCATION_STORAGE : 0;\n totalMilligas += Number(result.consumed_milligas) || 0;\n totalStorage +=\n 'paid_storage_size_diff' in result ? Number(result.paid_storage_size_diff) || 0 : 0;\n totalStorage +=\n 'storage_size' in result && 'global_address' in result\n ? Number(result.storage_size) || 0\n : 0;\n totalStorage += 'genesis_commitment_hash' in result ? Number(result.size) : 0;\n });\n\n if (isOpWithFee(content)) {\n return {\n milligasLimit: totalMilligas || 0,\n storageLimit: Number(totalStorage || 0),\n opSize: size,\n minimalFeePerStorageByteMutez: costPerByte.toNumber(),\n };\n } else {\n return {\n milligasLimit: 0,\n storageLimit: 0,\n opSize: size,\n minimalFeePerStorageByteMutez: costPerByte.toNumber(),\n baseFeeMutez: 0,\n };\n }\n }\n\n private async calculateEstimates(\n op: PreparedOperation,\n constants: Pick<ConstantsResponse, 'cost_per_byte' | 'smart_rollup_origination_size'>\n ) {\n const {\n opbytes,\n opOb: { branch, contents },\n } = await this.forge(op);\n const operation: RPCSimulateOperationParam = {\n operation: { branch, contents },\n chain_id: await this.context.readProvider.getChainId(),\n };\n\n const { opResponse } = await this.simulate(operation);\n const { cost_per_byte } = constants;\n const errors = [...flattenErrors(opResponse, 'backtracked'), ...flattenErrors(opResponse)];\n\n // Fail early in case of errors\n if (errors.length) {\n throw new TezosOperationError(errors, 'Error occurred during estimation');\n }\n\n let numberOfOps = 1;\n if (Array.isArray(op.opOb.contents) && op.opOb.contents.length > 1) {\n numberOfOps =\n opResponse.contents[0].kind === 'reveal'\n ? op.opOb.contents.length - 1\n : op.opOb.contents.length;\n }\n\n return opResponse.contents.map((x) => {\n return this.getEstimationPropertiesFromOperationContent(\n x,\n // TODO: Calculate a specific opSize for each operation.\n x.kind === 'reveal' ? this.OP_SIZE_REVEAL / 2 : opbytes.length / 2 / numberOfOps,\n cost_per_byte\n );\n });\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an origination operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param OriginationOperation Originate operation parameter\n */\n async originate(params: OriginateParams) {\n const preparedOperation = await this.prepare.originate(params);\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an transfer operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TransferOperation Originate operation parameter\n */\n async transfer({ fee, storageLimit, gasLimit, ...rest }: TransferParams) {\n const toValidation = validateAddress(rest.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.to, invalidDetail(toValidation));\n }\n const srouceValidation = validateAddress(rest.source ?? '');\n if (rest.source && srouceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source, invalidDetail(srouceValidation));\n }\n if (rest.amount < 0) {\n throw new InvalidAmountError(rest.amount.toString());\n }\n const preparedOperation = await this.prepare.transaction({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a transferTicket operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TransferTicketParams operation parameter\n */\n async transferTicket({ fee, storageLimit, gasLimit, ...rest }: TransferTicketParams) {\n const destinationValidation = validateAddress(rest.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.destination, invalidDetail(destinationValidation));\n }\n const sourceValidation = validateAddress(rest.source ?? '');\n if (rest.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source, invalidDetail(sourceValidation));\n }\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.transferTicket({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async setDelegate({ fee, gasLimit, storageLimit, ...rest }: DelegateParams) {\n const sourceValidation = validateAddress(rest.source);\n if (rest.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source, invalidDetail(sourceValidation));\n }\n const delegateValidation = validateAddress(rest.delegate ?? '');\n if (rest.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.delegate, invalidDetail(delegateValidation));\n }\n\n const preparedOperation = await this.prepare.delegation({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a each operation in the batch\n *\n * @returns An array of Estimate objects. If a reveal operation is needed, the first element of the array is the Estimate for the reveal operation.\n */\n async batch(params: ParamsWithKind[]) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperations = await this.prepare.batch(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperations, protocolConstants);\n\n return Estimate.createArrayEstimateInstancesFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async registerDelegate(\n { fee, storageLimit, gasLimit, ...rest }: RegisterDelegateParams,\n source?: string\n ) {\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const checkSource = source || pkh;\n const preparedOperation = await this.prepare.registerDelegate(\n { fee, storageLimit, gasLimit, ...rest },\n checkSource\n );\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees to reveal the current account\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation or undefined if the account is already revealed\n *\n * @param Estimate\n */\n async reveal(params?: RevealParams) {\n const { publicKeyHash, publicKey } = await this.getKeys();\n if (!publicKey) {\n throw new RevealEstimateError();\n }\n if (await this.isAccountRevealRequired(publicKeyHash)) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = params\n ? await this.prepare.reveal(params)\n : await this.prepare.reveal({});\n\n const estimateProperties = await this.calculateEstimates(\n preparedOperation,\n protocolConstants\n );\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an registerGlobalConstant operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param params registerGlobalConstant operation parameter\n */\n async registerGlobalConstant({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: RegisterGlobalConstantParams) {\n const preparedOperation = await this.prepare.registerGlobalConstant({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit, and fees for an increasePaidStorage operation\n *\n * @returns An estimation of gasLimit, storageLimit, and fees for the operation\n *\n * @param params increasePaidStorage operation parameters\n */\n async increasePaidStorage({ fee, storageLimit, gasLimit, ...rest }: IncreasePaidStorageParams) {\n if (rest.amount < 0) {\n throw new InvalidAmountError(rest.amount.toString());\n }\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.increasePaidStorage({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Update Consensus Key operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async updateConsensusKey(params: UpdateConsensusKeyParams) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.updateConsensusKey(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a smart_rollup_add_messages operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async smartRollupAddMessages(params: SmartRollupAddMessagesParams) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.smartRollupAddMessages(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Smart Rollup Originate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param SmartRollupOriginateParams\n */\n async smartRollupOriginate(params: SmartRollupOriginateParams) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.smartRollupOriginate(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for contract call\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the contract call\n *\n * @param Estimate\n */\n async contractCall(\n contractMethod: ContractMethod<ContractProvider> | ContractMethodObject<ContractProvider>\n ) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.contractCall(contractMethod);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultDelegation,\n OperationContentsDelegation,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Delegation operation provide utility function to fetch newly issued delegation\n *\n * @warn Currently support only one delegation per operation\n */\nexport class DelegateOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsDelegation,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const delegationOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'delegation') as OperationContentsAndResultDelegation);\n const result = delegationOp && delegationOp.metadata && delegationOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get delegate() {\n return this.params.delegate;\n }\n\n get isRegisterOperation(): boolean {\n return this.delegate === this.source;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultOrigination,\n OperationContentsOrigination,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { DefaultContractType } from '../contract/contract';\nimport { RpcContractProvider } from '../contract/rpc-contract-provider';\nimport { OriginationOperationError } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n hasMetadataWithResult,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Origination operation provide utility function to fetch newly originated contract\n *\n * @warn Currently support only one origination per operation\n */\nexport class OriginationOperation<TContract extends DefaultContractType = DefaultContractType>\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n /**\n * @description Contract address of the newly originated contract\n */\n public readonly contractAddress?: string;\n\n constructor(\n hash: string,\n private readonly params: OperationContentsOrigination,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context,\n private contractProvider: RpcContractProvider\n ) {\n super(hash, raw, results, context);\n\n const originatedContracts = this.operationResults && this.operationResults.originated_contracts;\n if (Array.isArray(originatedContracts)) {\n this.contractAddress = originatedContracts[0];\n }\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get operationResults() {\n const originationOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'origination') as\n | OperationContentsAndResultOrigination\n | undefined);\n\n const result =\n originationOp &&\n hasMetadataWithResult(originationOp) &&\n originationOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get storageDiff() {\n const storageDiff = this.operationResults && this.operationResults.paid_storage_size_diff;\n return storageDiff ? storageDiff : undefined;\n }\n\n get storageSize() {\n const storageSize = this.operationResults && this.operationResults.storage_size;\n return storageSize ? storageSize : undefined;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n\n /**\n * @description Provide the contract abstract of the newly originated contract\n * @throws {@link OriginationOperationError}\n */\n async contract(confirmations?: number, timeout?: number) {\n if (!this.contractAddress) {\n throw new OriginationOperationError('No contract was originated in this operation');\n }\n\n await this.confirmation(confirmations, timeout);\n return this.contractProvider.at<TContract>(this.contractAddress);\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultRegisterGlobalConstant,\n OperationContentsRegisterGlobalConstant,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description RegisterGlobalConstantOperation provides utility functions to fetch a newly issued operation of kind register_global_constant\n */\nexport class RegisterGlobalConstantOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n /**\n * @description Hash (index) of the newly registered constant\n */\n public readonly globalConstantHash?: string;\n constructor(\n hash: string,\n private readonly params: OperationContentsRegisterGlobalConstant,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n\n this.globalConstantHash = this.operationResults && this.operationResults.global_address;\n }\n\n get operationResults() {\n const registerGlobalConstantOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'register_global_constant'\n ) as OperationContentsAndResultRegisterGlobalConstant);\n const result =\n registerGlobalConstantOp &&\n registerGlobalConstantOp.metadata &&\n registerGlobalConstantOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get registeredExpression() {\n return this.params.value;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultReveal,\n OperationContentsReveal,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Reveal operation provides utility functions to fetch a newly issued revelation\n */\nexport class RevealOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsReveal,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const revealOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'reveal') as OperationContentsAndResultReveal);\n return revealOp ? [revealOp] : [];\n }\n\n get status() {\n const operationResults = this.operationResults;\n const txResult = operationResults[0];\n if (txResult) {\n return txResult.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get publicKey() {\n return this.params.public_key;\n }\n\n private sumProp(arr: any[], prop: string) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return new BigNumber(this.consumedMilliGas).dividedBy(1000).toString();\n }\n\n get consumedMilliGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'consumed_milligas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(\n flattenOperationResult({ contents: this.operationResults }),\n 'paid_storage_size_diff'\n )\n );\n }\n\n get storageSize() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'storage_size')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.operationResults });\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultTransaction,\n OperationContentsTransaction,\n} from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult, MergedOperationResult } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Transaction operation provides utility functions to fetch a newly issued transaction\n *\n * @warn Currently supports one transaction per operation\n */\nexport class TransactionOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsTransaction,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const transactionOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'transaction'\n ) as OperationContentsAndResultTransaction);\n return transactionOp ? [transactionOp] : [];\n }\n\n get status() {\n const operationResults = this.operationResults;\n const txResult = operationResults[0];\n if (txResult) {\n return txResult.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n get amount() {\n return new BigNumber(this.params.amount);\n }\n\n get destination() {\n return this.params.destination;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n private sumProp(arr: MergedOperationResult[], prop: keyof MergedOperationResult) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return new BigNumber(this.consumedMilliGas).dividedBy(1000).toString();\n }\n\n get consumedMilliGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'consumed_milligas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(\n flattenOperationResult({ contents: this.operationResults }),\n 'paid_storage_size_diff'\n )\n );\n }\n\n get storageSize() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'storage_size')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.operationResults });\n }\n}\n","import { Schema, BigMapKeyType } from '@taquito/michelson-encoder';\nimport BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\nimport { HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\n\nexport class BigMapAbstraction {\n constructor(private id: BigNumber, private schema: Schema, private provider: ContractProvider) {}\n\n /**\n *\n * @description Fetch one value in a big map\n *\n * @param keysToEncode Key to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a well formatted json object of a big map value or undefined if the key is not found in the big map\n *\n */\n async get<T>(keyToEncode: BigMapKeyType, block?: number) {\n try {\n const id = await this.provider.getBigMapKeyByID<T>(\n this.id.toString(),\n keyToEncode,\n this.schema,\n block\n );\n return id;\n } catch (e) {\n if (e instanceof HttpResponseError && e.status === STATUS_CODE.NOT_FOUND) {\n return undefined;\n } else {\n throw e;\n }\n }\n }\n\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it.\n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param keysToEncode Array of keys to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n async getMultipleValues<T>(keysToEncode: Array<BigMapKeyType>, block?: number, batchSize = 5) {\n return this.provider.getBigMapKeysByID<T>(\n this.id.toString(),\n keysToEncode,\n this.schema,\n block,\n batchSize\n );\n }\n\n toJSON() {\n return this.id.toString();\n }\n\n toString() {\n return this.id.toString();\n }\n}\n","import { Schema, Semantic } from '@taquito/michelson-encoder';\nimport { BigMapAbstraction } from './big-map';\nimport { ContractProvider } from './interface';\nimport BigNumber from 'bignumber.js';\nimport { MichelsonV1Expression } from '@taquito/rpc';\nimport { SaplingStateAbstraction } from './sapling-state-abstraction';\n\n// Override the default michelson encoder semantic to provide richer abstraction over storage properties\nexport const smartContractAbstractionSemantic: (p: ContractProvider) => Semantic = (\n provider: ContractProvider\n) => ({\n // Provide a specific abstraction for BigMaps\n big_map: (val: MichelsonV1Expression, code: MichelsonV1Expression) => {\n if (!val || !('int' in val) || val.int === undefined) {\n // Return an empty object in case of missing big map ID\n return {};\n } else {\n const schema = new Schema(code);\n return new BigMapAbstraction(new BigNumber(val.int), schema, provider);\n }\n },\n sapling_state: (val: MichelsonV1Expression) => {\n if (!val || !('int' in val) || val.int === undefined) {\n // Return an empty object in case of missing sapling state ID\n return {};\n } else {\n return new SaplingStateAbstraction(new BigNumber(val.int), provider);\n }\n }\n /*\n // TODO: embed useful other abstractions\n 'contract': () => {},\n 'address': () => {}\n */\n});\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultBallot,\n OperationContentsBallot,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n\n/**\n *\n * @description BallotOperation provides utility functions to fetch a new operation of kind ballot\n *\n */\nexport class BallotOperation extends Operation {\n constructor(\n hash: string,\n private readonly params: OperationContentsBallot,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const ballotOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'ballot') as OperationContentsAndResultBallot);\n const result = ballotOp;\n\n return result ? result : undefined;\n }\n\n get period() {\n return this.operationResults?.period;\n }\n\n get proposal() {\n return this.params.proposal;\n }\n\n get ballot() {\n return this.params.ballot;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultDrainDelegate,\n OperationContentsDrainDelegate,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n\n/**\n *\n * @description DrainDelegateOperation provides utility functions to fetch a new operation of kind drain_delegate\n *\n */\n\nexport class DrainDelegateOperation extends Operation {\n constructor(\n hash: string,\n private readonly params: OperationContentsDrainDelegate,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const drainDelegateOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'drain_delegate'\n ) as OperationContentsAndResultDrainDelegate);\n const result =\n drainDelegateOp && drainDelegateOp.metadata && drainDelegateOp.metadata.balance_updates;\n return result ? result : undefined;\n }\n\n get consensusKey() {\n return this.params.consensus_key;\n }\n\n get delegate() {\n return this.params.delegate;\n }\n\n get destination() {\n return this.params.destination;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultTransferTicket,\n OperationContentsTransferTicket,\n OpKind,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from '../operations';\nimport {\n GasConsumingOperation,\n StorageConsumingOperation,\n FeeConsumingOperation,\n ForgedBytes,\n} from './types';\n\n/**\n *\n * @description Transfer tickets from a Tezos address (tz1, tz2 or tz3) to a smart contract address (KT1) (everything on layer 1 at this step)\n *\n * @warn Currently only supports one L2 ticket holder transfer at once. ie. one collection of tickets owned by tz1, tz2 or tz3 to a smart contract.\n */\nexport class TransferTicketOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsTransferTicket,\n private readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const transferOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === OpKind.TRANSFER_TICKET\n ) as OperationContentsAndResultTransferTicket);\n const result = transferOp && transferOp.metadata && transferOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultIncreasePaidStorage,\n OperationContentsIncreasePaidStorage,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n *\n * @description IncreasePaidStorageOperation provides utility functions to fetch a new operation of kind increase_paid_storage\n *\n */\n\nexport class IncreasePaidStorageOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsIncreasePaidStorage,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const increasePaidStorageOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'increase_paid_storage'\n ) as OperationContentsAndResultIncreasePaidStorage);\n const result =\n increasePaidStorageOp &&\n increasePaidStorageOp.metadata &&\n increasePaidStorageOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get amount() {\n return this.params.amount;\n }\n\n get destination() {\n return this.params.destination;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultProposals,\n OperationContentsProposals,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n\n/**\n *\n * @description ProposalsOperation provides utility functions to fetch a new operation of kind proposals\n *\n */\nexport class ProposalsOperation extends Operation {\n constructor(\n hash: string,\n private readonly params: OperationContentsProposals,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const proposalsOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'proposals') as OperationContentsAndResultProposals);\n const result = proposalsOp;\n\n return result ? result : undefined;\n }\n\n get proposals() {\n return this.params.proposals;\n }\n\n get period() {\n return this.operationResults?.period;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultUpdateConsensusKey,\n OperationContentsUpdateConsensusKey,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n *\n * @description UpdateConsensusKeyOperation provides utility to fetch properties for Operation of kind UpdateConsensusKey\n *\n */\nexport class UpdateConsensusKeyOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsUpdateConsensusKey,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const updateConsensusKeyOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'update_consensus_key'\n ) as OperationContentsAndResultUpdateConsensusKey);\n const result =\n updateConsensusKeyOp &&\n updateConsensusKeyOp.metadata &&\n updateConsensusKeyOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get pk() {\n return this.params.pk;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultSmartRollupAddMessages,\n OperationContentsSmartRollupAddMessages,\n} from '@taquito/rpc';\n\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description SmartRollupAddMessagesOperation provides utility to fetch properties of SmartRollupAddMessages\n */\n\nexport class SmartRollupAddMessagesOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsSmartRollupAddMessages,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const smartRollupAddMessagesOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'smart_rollup_add_messages'\n ) as OperationContentsAndResultSmartRollupAddMessages);\n const result =\n smartRollupAddMessagesOp &&\n smartRollupAddMessagesOp.metadata &&\n smartRollupAddMessagesOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get message() {\n return this.params.message;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultSmartRollupOriginate,\n OperationContentsSmartRollupOriginate,\n OpKind,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n *\n * @description SmartRollupOriginate Operation provides utility to fetch properties for Operation of kind SmartRollupOriginate\n *\n */\nexport class SmartRollupOriginateOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsSmartRollupOriginate,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const smartRollupOriginateOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === OpKind.SMART_ROLLUP_ORIGINATE\n ) as OperationContentsAndResultSmartRollupOriginate);\n const result =\n smartRollupOriginateOp &&\n smartRollupOriginateOp.metadata &&\n smartRollupOriginateOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get pvmKind() {\n return this.params.pvm_kind;\n }\n\n get kernel() {\n return this.params.kernel;\n }\n\n get originationProof() {\n return this.params.origination_proof;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import { HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport { BigMapKeyType, MichelsonMap, MichelsonMapKey, Schema } from '@taquito/michelson-encoder';\nimport {\n OpKind,\n OperationContentsBallot,\n OperationContentsDelegation,\n OperationContentsDrainDelegate,\n OperationContentsFailingNoop,\n OperationContentsIncreasePaidStorage,\n OperationContentsOrigination,\n OperationContentsProposals,\n OperationContentsRegisterGlobalConstant,\n OperationContentsReveal,\n OperationContentsSmartRollupAddMessages,\n OperationContentsSmartRollupOriginate,\n OperationContentsTransaction,\n OperationContentsTransferTicket,\n OperationContentsUpdateConsensusKey,\n ScriptResponse,\n} from '@taquito/rpc';\nimport {\n encodeExpr,\n invalidDetail,\n validateAddress,\n validateContractAddress,\n ValidationResult,\n} from '@taquito/utils';\nimport {\n InvalidAddressError,\n InvalidContractAddressError,\n InvalidAmountError,\n} from '@taquito/core';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { DelegateOperation } from '../operations/delegate-operation';\nimport { OriginationOperation } from '../operations/origination-operation';\nimport { RegisterGlobalConstantOperation } from '../operations/register-global-constant-operation';\nimport { RevealOperation } from '../operations/reveal-operation';\nimport { TransactionOperation } from '../operations/transaction-operation';\nimport {\n DelegateParams,\n OriginateParams,\n ParamsWithKind,\n RegisterDelegateParams,\n RegisterGlobalConstantParams,\n RevealParams,\n TransferParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n DrainDelegateParams,\n BallotParams,\n ProposalsParams,\n UpdateConsensusKeyParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n FailingNoopParams,\n} from '../operations/types';\nimport { DefaultContractType, ContractStorageType, ContractAbstraction } from './contract';\nimport { InvalidDelegationSource, RevealOperationError } from './errors';\nimport { ContractProvider, ContractSchema, StorageProvider } from './interface';\nimport { smartContractAbstractionSemantic } from './semantic';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { TransferTicketOperation } from '../operations/transfer-ticket-operation';\nimport { IncreasePaidStorageOperation } from '../operations/increase-paid-storage-operation';\nimport { BallotOperation } from '../operations/ballot-operation';\nimport { DrainDelegateOperation } from '../operations/drain-delegate-operation';\nimport { ProposalsOperation } from '../operations/proposals-operation';\nimport { UpdateConsensusKeyOperation } from '../operations/update-consensus-key-operation';\nimport { SmartRollupAddMessagesOperation } from '../operations/smart-rollup-add-messages-operation';\nimport { SmartRollupOriginateOperation } from '../operations/smart-rollup-originate-operation';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare';\nimport { FailingNoopOperation } from '../operations/failing-noop-operation';\n\nexport class RpcContractProvider extends Provider implements ContractProvider, StorageProvider {\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n contractProviderTypeSymbol = Symbol.for('taquito-contract-provider-type-symbol');\n\n private prepare = new PrepareProvider(this.context);\n /**\n *\n * @description Return a well formatted json object of the contract storage\n *\n * @param contract contract address you want to get the storage from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n * @throws {@link InvalidContractAddressError}\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n async getStorage<T>(contract: string, schema?: ContractSchema): Promise<T> {\n const contractValidation = validateContractAddress(contract);\n if (contractValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract, invalidDetail(contractValidation));\n }\n const script = await this.context.readProvider.getScript(contract, 'head');\n if (!schema) {\n schema = script;\n }\n\n let contractSchema: Schema;\n if (Schema.isSchema(schema as Schema)) {\n contractSchema = schema as Schema;\n } else {\n contractSchema = Schema.fromRPCResponse({ script: schema as ScriptResponse });\n }\n\n return contractSchema.Execute(script.storage, smartContractAbstractionSemantic(this)) as T; // Cast into T because only the caller can know the true type of the storage\n }\n\n /**\n *\n * @description Return a well formatted json object of the contract big map storage\n *\n * @param contract contract address you want to get the storage from\n * @param key contract big map key to fetch value from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n * @throws {@link InvalidContractAddressError}\n * @deprecated Deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n async getBigMapKey<T>(contract: string, key: string, schema?: ContractSchema): Promise<T> {\n const contractValidation = validateContractAddress(contract);\n if (contractValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract, invalidDetail(contractValidation));\n }\n if (!schema) {\n schema = (await this.rpc.getContract(contract)).script;\n }\n\n let contractSchema: Schema;\n if (Schema.isSchema(schema as Schema)) {\n contractSchema = schema as Schema;\n } else {\n contractSchema = Schema.fromRPCResponse({ script: schema as ScriptResponse });\n }\n\n const encodedKey = contractSchema.EncodeBigMapKey(key);\n\n const val = await this.rpc.getBigMapKey(contract, encodedKey);\n\n return contractSchema.ExecuteOnBigMapValue(val) as T; // Cast into T because only the caller can know the true type of the storage\n }\n\n /**\n *\n * @description Return a well formatted json object of a big map value\n *\n * @param id Big Map ID\n * @param keyToEncode key to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n async getBigMapKeyByID<T>(\n id: string,\n keyToEncode: BigMapKeyType,\n schema: Schema,\n block?: number\n ): Promise<T> {\n const { key, type } = schema.EncodeBigMapKey(keyToEncode);\n const { packed } = await this.context.packer.packData({ data: key, type });\n\n const encodedExpr = encodeExpr(packed);\n\n const bigMapValue = block\n ? await this.context.readProvider.getBigMapValue(\n { id: id.toString(), expr: encodedExpr },\n block\n )\n : await this.context.readProvider.getBigMapValue(\n { id: id.toString(), expr: encodedExpr },\n 'head'\n );\n\n return schema.ExecuteOnBigMapValue(bigMapValue, smartContractAbstractionSemantic(this)) as T;\n }\n\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it.\n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param id Big Map ID\n * @param keys Array of keys to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n async getBigMapKeysByID<T>(\n id: string,\n keys: Array<BigMapKeyType>,\n schema: Schema,\n block?: number,\n batchSize = 5\n ): Promise<MichelsonMap<MichelsonMapKey, T | undefined>> {\n const level = await this.getBlockForRequest(keys, block);\n const bigMapValues = new MichelsonMap<MichelsonMapKey, T | undefined>();\n\n // Execute batch of promises in series\n let position = 0;\n let results: Array<T | undefined> = [];\n\n while (position < keys.length) {\n const keysBatch = keys.slice(position, position + batchSize);\n const batch = keysBatch.map((keyToEncode) =>\n this.getBigMapValueOrUndefined<T>(keyToEncode, id, schema, level)\n );\n results = [...results, ...(await Promise.all(batch))];\n position += batchSize;\n }\n\n for (let i = 0; i < results.length; i++) {\n bigMapValues.set(keys[i], results[i]);\n }\n\n return bigMapValues;\n }\n\n private async getBlockForRequest(keys: Array<BigMapKeyType>, block?: number) {\n return keys.length === 1 || typeof block !== 'undefined'\n ? block\n : await this.context.readProvider.getBlockLevel('head');\n }\n\n private async getBigMapValueOrUndefined<T>(\n keyToEncode: BigMapKeyType,\n id: string,\n schema: Schema,\n level?: number\n ) {\n try {\n return await this.getBigMapKeyByID<T>(id, keyToEncode, schema, level);\n } catch (ex) {\n if (ex instanceof HttpResponseError && ex.status === STATUS_CODE.NOT_FOUND) {\n return;\n } else {\n throw ex;\n }\n }\n }\n\n /**\n *\n * @description Return a well formatted json object of a sapling state\n *\n * @param id Sapling state ID\n * @param block optional block level to fetch the value from\n *\n */\n async getSaplingDiffByID(id: string, block?: number) {\n const saplingState = block\n ? await this.context.readProvider.getSaplingDiffById({ id: id.toString() }, block)\n : await this.context.readProvider.getSaplingDiffById({ id: id.toString() }, 'head');\n return saplingState;\n }\n\n /**\n *\n * @description Originate a new contract according to the script in parameters. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @warn You cannot specify storage and init at the same time (use init to pass the raw michelson representation of storage)\n *\n * @param OriginationOperation Originate operation parameter\n */\n async originate<TContract extends DefaultContractType = DefaultContractType>(\n params: OriginateParams<ContractStorageType<TContract>>\n ) {\n const estimate = await this.estimate(params, this.estimator.originate.bind(this.estimator));\n const preparedOrigination = await this.prepare.originate({ ...params, ...estimate });\n\n const content = preparedOrigination.opOb.contents.find(\n (op) => op.kind === OpKind.ORIGINATION\n ) as OperationContentsOrigination;\n const forgedOrigination = await this.forge(preparedOrigination);\n\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(forgedOrigination);\n return new OriginationOperation<TContract>(\n hash,\n content,\n forgedBytes,\n opResponse,\n context,\n this\n );\n }\n\n /**\n *\n * @description Set the delegate for a contract. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param SetDelegate operation parameter\n */\n async setDelegate(params: DelegateParams) {\n const sourceValidation = validateAddress(params.source);\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n\n // Since babylon delegation source cannot smart contract\n if (/kt1/i.test(params.source)) {\n throw new InvalidDelegationSource(params.source);\n }\n\n const publicKeyHash = await this.signer.publicKeyHash();\n const sourceOrDefault = params.source || publicKeyHash;\n\n const estimate = await this.estimate(params, this.estimator.setDelegate.bind(this.estimator));\n const preparedDelegation = await this.prepare.delegation({ ...params, ...estimate });\n\n const content = preparedDelegation.opOb.contents.find(\n (op) => op.kind === OpKind.DELEGATION\n ) as OperationContentsDelegation;\n\n const opBytes = await this.forge(preparedDelegation);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(hash, content, sourceOrDefault, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Register the current address as delegate. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RegisterDelegate operation parameter\n */\n async registerDelegate(params: RegisterDelegateParams) {\n const estimate = await this.estimate(\n params,\n this.estimator.registerDelegate.bind(this.estimator)\n );\n const source = await this.signer.publicKeyHash();\n\n const prepared = await this.prepare.registerDelegate({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.DELEGATION\n ) as OperationContentsDelegation;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(hash, content, source, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Transfer tz from current address to a specific address. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param Transfer operation parameter\n */\n async transfer(params: TransferParams) {\n const toValidation = validateAddress(params.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n if (params.amount < 0) {\n throw new InvalidAmountError(params.amount.toString());\n }\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(params, this.estimator.transfer.bind(this.estimator));\n\n const source = params.source || publicKeyHash;\n const prepared = await this.prepare.transaction({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.TRANSACTION\n ) as OperationContentsTransaction;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransactionOperation(hash, content, source, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Transfer Tickets to a smart contract address\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param TransferTicketParams operation parameter\n */\n async transferTicket(params: TransferTicketParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n\n const publicKeyHash = await this.signer.publicKeyHash();\n const source = params.source ?? publicKeyHash;\n\n const estimate = await this.estimate(\n params,\n this.estimator.transferTicket.bind(this.estimator)\n );\n\n const prepared = await this.prepare.transferTicket({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.TRANSFER_TICKET\n ) as OperationContentsTransferTicket;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransferTicketOperation(hash, content, source, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Reveal the current address. Will throw an error if the address is already revealed.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RevealParams operation parameter\n */\n async reveal(params: RevealParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimateReveal = await this.estimator.reveal(params);\n if (estimateReveal) {\n const estimated = await this.estimate(params, async () => estimateReveal);\n const prepared = await this.prepare.reveal({ ...params, ...estimated });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.REVEAL\n ) as OperationContentsReveal;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RevealOperation(hash, content, publicKeyHash, forgedBytes, opResponse, context);\n } else {\n throw new RevealOperationError(\n `The publicKeyHash '${publicKeyHash}' has already been revealed.`\n );\n }\n }\n\n /**\n *\n * @description Register a Micheline expression in a global table of constants. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params registerGlobalConstant operation parameter\n */\n async registerGlobalConstant(params: RegisterGlobalConstantParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.registerGlobalConstant.bind(this.estimator)\n );\n\n const prepared = await this.prepare.registerGlobalConstant({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.REGISTER_GLOBAL_CONSTANT\n ) as OperationContentsRegisterGlobalConstant;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RegisterGlobalConstantOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description Increase the paid storage of a smart contract\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params increasePaidStorage operation parameter\n */\n async increasePaidStorage(params: IncreasePaidStorageParams) {\n if (params.amount < 0) {\n throw new InvalidAmountError(params.amount.toString());\n }\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.increasePaidStorage.bind(this.estimator)\n );\n\n const prepared = await this.prepare.increasePaidStorage({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.INCREASE_PAID_STORAGE\n ) as OperationContentsIncreasePaidStorage;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new IncreasePaidStorageOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description Transfers the spendable balance of the delegate to destination when consensus_key is the active consensus key of delegate\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params drainDelegate operation parameter\n */\n async drainDelegate(params: DrainDelegateParams) {\n const prepared = await this.prepare.drainDelegate(params);\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.DRAIN_DELEGATE\n ) as OperationContentsDrainDelegate;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DrainDelegateOperation(hash, content, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Submit a ballot vote to a specified proposal\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param BallotParams Ballot operation parameter\n */\n async ballot(params: BallotParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const source = params.source ?? publicKeyHash;\n\n const prepared = await this.prepare.ballot({ ...params, source });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.BALLOT\n ) as OperationContentsBallot;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BallotOperation(hash, content, publicKeyHash, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Submit or upvote a proposal during the Proposal period\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param ProposalsParams Proposals operation parameter\n */\n async proposals(params: ProposalsParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const source = params.source ?? publicKeyHash;\n\n const prepared = await this.prepare.proposals({ ...params, source });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.PROPOSALS\n ) as OperationContentsProposals;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new ProposalsOperation(hash, content, publicKeyHash, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Updates the consensus key of the baker to public_key starting from the current cycle plus PRESERVED_CYCLES + 1\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param UpdateConsensusKeyParams\n */\n async updateConsensusKey(params: UpdateConsensusKeyParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.updateConsensusKey.bind(this.estimator)\n );\n\n const prepared = await this.prepare.updateConsensusKey({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.UPDATE_CONSENSUS_KEY\n ) as OperationContentsUpdateConsensusKey;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new UpdateConsensusKeyOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n * @description Adds messages to the rollup inbox that can be executed/claimed after it gets cemented\n * @param SmartRollupAddMessagesParams\n * @returns An operation handle with results from the RPC node\n */\n async smartRollupAddMessages(params: SmartRollupAddMessagesParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.smartRollupAddMessages.bind(this.estimator)\n );\n\n const prepared = await this.prepare.smartRollupAddMessages({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.SMART_ROLLUP_ADD_MESSAGES\n ) as OperationContentsSmartRollupAddMessages;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n\n return new SmartRollupAddMessagesOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n * @description Creates a smart rollup originate operation\n * @param SmartRollupOriginateParams\n * @returns An operation handle with results from the RPC node\n */\n async smartRollupOriginate(params: SmartRollupOriginateParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.smartRollupOriginate.bind(this.estimator)\n );\n const originationProof = await this.rpc.getOriginationProof({\n kind: params.pvmKind,\n kernel: params.kernel,\n });\n const completeParams = { ...params, originationProof };\n\n const prepared = await this.prepare.smartRollupOriginate({ ...completeParams, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.SMART_ROLLUP_ORIGINATE\n ) as OperationContentsSmartRollupOriginate;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n\n return new SmartRollupOriginateOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description A failing_noop operation that is guaranteed to fail.\n *\n * @returns A FailingNoopOperation object representing the signed failing_noop operation\n *\n * @param params failingNoop operation parameter\n */\n async failingNoop(params: FailingNoopParams): Promise<FailingNoopOperation> {\n const op: OperationContentsFailingNoop = {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n };\n const hash = await this.context.readProvider.getBlockHash(params.basedOnBlock);\n\n const forged = await this.context.forger.forge({\n branch: hash,\n contents: [op],\n });\n const { prefixSig } = await this.signer.sign(forged, new Uint8Array([3]));\n return {\n signature: prefixSig,\n bytes: forged,\n signedContent: {\n branch: hash,\n contents: [\n {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n },\n ],\n },\n };\n }\n\n /**\n *\n * @description Create an smart contract abstraction for the address specified.\n *\n * @param address Smart contract address\n * @throws {@link InvalidContractAddressError}\n */\n async at<T extends DefaultContractType = DefaultContractType>(\n address: string,\n contractAbstractionComposer: ContractAbstractionComposer<T> = (x) => x as any\n ): Promise<T> {\n const addressValidation = validateContractAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address, invalidDetail(addressValidation));\n }\n const rpc = this.context.withExtensions().rpc;\n const readProvider = this.context.withExtensions().readProvider;\n const script = await readProvider.getScript(address, 'head');\n const entrypoints = await readProvider.getEntrypoints(address);\n const abs = new ContractAbstraction(\n address,\n script,\n this,\n this,\n entrypoints,\n rpc,\n readProvider\n );\n return contractAbstractionComposer(abs, this.context);\n }\n\n /**\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @returns A batch object from which we can add more operation or send a command to execute the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]) {\n const batch = new OperationBatch(this.context, this.estimator);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n}\n\ntype ContractAbstractionComposer<T> = (\n abs: ContractAbstraction<ContractProvider>,\n context: Context\n) => T;\n","import { Context } from '../context';\nimport { ParserProvider } from './interface';\nimport { Expr, GlobalConstantHashAndValue, Parser, Prim, ProtocolID } from '@taquito/michel-codec';\nimport { OriginateParams } from '../operations/types';\nimport { InvalidInitParameter, InvalidCodeParameter } from '../contract/errors';\nimport { Schema } from '@taquito/michelson-encoder';\nimport { MichelsonV1Expression, MichelsonV1ExpressionBase } from '@taquito/rpc';\nimport { Protocols } from '../constants';\n\nexport class MichelCodecParser implements ParserProvider {\n constructor(private context: Context) {}\n\n private async getNextProto(): Promise<ProtocolID> {\n if (!this.context.proto) {\n const nextProto = await this.context.readProvider.getNextProtocol('head');\n this.context.proto = nextProto as Protocols;\n }\n return this.context.proto as ProtocolID;\n }\n\n async parseScript(src: string): Promise<Expr[] | null> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseScript(src);\n }\n\n async parseMichelineExpression(src: string): Promise<Expr | null> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseMichelineExpression(src);\n }\n\n async parseJSON(src: object): Promise<Expr> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseJSON(src);\n }\n\n async prepareCodeOrigination(params: OriginateParams): Promise<OriginateParams> {\n const parsedParams = params;\n parsedParams.code = await this.formatCodeParam(params.code);\n if (params.init) {\n parsedParams.init = await this.formatInitParam(params.init);\n } else if (params.storage) {\n const storageType = (parsedParams.code as Expr[]).find(\n (p): p is Prim => 'prim' in p && p.prim === 'storage'\n );\n if (!storageType?.args) {\n throw new InvalidCodeParameter(\n 'The storage section is missing from the script',\n params.code\n );\n }\n const schema = new Schema(storageType.args[0] as MichelsonV1Expression);\n const globalconstantsHashAndValue = await this.findGlobalConstantsHashAndValue(schema);\n\n if (Object.keys(globalconstantsHashAndValue).length !== 0) {\n // If there are global constants in the storage part of the contract code,\n // they need to be locally expanded in order to encode the storage arguments\n const p = new Parser({ expandGlobalConstant: globalconstantsHashAndValue });\n const storageTypeNoGlobalConst = p.parseJSON(storageType.args[0]);\n const schemaNoGlobalConst = new Schema(storageTypeNoGlobalConst);\n parsedParams.init = schemaNoGlobalConst.Encode(params.storage);\n } else {\n parsedParams.init = schema.Encode(params.storage);\n }\n delete parsedParams.storage;\n }\n return parsedParams;\n }\n\n private async formatCodeParam(code: string | object[]) {\n let parsedCode: Expr[];\n if (typeof code === 'string') {\n const c = await this.parseScript(code);\n if (c === null) {\n throw new InvalidCodeParameter('Unable to parse', code);\n }\n parsedCode = c;\n } else {\n const c = await this.parseJSON(code);\n const order = ['parameter', 'storage', 'code'];\n // Ensure correct ordering for RPC\n parsedCode = (c as Prim[]).sort((a, b) => order.indexOf(a.prim) - order.indexOf(b.prim));\n }\n return parsedCode;\n }\n\n private async formatInitParam(init: string | object) {\n let parsedInit: Expr;\n if (typeof init === 'string') {\n const c = await this.parseMichelineExpression(init);\n if (c === null) {\n throw new InvalidInitParameter('Invalid init parameter', init);\n }\n parsedInit = c;\n } else {\n parsedInit = await this.parseJSON(init);\n }\n return parsedInit;\n }\n\n private async findGlobalConstantsHashAndValue(schema: Schema) {\n const globalConstantTokens = schema.findToken('constant');\n const globalConstantsHashAndValue: GlobalConstantHashAndValue = {};\n\n if (globalConstantTokens.length !== 0) {\n for (const token of globalConstantTokens) {\n const tokenArgs = token.tokenVal.args;\n if (tokenArgs) {\n const expression = tokenArgs[0] as MichelsonV1ExpressionBase;\n if (expression.string) {\n const hash: string = expression.string;\n const michelineValue =\n await this.context.globalConstantsProvider.getGlobalConstantByHash(hash);\n Object.assign(globalConstantsHashAndValue, {\n [hash]: michelineValue,\n });\n }\n }\n }\n }\n return globalConstantsHashAndValue;\n }\n}\n","import { Packer } from './interface';\nimport { Context } from '../context';\nimport { PackDataParams, PackDataResponse } from '@taquito/rpc';\n\nexport class RpcPacker implements Packer {\n constructor(private context: Context) {}\n \n async packData(data: PackDataParams): Promise<PackDataResponse> {\n return this.context.rpc.packData(data);\n }\n}\n","import { TaquitoError, TezosToolkitConfigError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates that a global constant does not exist\n */\nexport class GlobalConstantNotFound extends TaquitoError {\n constructor(public readonly hash: string) {\n super();\n this.name = 'GlobalConstantNotFound';\n this.message = `Please load the value associated with the constant ${hash} using the loadGlobalConstant method of the DefaultGlobalConstantsProvider.`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates the global constant provider not being configured under TezosToolkit\n */\nexport class UnconfiguredGlobalConstantsProviderError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'UnconfiguredGlobalConstantsProviderError';\n this.message =\n 'No global constants provider has been configured. Please configure one by calling setGlobalConstantsProvider({globalConstantsProvider}) on your TezosToolkit instance.';\n }\n}\n","import { Expr } from '@taquito/michel-codec';\nimport { UnconfiguredGlobalConstantsProviderError } from './errors';\nimport { GlobalConstantHash, GlobalConstantsProvider } from './interface-global-constants-provider';\n\nexport class NoopGlobalConstantsProvider implements GlobalConstantsProvider {\n async getGlobalConstantByHash(_hash: GlobalConstantHash): Promise<Expr> {\n throw new UnconfiguredGlobalConstantsProviderError();\n }\n}\n","import {\n BlockResponse,\n EntrypointsResponse,\n MichelsonV1Expression,\n RpcClientInterface,\n SaplingDiffResponse,\n ScriptedContracts,\n} from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { BigMapQuery, BlockIdentifier, SaplingStateQuery, TzReadProvider } from './interface';\n\n/**\n * @description Converts calls from TzReadProvider into calls to the wrapped RpcClient in a format it can understand.\n */\nexport class RpcReadAdapter implements TzReadProvider {\n constructor(private rpc: RpcClientInterface) {}\n\n /**\n * @description Access the balance of a contract.\n * @param address address from which we want to retrieve the balance\n * @param block from which we want to retrieve the balance\n * @returns the balance in mutez\n */\n async getBalance(address: string, block: BlockIdentifier): Promise<BigNumber> {\n return this.rpc.getBalance(address, { block: String(block) });\n }\n\n /**\n * @description Access the delegate of a contract, if any.\n * @param address contract address from which we want to retrieve the delegate (baker)\n * @param block from which we want to retrieve the delegate\n * @returns the public key hash of the delegate or null if no delegate\n */\n async getDelegate(address: string, block: BlockIdentifier): Promise<string | null> {\n return this.rpc.getDelegate(address, { block: String(block) });\n }\n\n /**\n * @description Access the next protocol hash\n * @param block from which we want to retrieve the next protocol hash\n */\n async getNextProtocol(block: BlockIdentifier): Promise<string> {\n const protocols = await this.rpc.getProtocols({ block: String(block) });\n return protocols.next_protocol;\n }\n\n /**\n * @description Access protocol constants used in Taquito\n * @param block from which we want to retrieve the constants\n */\n async getProtocolConstants(block: BlockIdentifier): Promise<{\n time_between_blocks?: BigNumber[];\n minimal_block_delay?: BigNumber | undefined;\n hard_gas_limit_per_operation: BigNumber;\n hard_gas_limit_per_block: BigNumber;\n hard_storage_limit_per_operation: BigNumber;\n cost_per_byte: BigNumber;\n tx_rollup_origination_size?: number;\n smart_rollup_origination_size: number;\n }> {\n const {\n time_between_blocks,\n minimal_block_delay,\n hard_gas_limit_per_operation,\n hard_gas_limit_per_block,\n hard_storage_limit_per_operation,\n cost_per_byte,\n tx_rollup_origination_size,\n smart_rollup_origination_size,\n } = await this.rpc.getConstants({ block: String(block) });\n return {\n time_between_blocks,\n minimal_block_delay,\n hard_gas_limit_per_operation,\n hard_gas_limit_per_block,\n hard_storage_limit_per_operation,\n cost_per_byte,\n tx_rollup_origination_size,\n smart_rollup_origination_size,\n };\n }\n\n /**\n * @description Access the script (code and storage) of a smart contract\n * @param contract contract address from which we want to retrieve the script\n * @param block from which we want to retrieve the storage value\n * @returns Note: The code must be in the JSON format and not contain global constant\n */\n async getScript(contract: string, block: BlockIdentifier): Promise<ScriptedContracts> {\n const { script } = await this.rpc.getContract(contract, { block: String(block) });\n return script;\n }\n\n /**\n * @description Access the storage value of a contract\n * @param contract contract address from which we want to retrieve the storage\n * @param block from which we want to retrieve the storage value\n */\n async getStorage(contract: string, block: BlockIdentifier): Promise<MichelsonV1Expression> {\n return this.rpc.getStorage(contract, { block: String(block) });\n }\n\n /**\n * @description Access the block hash\n */\n async getBlockHash(block: BlockIdentifier): Promise<string> {\n const { hash } = await this.rpc.getBlockHeader({ block: String(block) });\n return hash;\n }\n\n /**\n * @description Access the block level\n */\n async getBlockLevel(block: BlockIdentifier): Promise<number> {\n const { level } = await this.rpc.getBlockHeader({ block: String(block) });\n return level;\n }\n\n /**\n * @description Access the counter of an address\n * @param pkh from which we want to retrieve the counter\n * @param block from which we want to retrieve the counter\n */\n async getCounter(pkh: string, block: BlockIdentifier): Promise<string> {\n const { counter } = await this.rpc.getContract(pkh, { block: String(block) });\n return counter || '0';\n }\n\n /**\n * @description Access the timestamp of a block\n * @param block from which we want to retrieve the timestamp\n * @returns date ISO format zero UTC offset (\"2022-01-19T22:37:07Z\")\n */\n async getBlockTimestamp(block: BlockIdentifier): Promise<string> {\n const { timestamp } = await this.rpc.getBlockHeader({ block: String(block) });\n return timestamp;\n }\n\n /**\n * @description Access the value associated with a key in a big map.\n * @param bigMapQuery Big Map ID and Expression hash to query (A b58check encoded Blake2b hash of the expression)\n * @param block from which we want to retrieve the big map value\n */\n async getBigMapValue(\n bigMapQuery: BigMapQuery,\n block: BlockIdentifier\n ): Promise<MichelsonV1Expression> {\n return this.rpc.getBigMapExpr(bigMapQuery.id, bigMapQuery.expr, {\n block: String(block),\n });\n }\n\n /**\n * @description Access the value associated with a sapling state ID.\n * @param id Sapling state ID\n * @param block from which we want to retrieve the sapling state\n */\n async getSaplingDiffById(\n saplingStateQuery: SaplingStateQuery,\n block: BlockIdentifier\n ): Promise<SaplingDiffResponse> {\n return this.rpc.getSaplingDiffById(saplingStateQuery.id, { block: String(block) });\n }\n\n /**\n * @description Access the sapling state of a smart contract.\n * @param contractAddress The address of the smart contract\n * @param block The block you want to retrieve the sapling state from\n */\n async getSaplingDiffByContract(\n contractAddress: string,\n block: BlockIdentifier\n ): Promise<SaplingDiffResponse> {\n return this.rpc.getSaplingDiffByContract(contractAddress, { block: String(block) });\n }\n\n /**\n * @description Return the list of entrypoints of the contract\n * @param contract address of the contract we want to get the entrypoints of\n */\n async getEntrypoints(contract: string): Promise<EntrypointsResponse> {\n return this.rpc.getEntrypoints(contract);\n }\n\n /**\n * @description Access the chain id\n */\n async getChainId(): Promise<string> {\n return this.rpc.getChainId();\n }\n\n /**\n * @description Indicate if an account is revealed\n * @param publicKeyHash of the account\n * @param block from which we want to know if the account is revealed\n */\n async isAccountRevealed(publicKeyHash: string, block: BlockIdentifier): Promise<boolean> {\n const manager = await this.rpc.getManagerKey(publicKeyHash, { block: String(block) });\n const haveManager = manager && typeof manager === 'object' ? !!manager.key : !!manager;\n return haveManager;\n }\n\n /**\n * @description Return all the information about a block\n * @param block from which we want to retrieve the information\n */\n async getBlock(block: BlockIdentifier): Promise<BlockResponse> {\n return this.rpc.getBlock({ block: String(block) });\n }\n\n /**\n * @description Return a list of the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.\n * @param block from which we want to retrieve the information\n */\n getLiveBlocks(block: BlockIdentifier): Promise<string[]> {\n return this.rpc.getLiveBlocks({ block: String(block) });\n }\n}\n","import { ParameterValidationError } from '@taquito/core';\nimport { FilterExpression } from '../taquito';\n\n/**\n * @category Error\n * @description Error that indicates an unsupported event being passed or used\n */\nexport class UnsupportedEventError extends ParameterValidationError {\n constructor(public readonly type: string) {\n super();\n this.name = 'UnsupportedEventError';\n this.message = `Unsupported event type \"${type}\" expecting one of the \"data\", \"error\", or \"close\".`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid filter expression being passed or used\n */\nexport class InvalidFilterExpressionError extends ParameterValidationError {\n constructor(public readonly invalidExpression: FilterExpression) {\n super();\n this.name = 'InvalidFilterExpressionError';\n this.message = `Invalid filter expression expecting the object to contain either and/or property`;\n }\n}\n","import {\n OpFilter,\n FilterExpression,\n Filter,\n OpHashFilter,\n SourceFilter,\n KindFilter,\n DestinationFilter,\n OperationContent,\n} from './interface';\n\nimport { InternalOperationResult } from '@taquito/rpc';\n\nimport { InvalidFilterExpressionError } from './errors';\n\nconst opHashFilter = (op: OperationContent, filter: OpHashFilter) => op.hash === filter.opHash;\n\nconst sourceFilter = (x: OperationContent, filter: SourceFilter) => {\n switch (x.kind) {\n case 'endorsement':\n return 'metadata' in x && x.metadata.delegate === filter.source;\n case 'activate_account':\n return 'metadata' in x && x.pkh === filter.source;\n default:\n return 'source' in x && x.source === filter.source;\n }\n};\n\nconst kindFilter = (x: OperationContent, filter: KindFilter) =>\n 'kind' in x && x.kind === filter.kind;\n\nconst destinationFilter = (x: OperationContent, filter: DestinationFilter) => {\n switch (x.kind) {\n case 'delegation':\n return x.delegate === filter.destination;\n case 'origination':\n if (\n 'metadata' in x &&\n 'operation_result' in x.metadata &&\n 'originated_contracts' in x.metadata.operation_result &&\n Array.isArray(x.metadata.operation_result.originated_contracts)\n ) {\n return x.metadata.operation_result.originated_contracts.some(\n (contract) => contract === filter.destination\n );\n }\n break;\n case 'transaction':\n return x.destination === filter.destination;\n default:\n return false;\n }\n};\n\nexport const eventFilter = (\n result: InternalOperationResult,\n address?: string,\n tag?: string,\n excludeFailedOperations?: boolean\n) => {\n if (result.kind !== 'event') {\n return false;\n }\n if (tag && result.tag !== tag) {\n return false;\n }\n if (address && result.source !== address) {\n return false;\n }\n if (excludeFailedOperations && result.result.status !== 'applied') {\n return false;\n }\n return true;\n};\n\nexport const evaluateOpFilter = (op: OperationContent, filter: OpFilter) => {\n if ('opHash' in filter) {\n return opHashFilter(op, filter);\n } else if ('source' in filter) {\n return sourceFilter(op, filter);\n } else if ('kind' in filter) {\n return kindFilter(op, filter);\n } else if ('destination' in filter) {\n return destinationFilter(op, filter);\n }\n return false;\n};\n\nexport const evaluateExpression = (op: OperationContent, exp: FilterExpression): boolean => {\n if (Array.isArray(exp.and)) {\n return exp.and.every((x: OpFilter | FilterExpression) => evaluateFilter(op, x));\n } else if (Array.isArray(exp.or)) {\n return exp.or.some((x: OpFilter | FilterExpression) => evaluateFilter(op, x));\n } else {\n throw new InvalidFilterExpressionError(exp);\n }\n};\n\nexport const evaluateFilter = (op: OperationContent, filter: Filter): boolean => {\n const filters: OpFilter[] | FilterExpression[] = [];\n if (!Array.isArray(filter)) {\n filters.push(filter as any);\n } else {\n filters.push(...(filter as any));\n }\n\n return (filters as any[]).every((filterOrExp: OpFilter | FilterExpression) => {\n if ('and' in filterOrExp || 'or' in filterOrExp) {\n return evaluateExpression(op, filterOrExp);\n } else {\n return evaluateOpFilter(op, filterOrExp as OpFilter);\n }\n });\n};\n","/* eslint-disable no-dupe-class-members */\nimport { Observable, Subject, NEVER, OperatorFunction } from 'rxjs';\nimport { Subscription } from './interface';\nimport { takeUntil, tap, catchError, retry } from 'rxjs/operators';\nimport { UnsupportedEventError } from './errors';\n\nexport { UnsupportedEventError } from './errors';\n\nexport class ObservableSubscription<T> implements Subscription<T> {\n private errorListeners: Array<(error: Error) => void> = [];\n private messageListeners: Array<(data: T) => void> = [];\n private closeListeners: Array<() => void> = [];\n private completed$ = new Subject<void>();\n\n constructor(\n obs: Observable<T>,\n private shouldRetry: boolean = false,\n private operatorFunction: OperatorFunction<T, T> = retry<T>()\n ) {\n obs\n .pipe(\n takeUntil(this.completed$),\n tap(\n (data: T) => {\n this.call(this.messageListeners, data);\n },\n (error) => {\n this.call(this.errorListeners, error);\n },\n () => {\n this.call(this.closeListeners);\n }\n ),\n this.shouldRetry ? operatorFunction : tap(),\n catchError(() => NEVER)\n )\n .subscribe();\n }\n\n private call<K>(listeners: Array<(val: K) => void>, value?: K) {\n for (const l of listeners) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n l(value!);\n } catch (ex) {\n console.error(ex);\n }\n }\n }\n\n private remove(listeners: Array<any>, value: any) {\n const idx = listeners.indexOf(value);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n }\n\n public on(type: 'error', cb: (error: Error) => void): void;\n public on(type: 'data', cb: (data: T) => void): void;\n public on(type: 'close', cb: () => void): void;\n\n public on(type: 'data' | 'error' | 'close', cb: any): void {\n switch (type) {\n case 'data':\n this.messageListeners.push(cb);\n break;\n case 'error':\n this.errorListeners.push(cb);\n break;\n case 'close':\n this.closeListeners.push(cb);\n break;\n default:\n throw new UnsupportedEventError(type);\n }\n }\n\n public off(type: 'error', cb: (error: Error) => void): void;\n public off(type: 'data', cb: (data: T) => void): void;\n public off(type: 'close', cb: () => void): void;\n\n public off(type: 'data' | 'error' | 'close', cb: any): void {\n switch (type) {\n case 'data':\n this.remove(this.messageListeners, cb);\n break;\n case 'error':\n this.remove(this.errorListeners, cb);\n break;\n case 'close':\n this.remove(this.closeListeners, cb);\n break;\n default:\n throw new UnsupportedEventError(type);\n }\n }\n\n public close() {\n this.completed$.next();\n }\n}\n","import {\n BlockResponse,\n InternalOperationResult,\n OperationContentsAndResultTransaction,\n} from '@taquito/rpc';\nimport { BehaviorSubject, from, Observable, ObservableInput, OperatorFunction, timer } from 'rxjs';\nimport {\n concatMap,\n distinctUntilKeyChanged,\n first,\n pluck,\n publish,\n refCount,\n retry,\n switchMap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { evaluateFilter, eventFilter } from './filters';\nimport {\n Filter,\n EventFilter,\n SubscribeProvider,\n Subscription,\n OperationContent,\n EventSubscription,\n} from './interface';\nimport { ObservableSubscription } from './observable-subscription';\nimport BigNumber from 'bignumber.js';\n\nexport interface PollingSubscribeProviderConfig {\n pollingIntervalMilliseconds?: number;\n shouldObservableSubscriptionRetry: boolean;\n observableSubscriptionRetryFunction: OperatorFunction<any, any>;\n}\n\nexport const defaultConfigStreamer: PollingSubscribeProviderConfig = {\n shouldObservableSubscriptionRetry: false,\n observableSubscriptionRetryFunction: retry(),\n};\n\nconst getLastBlock = (context: Context) => {\n return from(context.rpc.getBlock()).pipe(first());\n};\n\nconst applyFilter = (filter: Filter) =>\n concatMap<BlockResponse, ObservableInput<OperationContent>>((block) => {\n return new Observable<OperationContent>((sub) => {\n for (const ops of block.operations) {\n for (const op of ops) {\n for (const content of op.contents) {\n if (evaluateFilter({ hash: op.hash, ...content }, filter)) {\n sub.next({ hash: op.hash, ...content });\n }\n }\n }\n }\n sub.complete();\n });\n });\n\nconst applyEventFilter = (filter?: EventFilter) =>\n concatMap<BlockResponse, ObservableInput<EventSubscription>>((block) => {\n return new Observable<EventSubscription>((sub) => {\n for (const ops of block.operations) {\n for (const op of ops) {\n for (const content of op.contents) {\n const tx = content as OperationContentsAndResultTransaction;\n const internalOpResults = tx.metadata.internal_operation_results;\n if (internalOpResults) {\n for (const event of internalOpResults) {\n if (eventFilter(event, filter?.address, filter?.tag, filter?.excludeFailedOperations)) {\n sub.next({\n opHash: op.hash,\n blockHash: block.hash,\n level: block.header.level,\n ...event,\n });\n }\n }\n }\n }\n }\n }\n sub.complete();\n });\n });\n\nexport class PollingSubscribeProvider implements SubscribeProvider {\n private _config$: BehaviorSubject<PollingSubscribeProviderConfig>;\n // Map the changing polling interval to a timer, which will automatically terminate the previous timer when the next one starts.\n private timer$: Observable<number>;\n\n private newBlock$: Observable<BlockResponse>;\n\n constructor(private context: Context, config: Partial<PollingSubscribeProviderConfig> = {}) {\n this._config$ = new BehaviorSubject({\n ...defaultConfigStreamer,\n ...config,\n });\n this.timer$ = this._config$.pipe(\n pluck('pollingIntervalMilliseconds'),\n switchMap((pollingIntervalMilliseconds) => {\n if (!pollingIntervalMilliseconds) {\n return from(this.getConfirmationPollingInterval()).pipe(\n switchMap((interval) => {\n return timer(0, interval);\n })\n );\n } else {\n return timer(0, pollingIntervalMilliseconds);\n }\n })\n );\n this.newBlock$ = this.timer$.pipe(\n switchMap(() => getLastBlock(this.context)),\n distinctUntilKeyChanged('hash'),\n publish(),\n refCount()\n );\n }\n\n get config() {\n return this._config$.getValue();\n }\n\n private async getConfirmationPollingInterval() {\n if (!this.config.pollingIntervalMilliseconds) {\n const defaultIntervalTestnetsMainnet = 5000;\n const defaultIntervalSandbox = 1000;\n try {\n const constants = await this.context.readProvider.getProtocolConstants('head');\n const blockTime = constants.minimal_block_delay\n ? constants.minimal_block_delay.multipliedBy(1000)\n : constants.time_between_blocks\n ? constants.time_between_blocks[0].multipliedBy(1000)\n : new BigNumber(defaultIntervalTestnetsMainnet);\n const confirmationPollingInterval = blockTime.dividedBy(3);\n\n this.config.pollingIntervalMilliseconds =\n confirmationPollingInterval.toNumber() === 0\n ? defaultIntervalSandbox\n : confirmationPollingInterval.toNumber();\n } catch (exception) {\n return defaultIntervalTestnetsMainnet;\n }\n }\n return this.config.pollingIntervalMilliseconds;\n }\n\n subscribeBlock(_filter: 'head'): Subscription<BlockResponse> {\n return new ObservableSubscription(\n this.newBlock$,\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n\n subscribe(_filter: 'head'): Subscription<string> {\n return new ObservableSubscription(\n this.newBlock$.pipe(pluck('hash')),\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n\n subscribeOperation(filter: Filter): Subscription<OperationContent> {\n return new ObservableSubscription(\n this.newBlock$.pipe(applyFilter(filter)),\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n\n subscribeEvent(eventFilter?: EventFilter): Subscription<InternalOperationResult> {\n return new ObservableSubscription(\n this.newBlock$.pipe(applyEventFilter(eventFilter)),\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n}\n","import {\n LocalForger,\n Forger,\n ForgeParams,\n ForgeResponse,\n ProtocolsHash,\n} from '@taquito/local-forging';\nimport { Protocols } from '../constants';\nimport { Context } from '../context';\n\nexport class TaquitoLocalForger implements Forger {\n constructor(private context: Context) {}\n\n private async getNextProto(): Promise<ProtocolsHash> {\n if (!this.context.proto) {\n const nextProto = await this.context.readProvider.getNextProtocol('head');\n this.context.proto = nextProto as Protocols;\n }\n return this.context.proto as unknown as ProtocolsHash;\n }\n\n async forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n const forger = new LocalForger(await this.getNextProto());\n return forger.forge({ branch, contents });\n }\n}\n","import { RpcClient, RpcClientInterface } from '@taquito/rpc';\nimport { Protocols } from './constants';\nimport { Forger } from '@taquito/local-forging';\nimport { Injector } from './injector/interface';\nimport { RpcInjector } from './injector/rpc-injector';\nimport { Signer } from './signer/interface';\nimport { NoopSigner } from './signer/noop';\nimport { OperationFactory } from './wallet/operation-factory';\nimport { RpcTzProvider } from './tz/rpc-tz-provider';\nimport { RPCEstimateProvider } from './estimate/rpc-estimate-provider';\nimport { RpcContractProvider } from './contract/rpc-contract-provider';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\n\nimport { Wallet, LegacyWalletProvider, WalletProvider } from './wallet';\nimport { ParserProvider } from './parser/interface';\nimport { MichelCodecParser } from './parser/michel-codec-parser';\nimport { Packer } from './packer/interface';\nimport { RpcPacker } from './packer/rpc-packer';\nimport { BehaviorSubject } from 'rxjs';\nimport { GlobalConstantsProvider } from './global-constants/interface-global-constants-provider';\nimport { NoopGlobalConstantsProvider } from './global-constants/noop-global-constants-provider';\nimport { TzReadProvider } from './read-provider/interface';\nimport { RpcReadAdapter } from './read-provider/rpc-read-adapter';\nimport { SubscribeProvider } from './subscribe/interface';\nimport { PollingSubscribeProvider } from './subscribe/polling-subcribe-provider';\nimport { TaquitoLocalForger } from './forger/taquito-local-forger';\nimport { PrepareProvider } from './prepare/prepare-provider';\n\nexport interface TaquitoProvider<T, K extends Array<any>> {\n new (context: Context, ...rest: K): T;\n}\n\nexport interface ConfigConfirmation {\n confirmationPollingTimeoutSecond: number;\n defaultConfirmationCount: number;\n}\n\nexport const defaultConfigConfirmation: ConfigConfirmation = {\n defaultConfirmationCount: 1,\n confirmationPollingTimeoutSecond: 180,\n};\n\n/**\n * @description Encapsulate common service used throughout different part of the library\n */\nexport class Context {\n private _rpcClient: RpcClientInterface;\n private _forger: Forger;\n private _parser: ParserProvider;\n private _injector: Injector;\n private _walletProvider: WalletProvider;\n public readonly operationFactory: OperationFactory;\n private _packer: Packer;\n private providerDecorator: Array<(context: Context) => Context> = [];\n private _globalConstantsProvider: GlobalConstantsProvider;\n private _readProvider: TzReadProvider;\n private _stream: SubscribeProvider;\n public readonly tz = new RpcTzProvider(this);\n public readonly estimate = new RPCEstimateProvider(this);\n public readonly contract = new RpcContractProvider(this, this.estimate);\n public readonly prepare = new PrepareProvider(this);\n public readonly batch = new RPCBatchProvider(this, this.estimate);\n public readonly wallet = new Wallet(this);\n\n constructor(\n private _rpc: RpcClientInterface | string,\n private _signer: Signer = new NoopSigner(),\n private _proto?: Protocols,\n public readonly _config = new BehaviorSubject({\n ...defaultConfigConfirmation,\n }),\n forger?: Forger,\n injector?: Injector,\n packer?: Packer,\n wallet?: WalletProvider,\n parser?: ParserProvider,\n globalConstantsProvider?: GlobalConstantsProvider,\n readProvider?: TzReadProvider,\n stream?: SubscribeProvider\n ) {\n if (typeof this._rpc === 'string') {\n this._rpcClient = new RpcClient(this._rpc);\n } else {\n this._rpcClient = this._rpc;\n }\n this._forger = forger ? forger : new TaquitoLocalForger(this);\n this._injector = injector ? injector : new RpcInjector(this);\n this.operationFactory = new OperationFactory(this);\n this._walletProvider = wallet ? wallet : new LegacyWalletProvider(this);\n this._parser = parser ? parser : new MichelCodecParser(this);\n this._packer = packer ? packer : new RpcPacker(this);\n this._globalConstantsProvider = globalConstantsProvider\n ? globalConstantsProvider\n : new NoopGlobalConstantsProvider();\n this._readProvider = readProvider ? readProvider : new RpcReadAdapter(this._rpcClient);\n this._stream = stream ? stream : new PollingSubscribeProvider(this);\n }\n\n get config(): ConfigConfirmation {\n return this._config.getValue();\n }\n\n set config(value: ConfigConfirmation) {\n this._config.next({\n ...value,\n });\n }\n\n setPartialConfig(value: Partial<ConfigConfirmation>) {\n this._config.next({\n ...this._config.getValue(),\n ...value,\n });\n }\n\n get rpc(): RpcClientInterface {\n return this._rpcClient;\n }\n\n set rpc(value: RpcClientInterface) {\n this._rpcClient = value;\n }\n\n get injector() {\n return this._injector;\n }\n\n set injector(value: Injector) {\n this._injector = value;\n }\n\n get forger() {\n return this._forger;\n }\n\n set forger(value: Forger) {\n this._forger = value;\n }\n\n get signer() {\n return this._signer;\n }\n\n set signer(value: Signer) {\n this._signer = value;\n }\n\n get walletProvider() {\n return this._walletProvider;\n }\n\n set walletProvider(value: WalletProvider) {\n this._walletProvider = value;\n }\n\n set proto(value: Protocols | undefined) {\n this._proto = value;\n }\n\n get proto() {\n return this._proto;\n }\n\n get parser() {\n return this._parser;\n }\n\n set parser(value: ParserProvider) {\n this._parser = value;\n }\n\n get packer() {\n return this._packer;\n }\n\n set packer(value: Packer) {\n this._packer = value;\n }\n\n get globalConstantsProvider() {\n return this._globalConstantsProvider;\n }\n\n set globalConstantsProvider(value: GlobalConstantsProvider) {\n this._globalConstantsProvider = value;\n }\n\n get readProvider() {\n return this._readProvider;\n }\n\n set readProvider(value: TzReadProvider) {\n this._readProvider = value;\n }\n\n get stream() {\n return this._stream;\n }\n\n set stream(value: SubscribeProvider) {\n this._stream = value;\n }\n\n async isAnyProtocolActive(protocol: string[] = []) {\n if (this._proto) {\n return protocol.includes(this._proto);\n } else {\n const next_protocol = await this.readProvider.getNextProtocol('head');\n return protocol.includes(next_protocol);\n }\n }\n\n isAnySignerConfigured() {\n return !(this.signer instanceof NoopSigner);\n }\n\n /**\n * @description Create a copy of the current context. Useful when you have long running operation and you do not want a context change to affect the operation\n */\n clone(): Context {\n return new Context(\n this.rpc,\n this.signer,\n this.proto,\n this._config,\n this.forger,\n this._injector,\n this.packer,\n this._walletProvider,\n this._parser,\n this._globalConstantsProvider,\n this._readProvider,\n this._stream\n );\n }\n\n /**\n * @description Allows extensions set on the TezosToolkit to inject logic into the context\n */\n registerProviderDecorator(fx: (context: Context) => Context) {\n this.providerDecorator.push(fx);\n }\n\n /**\n * @description Applies the decorators on a cloned instance of the context and returned this cloned instance.\n * The decorators are functions that inject logic into the context.\n * They are provided by the extensions set on the TezosToolkit by calling the registerProviderDecorator method.\n */\n withExtensions = (): Context => {\n let clonedContext = this.clone();\n this.providerDecorator.forEach((decorator) => {\n clonedContext = decorator(clonedContext);\n });\n\n return clonedContext;\n };\n}\n","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"commitHash\": \"e1b1d6976a564f925c01cf66e28df9acb0085c3d\",\n \"version\": \"17.3.1-beta-RC.0\"\n};\n","import { TaquitoError, TezosToolkitConfigError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates CompositeForger.forge() results doesn't match each other\n */\nexport class ForgingMismatchError extends TaquitoError {\n constructor(public readonly results: string[]) {\n super();\n this.name = 'ForgingMismatchError';\n this.message = `Forging mismatch error`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates no forger has been configured for CompositeForger\n */\nexport class UnspecifiedForgerError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'UnspecifiedForgerError';\n this.message =\n 'No forger has been configured. Please configure new CompositeForger([rpcForger, localForger]) with your TezosToolkit instance.';\n }\n}\n","import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nimport { UnspecifiedForgerError, ForgingMismatchError } from './errors';\n\nexport class CompositeForger implements Forger {\n constructor(private forgers: Forger[]) {\n if (forgers.length === 0) {\n throw new UnspecifiedForgerError();\n }\n }\n\n async forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n const results = await Promise.all(\n this.forgers.map((forger) => {\n return forger.forge({ branch, contents });\n })\n );\n\n if (results.length === 0) {\n throw new UnspecifiedForgerError();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let lastResult: string = results.pop()!; // Assumed to be more than one since we\n while (results.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const currentResult = results.pop()!;\n\n if (currentResult !== lastResult) {\n throw new ForgingMismatchError([lastResult, currentResult]);\n }\n lastResult = currentResult;\n }\n\n return lastResult;\n }\n}\n","import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nimport { Context } from '../context';\n\nexport class RpcForger implements Forger {\n constructor(private context: Context) {}\n\n forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n return this.context.rpc.forgeOperations({ branch, contents });\n }\n}\n","import { OriginateParams } from \"../operations/types\";\nimport { ParserProvider } from \"./interface\";\n\nexport class NoopParser implements ParserProvider {\n async prepareCodeOrigination(params: OriginateParams): Promise<OriginateParams> {\n return params;\n }\n}","import { Packer } from './interface';\nimport { packDataBytes, MichelsonData, MichelsonType } from '@taquito/michel-codec'\nimport { PackDataResponse, PackDataParams } from '@taquito/rpc';\n\nexport class MichelCodecPacker implements Packer {\n\n async packData(data: PackDataParams): Promise<PackDataResponse> {\n const { bytes } = packDataBytes(data.data as MichelsonData, data.type as MichelsonType);\n return { packed: bytes }\n }\n}\n","import { GlobalConstantHashAndValue } from '@taquito/michel-codec';\nimport { GlobalConstantNotFound } from './errors';\nimport { GlobalConstantHash, GlobalConstantsProvider } from './interface-global-constants-provider';\n\nexport class DefaultGlobalConstantsProvider implements GlobalConstantsProvider {\n private _globalConstantsLibrary: GlobalConstantHashAndValue = {};\n\n /**\n *\n * @description Allows to load global constant hashes and their corresponding Michelson JSON values\n */\n loadGlobalConstant(globalConstant: GlobalConstantHashAndValue) {\n for (const hash in globalConstant) {\n Object.assign(this._globalConstantsLibrary, {\n [hash]: globalConstant[hash],\n });\n }\n }\n\n /**\n *\n * @description Retrieve the Michelson value of a global constant based on its hash\n *\n * @param hash a string representing the global constant hash\n * @returns Expr, the JSON Michelson value\n */\n async getGlobalConstantByHash(hash: GlobalConstantHash) {\n const value = this._globalConstantsLibrary[hash];\n if (!value) {\n throw new GlobalConstantNotFound(hash);\n }\n return value;\n }\n}\n","/**\n * @packageDocumentation\n * @module @taquito/taquito\n */\n\nimport { RpcClient, RpcClientInterface } from '@taquito/rpc';\nimport { Forger } from '@taquito/local-forging';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\nimport { Protocols } from './constants';\nimport { ConfigConfirmation, Context, TaquitoProvider } from './context';\nimport { ContractProvider } from './contract/interface';\nimport { Extension } from './extension/extension';\nimport { format } from '@taquito/utils';\nimport { GlobalConstantsProvider } from './global-constants/interface-global-constants-provider';\nimport { NoopGlobalConstantsProvider } from './global-constants/noop-global-constants-provider';\nimport { Packer } from './packer/interface';\nimport { RpcPacker } from './packer/rpc-packer';\nimport { TzReadProvider } from './read-provider/interface';\nimport { RpcReadAdapter } from './read-provider/rpc-read-adapter';\nimport { PreparationProvider } from './prepare/interface';\nimport { Signer } from './signer/interface';\nimport { NoopSigner } from './signer/noop';\nimport { SubscribeProvider } from './subscribe/interface';\nimport { PollingSubscribeProvider } from './subscribe/polling-subcribe-provider';\nimport { TzProvider } from './tz/interface';\nimport { VERSION } from './version';\nimport { LegacyWalletProvider, Wallet, WalletProvider } from './wallet';\nimport { OperationFactory } from './wallet/operation-factory';\nimport { TaquitoLocalForger } from './forger/taquito-local-forger';\nimport { EstimationProvider } from './estimate/estimate-provider-interface';\nimport { ParserProvider } from './parser/interface';\nimport { MichelCodecParser } from './parser/michel-codec-parser';\nimport { Injector } from './injector/interface';\nimport { RpcInjector } from './injector/rpc-injector';\n\nexport { MichelsonMap, UnitValue } from '@taquito/michelson-encoder';\nexport { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nexport * from './constants';\nexport * from './context';\nexport { TaquitoProvider } from './context';\nexport * from './contract';\nexport * from './contract/big-map';\nexport { CompositeForger } from './forger/composite-forger';\nexport { RpcForger } from './forger/rpc-forger';\nexport * from './operations';\nexport { OperationBatch } from './batch/rpc-batch-provider';\nexport * from './signer/interface';\nexport * from './subscribe/interface';\nexport { SubscribeProvider } from './subscribe/interface';\nexport { PollingSubscribeProvider } from './subscribe/polling-subcribe-provider';\nexport { ObservableSubscription } from './subscribe/observable-subscription';\nexport * from './tz/interface';\nexport * from './wallet';\nexport { Extension } from './extension/extension';\nexport * from './injector/interface';\nexport * from './injector/rpc-injector';\nexport * from './parser/interface';\nexport * from './parser/michel-codec-parser';\nexport * from './parser/noop-parser';\nexport * from './packer/interface';\nexport * from './packer/michel-codec-packer';\nexport * from './packer/rpc-packer';\nexport * from './global-constants/default-global-constants-provider';\nexport * from './global-constants/errors';\nexport * from './global-constants/interface-global-constants-provider';\nexport {\n BigMapQuery,\n SaplingStateQuery,\n BlockIdentifier,\n TzReadProvider,\n} from './read-provider/interface';\nexport { RpcReadAdapter } from './read-provider/rpc-read-adapter';\nexport * from './estimate';\nexport { TaquitoLocalForger } from './forger/taquito-local-forger';\nexport * from './prepare';\n\nexport interface SetProviderOptions {\n forger?: Forger;\n wallet?: WalletProvider;\n rpc?: string | RpcClientInterface;\n readProvider?: TzReadProvider;\n stream?: string | SubscribeProvider;\n signer?: Signer;\n protocol?: Protocols;\n config?: Partial<ConfigConfirmation>;\n packer?: Packer;\n globalConstantsProvider?: GlobalConstantsProvider;\n parserProvider?: ParserProvider;\n injectorProvider?: Injector;\n}\n\nexport interface VersionInfo {\n commitHash: string;\n version: string;\n}\n\n/**\n * @description Facade class that surfaces all of the libraries capability and allow it's configuration\n *\n * @param _rpc The RPC server to use\n */\nexport class TezosToolkit {\n private _options: SetProviderOptions = {};\n private _rpcClient: RpcClientInterface;\n private _wallet: Wallet;\n private _context: Context;\n /**\n * @deprecated TezosToolkit.batch has been deprecated in favor of TezosToolkit.contract.batch\n *\n */\n public batch: RPCBatchProvider['batch'];\n\n public readonly format = format;\n\n constructor(private _rpc: RpcClientInterface | string) {\n if (typeof this._rpc === 'string') {\n this._rpcClient = new RpcClient(this._rpc);\n } else {\n this._rpcClient = this._rpc;\n }\n this._context = new Context(_rpc);\n this._wallet = new Wallet(this._context);\n this.setProvider({ rpc: this._rpcClient });\n this.batch = this._context.batch.batch.bind(this._context.batch);\n }\n\n /**\n * @description Sets configuration on the Tezos Taquito instance. Allows user to choose which signer, rpc client, rpc url, forger and so forth\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setProvider({rpc: 'https://mainnet.ecadinfra.com/', signer: new InMemorySigner.fromSecretKey(“edsk...”)})\n * @example Tezos.setProvider({ config: { confirmationPollingTimeoutSecond: 300 }})\n *\n */\n\n setProvider({\n rpc,\n stream,\n signer,\n protocol,\n config,\n forger,\n wallet,\n packer,\n globalConstantsProvider,\n readProvider,\n parserProvider,\n injectorProvider,\n }: SetProviderOptions) {\n this.setRpcProvider(rpc);\n this.setStreamProvider(stream);\n this.setSignerProvider(signer);\n this.setForgerProvider(forger);\n this.setWalletProvider(wallet);\n this.setPackerProvider(packer);\n this.setGlobalConstantsProvider(globalConstantsProvider);\n this.setReadProvider(readProvider);\n this.setParserProvider(parserProvider);\n this.setInjectorProvider(injectorProvider);\n\n this._context.proto = protocol;\n if (config) {\n this._context.setPartialConfig(config);\n }\n }\n\n /**\n * @description Sets signer provider on the Tezos Taquito instance.\n *\n * @param options signer to use to interact with the Tezos network\n *\n * @example Tezos.setSignerProvider(new InMemorySigner.fromSecretKey('edsk...'))\n *\n */\n setSignerProvider(signer?: SetProviderOptions['signer']) {\n if (!this._options.signer && typeof signer === 'undefined') {\n this._context.signer = new NoopSigner();\n this._options.signer = signer;\n } else if (typeof signer !== 'undefined') {\n this._context.signer = signer;\n this._options.signer = signer;\n }\n }\n\n /**\n * @description Sets rpc provider on the Tezos Taquito instance\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setRpcProvider('https://mainnet.ecadinfra.com/')\n *\n */\n setRpcProvider(rpc?: SetProviderOptions['rpc']) {\n if (typeof rpc === 'string') {\n this._rpcClient = new RpcClient(rpc);\n } else if (rpc === undefined) {\n // do nothing, RPC is required in the constructor, do not override it\n } else {\n this._rpcClient = rpc;\n }\n this._options.rpc = this._rpcClient;\n this._context.rpc = this._rpcClient;\n }\n\n /**\n * @description Sets forger provider on the Tezos Taquito instance\n * The `LocalForger` from `@taquito/local-forging` is set by default.\n *\n * @param options forger to use to interact with the Tezos network\n *\n * @example Tezos.setForgerProvider(this.getFactory(RpcForger)())\n *\n */\n setForgerProvider(forger?: SetProviderOptions['forger']) {\n if (typeof forger !== 'undefined') {\n this._options.forger = forger;\n this._context.forger = forger;\n } else if (this._options.forger === undefined) {\n const f = this.getFactory(TaquitoLocalForger)();\n this._options.forger = f;\n this._context.forger = f;\n }\n }\n\n /**\n * @description Sets stream provider on the Tezos Taquito instance\n *\n * @param options stream to use to interact with the Tezos network\n *\n * @example Tezos.setStreamProvider(...)\n *\n */\n setStreamProvider(stream?: SetProviderOptions['stream']) {\n if (typeof stream === 'string') {\n const s = new PollingSubscribeProvider(new Context(new RpcClient(stream)));\n this._options.stream = s;\n this._context.stream = s;\n } else if (typeof stream !== 'undefined') {\n this._options.stream = stream;\n this._context.stream = stream;\n } else if (this._options.stream === undefined) {\n const s = this.getFactory(PollingSubscribeProvider)();\n this._options.stream = s;\n this._context.stream = s;\n }\n }\n\n /**\n * @description Sets wallet provider on the Tezos Taquito instance\n *\n * @param options wallet to use to interact with the Tezos network\n *\n * @example Tezos.setWalletProvider(...)\n *\n */\n setWalletProvider(wallet?: SetProviderOptions['wallet']) {\n if (!this._options.wallet && typeof wallet === 'undefined') {\n const w = this.getFactory(LegacyWalletProvider)();\n this._options.wallet = w;\n this._context.walletProvider = w;\n } else if (typeof wallet !== 'undefined') {\n this._options.wallet = wallet;\n this._context.walletProvider = wallet;\n }\n }\n\n /**\n * @description Sets Packer provider on the Tezos Taquito instance\n *\n * @param options packer to use to interact with the Tezos network\n *\n * @example Tezos.setPackerProvider(new MichelCodecPacker())\n *\n */\n setPackerProvider(packer?: SetProviderOptions['packer']) {\n if (!this._options.packer && typeof packer === 'undefined') {\n const p = this.getFactory(RpcPacker)();\n this._context.packer = p;\n this._options.packer = p;\n } else if (typeof packer !== 'undefined') {\n this._context.packer = packer;\n this._options.packer = packer;\n }\n }\n\n /**\n * @description Sets global constants provider on the Tezos Taquito instance\n *\n * @param options globalConstantsProvider to use to interact with the Tezos network\n *\n * @example\n * ```\n * const globalConst = new DefaultGlobalConstantsProvider();\n * globalConst.loadGlobalConstant({\n * \"expruu5BTdW7ajqJ9XPTF3kgcV78pRiaBW3Gq31mgp3WSYjjUBYxre\": { prim: \"int\" },\n * // ...\n * })\n * Tezos.setGlobalConstantsProvider(globalConst);\n * ```\n *\n */\n setGlobalConstantsProvider(\n globalConstantsProvider?: SetProviderOptions['globalConstantsProvider']\n ) {\n if (!this._options.globalConstantsProvider && typeof globalConstantsProvider === 'undefined') {\n const g = new NoopGlobalConstantsProvider();\n this._context.globalConstantsProvider = g;\n this._options.globalConstantsProvider = g;\n } else if (typeof globalConstantsProvider !== 'undefined') {\n this._context.globalConstantsProvider = globalConstantsProvider;\n this._options.globalConstantsProvider = globalConstantsProvider;\n }\n }\n\n /**\n * @description Sets read provider on the Tezos Taquito instance\n * By default reads are done from the RPC usign the RpcReadAdapter class, this can be overridden to read from an indexer that implements the TzReadProvider interface\n *\n * @param options TzReadProvider to use to interact with the Tezos network\n *\n */\n setReadProvider(readProvider?: SetProviderOptions['readProvider']) {\n const readP = readProvider ? readProvider : new RpcReadAdapter(this._context.rpc);\n this._options.readProvider = readP;\n this._context.readProvider = readP;\n }\n\n /**\n * @description Sets parser provider on the Tezos Taquito instance\n *\n * @param options parserProvider to use to interact with the Tezos network\n *\n */\n setParserProvider(parserProvider?: SetProviderOptions['parserProvider']) {\n if (!this._options.parserProvider && typeof parserProvider === 'undefined') {\n const p = new MichelCodecParser(this._context);\n this._context.parser = p;\n this._options.parserProvider = p;\n } else if (typeof parserProvider !== 'undefined') {\n this._context.parser = parserProvider;\n this._options.parserProvider = parserProvider;\n }\n }\n\n /**\n * @description Sets injector provider on the Tezos Taquito instance\n *\n * @param options Injector to use to interact with the Tezos network by default RpcInjector\n *\n */\n setInjectorProvider(injectorProvider?: SetProviderOptions['injectorProvider']) {\n if (!this._options.injectorProvider && typeof injectorProvider === 'undefined') {\n const i = new RpcInjector(this._context);\n this._context.injector = i;\n this._options.injectorProvider = i;\n } else if (typeof injectorProvider !== 'undefined') {\n this._context.injector = injectorProvider;\n this._options.injectorProvider = injectorProvider;\n }\n }\n\n /**\n * @description Provide access to tezos account management\n */\n get tz(): TzProvider {\n return this._context.tz;\n }\n\n /**\n * @description Provide access to smart contract utilities\n */\n get contract(): ContractProvider {\n return this._context.contract;\n }\n\n /**\n * @description Provide access to tezos operation preparation utilities\n */\n get prepare(): PreparationProvider {\n return this._context.prepare;\n }\n\n get wallet(): Wallet {\n return this._wallet;\n }\n\n get operation(): OperationFactory {\n return this._context.operationFactory;\n }\n\n /**\n * @description Provide access to operation estimation utilities\n */\n get estimate(): EstimationProvider {\n return this._context.estimate;\n }\n\n /**\n * @description Provide access to streaming utilities backed by an streamer implementation\n */\n get stream(): SubscribeProvider {\n return this._context.stream;\n }\n\n /**\n * @description Provide access to the currently used rpc client\n */\n get rpc(): RpcClientInterface {\n return this._context.rpc;\n }\n\n /**\n * @description Provide access to the currently used signer\n */\n get signer() {\n return this._context.signer;\n }\n\n /**\n * @description Provide access to the currently used globalConstantsProvider\n */\n get globalConstants() {\n return this._context.globalConstantsProvider;\n }\n\n /**\n * @description Allow to add a module to the TezosToolkit instance. This method adds the appropriate Providers(s) required by the module to the internal context.\n *\n * @param module extension to add to the TezosToolkit instance\n *\n * @example Tezos.addExtension(new Tzip16Module());\n */\n addExtension(module: Extension | Extension[]) {\n if (Array.isArray(module)) {\n module.forEach((extension) => extension.configureContext(this._context));\n } else {\n module.configureContext(this._context);\n }\n }\n\n getFactory<T, K extends Array<any>>(ctor: TaquitoProvider<T, K>) {\n return (...args: K) => {\n return new ctor(this._context, ...args);\n };\n }\n\n /**\n * @description Gets an object containing the version of Taquito library and git sha of the commit this library is compiled from\n */\n getVersionInfo(): VersionInfo {\n return VERSION;\n }\n}\n"],"names":["InvalidOperationKindError","InvalidKeyHashError","BigNumber"],"mappings":"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"}
1
+ {"version":3,"file":"taquito.es6.js","sources":["../src/injector/helper.ts","../src/injector/rpc-injector.ts","../src/signer/errors.ts","../src/signer/noop.ts","../src/subscribe/create-observable-from-subscription.ts","../src/constants.ts","../src/contract/errors.ts","../src/contract/prepare.ts","../src/operations/types.ts","../src/operations/errors.ts","../src/errors.ts","../src/operations/operations.ts","../src/operations/batch-operation.ts","../src/provider.ts","../src/wallet/wallet.ts","../src/wallet/receipt.ts","../src/wallet/errors.ts","../src/wallet/operation.ts","../src/wallet/transaction-operation.ts","../src/wallet/origination-operation.ts","../src/wallet/delegation-operation.ts","../src/wallet/legacy.ts","../src/contract/contract-methods/contract-method-object-param.ts","../src/contract/contract-methods/contract-method-flat-param.ts","../src/contract/contract-methods/contract-on-chain-view.ts","../src/contract/contract-methods/contract-method-factory.ts","../src/contract/contract.ts","../src/contract/manager-lambda.ts","../src/contract/view_lambda.ts","../src/contract/compose.ts","../src/contract/sapling-state-abstraction.ts","../src/prepare/prepare-provider.ts","../src/batch/rpc-batch-provider.ts","../src/wallet/batch-operation.ts","../src/wallet/increase-paid-storage-operation.ts","../src/wallet/operation-factory.ts","../src/tz/rpc-tz-provider.ts","../src/estimate/estimate.ts","../src/estimate/errors.ts","../src/estimate/rpc-estimate-provider.ts","../src/operations/delegate-operation.ts","../src/operations/origination-operation.ts","../src/operations/register-global-constant-operation.ts","../src/operations/reveal-operation.ts","../src/operations/transaction-operation.ts","../src/contract/big-map.ts","../src/contract/semantic.ts","../src/operations/ballot-operation.ts","../src/operations/drain-delegate-operation.ts","../src/operations/transfer-ticket-operation.ts","../src/operations/increase-paid-storage-operation.ts","../src/operations/proposals-operation.ts","../src/operations/update-consensus-key-operation.ts","../src/operations/smart-rollup-add-messages-operation.ts","../src/operations/smart-rollup-originate-operation.ts","../src/contract/rpc-contract-provider.ts","../src/parser/michel-codec-parser.ts","../src/packer/rpc-packer.ts","../src/global-constants/errors.ts","../src/global-constants/noop-global-constants-provider.ts","../src/read-provider/rpc-read-adapter.ts","../src/subscribe/errors.ts","../src/subscribe/filters.ts","../src/subscribe/observable-subscription.ts","../src/subscribe/polling-subcribe-provider.ts","../src/forger/taquito-local-forger.ts","../src/context.ts","../src/version.ts","../src/forger/errors.ts","../src/forger/composite-forger.ts","../src/forger/rpc-forger.ts","../src/parser/noop-parser.ts","../src/packer/michel-codec-packer.ts","../src/global-constants/default-global-constants-provider.ts","../src/taquito.ts"],"sourcesContent":["import { HttpResponseError } from '@taquito/http-utils';\n\nexport function formatErrorMessage(error: HttpResponseError, stringToReplace: string) {\n const body = JSON.parse(error.body);\n if (body[0] && body[0].kind && body[0].msg) {\n const newBody = JSON.stringify({\n kind: body[0].kind,\n id: body[0].id,\n msg: body[0].msg.replace(stringToReplace, ''),\n });\n return new HttpResponseError(\n `Http error response: (${error.status}) ${newBody}`,\n error.status,\n error.statusText,\n newBody,\n error.url\n );\n } else {\n return error;\n }\n}\n","import { Injector } from './interface';\nimport { Context } from '../context';\nimport { formatErrorMessage } from './helper';\nimport { HttpResponseError } from '@taquito/http-utils';\n\nexport class RpcInjector implements Injector {\n constructor(private context: Context) {}\n async inject(signedOperationBytes: string): Promise<string> {\n let hash: string;\n try {\n hash = await this.context.rpc.injectOperation(signedOperationBytes);\n } catch (error) {\n const stringToStrip =\n '. You may want to use --replace to provide adequate fee and replace it';\n if (error instanceof HttpResponseError && error.message.includes(stringToStrip)) {\n throw formatErrorMessage(error, stringToStrip);\n } else {\n throw error;\n }\n }\n return hash;\n }\n}\n","import { TezosToolkitConfigError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates no signer has been configured in the TezosToolkit instance\n */\nexport class UnconfiguredSignerError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'UnconfiguredSignerError';\n this.message =\n 'No signer has been configured. Please configure one by calling setProvider({signer}) on your TezosToolkit instance.';\n }\n}\n","import { Signer } from './interface';\nimport { UnconfiguredSignerError } from './errors';\n/**\n * @description Default signer implementation which does nothing and produce invalid signature\n * @throw {@link UnconfiguredSignerError}\n */\nexport class NoopSigner implements Signer {\n async publicKey(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async publicKeyHash(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async secretKey(): Promise<string> {\n throw new UnconfiguredSignerError();\n }\n async sign(_bytes: string, _watermark?: Uint8Array): Promise<any> {\n throw new UnconfiguredSignerError();\n }\n}\n","import { BlockResponse } from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { OperationContent, Subscription } from './interface';\n\nexport function createObservableFromSubscription<\n T extends BlockResponse | string | OperationContent\n>(sub: Subscription<T>) {\n return new Observable<T>((subscriber) => {\n sub.on('data', (data: T) => {\n subscriber.next(data);\n });\n\n sub.on('error', (error: Error) => {\n subscriber.error(error);\n });\n\n sub.on('close', () => {\n subscriber.complete();\n });\n\n return () => {\n sub.close();\n };\n });\n}\n","export enum DEFAULT_GAS_LIMIT {\n DELEGATION = 10600,\n ORIGINATION = 10600,\n TRANSFER = 10600,\n /* This is used for gas_limit. There is no harm in setting a higher limit. \n Only if an account has a balance that is very close to the total gas consumption, \n then this margin can fail the operation.\n Another benefit of this higher value is that then Dapps build with Taquito 17 can\n still work with Mumbainet, as this value is higher than the reveal cost in Mumbai.\n */\n REVEAL_TZ1 = 1000,\n REVEAL_TZ2 = 1000,\n REVEAL_TZ3 = 2000,\n REVEAL_TZ4 = 2000,\n}\nexport enum DEFAULT_FEE {\n DELEGATION = 1257,\n ORIGINATION = 10000,\n TRANSFER = 10000,\n REVEAL = 374,\n}\nexport enum DEFAULT_STORAGE_LIMIT {\n DELEGATION = 0,\n ORIGINATION = 257,\n TRANSFER = 257,\n REVEAL = 0,\n}\n\nexport const COST_PER_BYTE = 250;\n\nexport enum Protocols {\n Pt24m4xi = 'Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd',\n PsBABY5H = 'PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU',\n PsBabyM1 = 'PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS',\n PsCARTHA = 'PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb',\n PsDELPH1 = 'PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo',\n PtEdo2Zk = 'PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA',\n PsFLorena = 'PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i',\n PtGRANADs = 'PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV',\n PtHangz2 = 'PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx',\n PsiThaCa = 'PsiThaCaT47Zboaw71QWScM8sXeMM7bbQFncK9FLqYc6EKdpjVP',\n Psithaca2 = 'Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A',\n PtJakart2 = 'PtJakart2xVj7pYXJBXrqHgd82rdkLey5ZeeGwDgPp9rhQUbSqY',\n PtKathman = 'PtKathmankSpLLDALzWw7CGD2j2MtyveTwboEYokqUCP4a1LxMg',\n PtLimaPtL = 'PtLimaPtLMwfNinJi9rCfDPWea8dFgTZ1MeJ9f1m2SRic6ayiwW',\n PtMumbaii = 'PtMumbaiiFFEGbew1rRjzSPyzRbA51Tm3RVZL5suHPxSZYDhCEc',\n PtMumbai2 = 'PtMumbai2TmsJHNGRkD8v8YDbtao7BLUC3wjASn1inAKLFCjaH1',\n PtNairobi = 'PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf',\n ProtoALpha = 'ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK',\n}\n\nexport const protocols = {\n '004': [Protocols.Pt24m4xi],\n '005': [Protocols.PsBABY5H, Protocols.PsBabyM1],\n '006': [Protocols.PsCARTHA],\n '007': [Protocols.PsDELPH1],\n '008': [Protocols.PtEdo2Zk], // edonet v2\n '009': [Protocols.PsFLorena],\n '010': [Protocols.PtGRANADs],\n '011': [Protocols.PtHangz2], // hangzhou v2,\n '012': [Protocols.PsiThaCa, Protocols.Psithaca2],\n '013': [Protocols.PtJakart2],\n '014': [Protocols.PtKathman],\n '015': [Protocols.PtLimaPtL],\n '016': [Protocols.PtMumbai2], // mumbai v2\n '017': [Protocols.PtNairobi],\n '018': [Protocols.ProtoALpha],\n};\n\nexport enum ChainIds {\n MAINNET = 'NetXdQprcVkpaWU',\n CARTHAGENET = 'NetXjD3HPJJjmcd',\n DELPHINET = 'NetXm8tYqnMWky1',\n EDONET = 'NetXSgo1ZT2DRUG',\n FLORENCENET = 'NetXxkAx4woPLyu',\n GRANADANET = 'NetXz969SFaFn8k',\n HANGZHOUNET = 'NetXZSsxBpMQeAT',\n ITHACANET = 'NetXbhmtAbMukLc',\n ITHACANET2 = 'NetXnHfVqm9iesp',\n JAKARTANET2 = 'NetXLH1uAxK7CCh',\n KATHMANDUNET = 'NetXazhm4yetmff',\n LIMANET = 'NetXizpkH94bocH',\n MUMBAINET = 'NetXQw6nWSnrJ5t',\n MUMBAINET2 = 'NetXgbcrNtXD2yA',\n NAIROBINET = 'NetXyuzvDo2Ugzb',\n}\n\nexport const getRevealGasLimit = (address: string) =>\n Math.round((getRevealGasLimitInternal(address) * 11) / 10);\n\nconst getRevealGasLimitInternal = (address: string) => {\n switch (address.substring(0, 3)) {\n case 'tz1':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ1;\n case 'tz2':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ2;\n case 'tz3':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ3;\n case 'tz4':\n return DEFAULT_GAS_LIMIT.REVEAL_TZ4;\n default:\n throw new Error(`Cannot estimate reveal gas limit for ${address}`);\n }\n};\n","import { ParameterValidationError, RpcError } from '@taquito/core';\nimport { HttpResponseError } from '@taquito/http-utils';\nimport { MichelsonV1Expression } from '@taquito/rpc';\n\n/**\n * @category Error\n * @description Error that indicates invalid smart contract parameters being passed or used\n */\nexport class InvalidParameterError extends ParameterValidationError {\n constructor(\n public readonly smartContractMethodName: string,\n public readonly sigs: any[],\n public readonly invalidParams: any[]\n ) {\n super();\n this.name = 'InvalidParameterError';\n this.message = `${smartContractMethodName} Received ${\n invalidParams.length\n } arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid delegation source contract address being passed or used\n */\nexport class InvalidDelegationSource extends ParameterValidationError {\n constructor(public readonly source: string) {\n super();\n this.name = `InvalidDelegationSource`;\n this.message = `Since Babylon delegation source can no longer be a contract address ${source}. Please use the smart contract abstraction to set your delegate.`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid smart contract code parameter being passed or used\n */\nexport class InvalidCodeParameter extends ParameterValidationError {\n constructor(public readonly message: string, public readonly data: any) {\n super();\n this.name = 'InvalidCodeParameter';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates invalid smart contract init parameter being passed or used\n */\nexport class InvalidInitParameter extends ParameterValidationError {\n constructor(public readonly message: string, public readonly data: any) {\n super();\n this.name = 'InvalidInitParameter';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a failure when conducting a view simulation\n */\nexport class ViewSimulationError extends RpcError {\n constructor(\n public readonly message: string,\n public readonly viewName: string,\n public readonly failWith?: MichelsonV1Expression,\n public readonly cause?: any\n ) {\n super();\n this.name = 'ViewSimulationError';\n }\n}\n\nexport const validateAndExtractFailwith = (\n error: HttpResponseError\n): MichelsonV1Expression | undefined => {\n if (isJsonString(error.body)) {\n const parsedError = JSON.parse(error.body);\n if (Array.isArray(parsedError) && 'with' in parsedError[parsedError.length - 1]) {\n return parsedError[parsedError.length - 1].with;\n }\n }\n};\n\nconst isJsonString = (str: string) => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * @category Error\n * @description Error that indicates invalid or unconfigured context when executing a view\n */\nexport class InvalidViewSimulationContext extends ParameterValidationError {\n constructor(public readonly info: string) {\n super();\n this.name = 'InvalidViewSimulationContext';\n this.message = `${info} Please configure the context of the view execution in the executeView method.`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a mistake happening during the reveal operation\n */\nexport class RevealOperationError extends RpcError {\n constructor(public readonly message: string) {\n super();\n this.name = 'RevealOperationError';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a mistake in the parameters in the preparation of an Origination operation\n */\nexport class OriginationParameterError extends ParameterValidationError {\n constructor(public readonly message: string) {\n super();\n this.name;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid balance being passed or used\n */\nexport class InvalidBalanceError extends ParameterValidationError {\n constructor(public readonly message: string) {\n super();\n this.name = 'InvalidBalanceError';\n }\n}\n","import { Schema } from '@taquito/michelson-encoder';\nimport { OpKind, MichelsonV1Expression } from '@taquito/rpc';\nimport { Prim, Expr } from '@taquito/michel-codec';\nimport {\n OriginateParams,\n RPCOriginationOperation,\n TransferParams,\n RPCTransferOperation,\n DelegateParams,\n RPCDelegateOperation,\n RegisterDelegateParams,\n RPCRevealOperation,\n RevealParams,\n RegisterGlobalConstantParams,\n RPCRegisterGlobalConstantOperation,\n TransferTicketParams,\n RPCTransferTicketOperation,\n IncreasePaidStorageParams,\n RPCIncreasePaidStorageOperation,\n DrainDelegateParams,\n RPCDrainDelegateOperation,\n BallotParams,\n RPCBallotOperation,\n ProposalsParams,\n RPCProposalsOperation,\n UpdateConsensusKeyParams,\n RPCUpdateConsensusKeyOperation,\n SmartRollupAddMessagesParams,\n RPCSmartRollupAddMessagesOperation,\n RPCSmartRollupOriginateOperation,\n SmartRollupOriginateParamsWithProof,\n ActivationParams,\n RPCActivateOperation,\n} from '../operations/types';\nimport {\n DEFAULT_FEE,\n DEFAULT_GAS_LIMIT,\n DEFAULT_STORAGE_LIMIT,\n getRevealGasLimit,\n} from '../constants';\nimport { format } from '@taquito/utils';\nimport {\n InvalidCodeParameter,\n InvalidInitParameter,\n OriginationParameterError,\n InvalidBalanceError,\n} from './errors';\n\nexport const createActivationOperation = async ({ pkh, secret }: ActivationParams) => {\n return {\n kind: OpKind.ACTIVATION,\n pkh,\n secret,\n } as RPCActivateOperation;\n};\n\nexport const createOriginationOperation = async ({\n code,\n init,\n balance = '0',\n delegate,\n storage,\n fee = DEFAULT_FEE.ORIGINATION,\n gasLimit = DEFAULT_GAS_LIMIT.ORIGINATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.ORIGINATION,\n mutez = false,\n}: OriginateParams) => {\n if (storage !== undefined && init !== undefined) {\n throw new OriginationParameterError(\n 'Storage and Init cannot be set a the same time. Please either use storage or init but not both.'\n );\n }\n\n if (!Array.isArray(code)) {\n throw new InvalidCodeParameter('Wrong code parameter type, expected an array', code);\n }\n\n let contractStorage: Expr | undefined;\n if (storage !== undefined) {\n const storageType = (code as Expr[]).find(\n (p): p is Prim => 'prim' in p && p.prim === 'storage'\n );\n if (storageType?.args === undefined) {\n throw new InvalidCodeParameter('The storage section is missing from the script', code);\n }\n const schema = new Schema(storageType.args[0] as MichelsonV1Expression); // TODO\n contractStorage = schema.Encode(storage);\n } else if (init !== undefined && typeof init === 'object') {\n contractStorage = init as Expr;\n } else {\n throw new InvalidInitParameter('Wrong init parameter type, expected JSON Michelson', init);\n }\n\n const script = {\n code,\n storage: contractStorage,\n };\n\n if (isNaN(Number(balance))) {\n throw new InvalidBalanceError(`Invalid Balance \"${balance}\", cannot be converted to a number`);\n }\n\n const operation: RPCOriginationOperation = {\n kind: OpKind.ORIGINATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n balance: mutez ? balance.toString() : format('tz', 'mutez', balance).toString(),\n script,\n };\n\n if (delegate) {\n operation.delegate = delegate;\n }\n return operation;\n};\n\nexport const createTransferOperation = async ({\n to,\n amount,\n parameter,\n fee = DEFAULT_FEE.TRANSFER,\n gasLimit = DEFAULT_GAS_LIMIT.TRANSFER,\n storageLimit = DEFAULT_STORAGE_LIMIT.TRANSFER,\n mutez = false,\n}: TransferParams) => {\n const operation: RPCTransferOperation = {\n kind: OpKind.TRANSACTION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n amount: mutez ? amount.toString() : format('tz', 'mutez', amount).toString(),\n destination: to,\n parameters: parameter,\n };\n return operation;\n};\n\nexport const createSetDelegateOperation = async ({\n delegate,\n source,\n fee = DEFAULT_FEE.DELEGATION,\n gasLimit = DEFAULT_GAS_LIMIT.DELEGATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.DELEGATION,\n}: DelegateParams) => {\n const operation: RPCDelegateOperation = {\n kind: OpKind.DELEGATION,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n delegate,\n };\n return operation;\n};\n\nexport const createRegisterDelegateOperation = async (\n {\n fee = DEFAULT_FEE.DELEGATION,\n gasLimit = DEFAULT_GAS_LIMIT.DELEGATION,\n storageLimit = DEFAULT_STORAGE_LIMIT.DELEGATION,\n }: RegisterDelegateParams,\n source: string\n) => {\n return {\n kind: OpKind.DELEGATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n delegate: source,\n } as RPCDelegateOperation;\n};\n\nexport const createRevealOperation = async (\n {\n fee = DEFAULT_FEE.REVEAL,\n gasLimit = undefined,\n storageLimit = DEFAULT_STORAGE_LIMIT.REVEAL,\n }: RevealParams,\n source: string,\n publicKey: string\n) => {\n return {\n kind: OpKind.REVEAL,\n fee,\n public_key: publicKey,\n source,\n gas_limit: gasLimit ?? getRevealGasLimit(source),\n storage_limit: storageLimit,\n } as RPCRevealOperation;\n};\n\nexport const createRegisterGlobalConstantOperation = async ({\n value,\n source,\n fee,\n gasLimit,\n storageLimit,\n}: RegisterGlobalConstantParams) => {\n return {\n kind: OpKind.REGISTER_GLOBAL_CONSTANT,\n value,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n } as RPCRegisterGlobalConstantOperation;\n};\n\nexport const createTransferTicketOperation = async ({\n ticketContents,\n ticketTy,\n ticketTicketer,\n ticketAmount,\n destination,\n entrypoint,\n source,\n fee,\n gasLimit,\n storageLimit,\n}: TransferTicketParams) => {\n return {\n kind: OpKind.TRANSFER_TICKET,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n ticket_contents: ticketContents,\n ticket_ty: ticketTy,\n ticket_ticketer: ticketTicketer,\n ticket_amount: ticketAmount,\n destination,\n entrypoint,\n } as RPCTransferTicketOperation;\n};\n\nexport const createIncreasePaidStorageOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n amount,\n destination,\n}: IncreasePaidStorageParams) => {\n return {\n kind: OpKind.INCREASE_PAID_STORAGE,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n amount,\n destination,\n } as RPCIncreasePaidStorageOperation;\n};\n\nexport const createDrainDelegateOperation = async ({\n consensus_key,\n delegate,\n destination,\n}: DrainDelegateParams) => {\n return {\n kind: OpKind.DRAIN_DELEGATE,\n consensus_key,\n delegate,\n destination,\n } as RPCDrainDelegateOperation;\n};\n\nexport const createBallotOperation = async ({ source, proposal, ballot }: BallotParams) => {\n return {\n kind: OpKind.BALLOT,\n source,\n proposal,\n ballot,\n } as RPCBallotOperation;\n};\n\nexport const createProposalsOperation = async ({ source, proposals }: ProposalsParams) => {\n return {\n kind: OpKind.PROPOSALS,\n source,\n proposals,\n } as RPCProposalsOperation;\n};\n\nexport const createUpdateConsensusKeyOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n pk,\n}: UpdateConsensusKeyParams) => {\n return {\n kind: OpKind.UPDATE_CONSENSUS_KEY,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n pk,\n } as RPCUpdateConsensusKeyOperation;\n};\n\nexport const createSmartRollupAddMessagesOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n message,\n}: SmartRollupAddMessagesParams) => {\n return {\n kind: OpKind.SMART_ROLLUP_ADD_MESSAGES,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n message,\n } as RPCSmartRollupAddMessagesOperation;\n};\n\nexport const createSmartRollupOriginateOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n pvmKind,\n kernel,\n originationProof,\n parametersType,\n}: SmartRollupOriginateParamsWithProof) => {\n return {\n kind: OpKind.SMART_ROLLUP_ORIGINATE,\n source,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n pvm_kind: pvmKind,\n kernel,\n origination_proof: originationProof,\n parameters_ty: parametersType,\n } as RPCSmartRollupOriginateOperation;\n};\n","import {\n OperationObject,\n InternalOperationResultKindEnum,\n OpKind,\n TransactionOperationParameter,\n MichelsonV1Expression,\n BallotVote,\n PvmKind,\n} from '@taquito/rpc';\nimport { BlockIdentifier } from '../read-provider/interface';\n\nexport { OpKind } from '@taquito/rpc';\n\nexport type withKind<T, K extends OpKind> = T & { kind: K };\n\nexport type ParamsWithKind =\n | withKind<OriginateParams, OpKind.ORIGINATION>\n | withKind<DelegateParams, OpKind.DELEGATION>\n | withKind<TransferParams, OpKind.TRANSACTION>\n | withKind<ActivationParams, OpKind.ACTIVATION>\n | withKind<RegisterGlobalConstantParams, OpKind.REGISTER_GLOBAL_CONSTANT>\n | withKind<IncreasePaidStorageParams, OpKind.INCREASE_PAID_STORAGE>\n | withKind<TxRollupOriginateParams, OpKind.TX_ROLLUP_ORIGINATION>\n | withKind<TxRollupBatchParams, OpKind.TX_ROLLUP_SUBMIT_BATCH>\n | withKind<TransferTicketParams, OpKind.TRANSFER_TICKET>\n | withKind<UpdateConsensusKeyParams, OpKind.UPDATE_CONSENSUS_KEY>\n | withKind<SmartRollupAddMessagesParams, OpKind.SMART_ROLLUP_ADD_MESSAGES>\n | withKind<FailingNoopParams, OpKind.FAILING_NOOP>\n | withKind<SmartRollupOriginateParamsWithProof, OpKind.SMART_ROLLUP_ORIGINATE>;\n\nexport type ParamsWithKindExtended = ParamsWithKind | withKind<RevealParams, OpKind.REVEAL>;\n\nexport const attachKind = <T, K extends OpKind>(op: T, kind: K) => {\n return { ...op, kind } as withKind<T, K>;\n};\n\nexport const findWithKind = <T extends { kind: OpKind }, K extends OpKind>(\n arr: T[],\n kind: K\n): (T & { kind: K }) | undefined => {\n if (Array.isArray(arr)) {\n const found = arr.find((op) => op.kind === kind);\n\n if (found && isKind(found, kind)) {\n return found;\n }\n }\n};\n\nexport const isKind = <T extends { kind: OpKind }, K extends OpKind>(\n op: T,\n kind: K\n): op is withKind<T, K> => {\n return op.kind === kind;\n};\n\nexport type RPCOpWithFee =\n | RPCTransferOperation\n | RPCOriginationOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCRegisterGlobalConstantOperation\n | RPCIncreasePaidStorageOperation\n | RPCTxRollupOriginationOperation\n | RPCTxRollupBatchOperation\n | RPCTransferTicketOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCSmartRollupOriginateOperation;\n\nexport type RPCOpWithSource =\n | RPCTransferOperation\n | RPCOriginationOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCRegisterGlobalConstantOperation\n | RPCIncreasePaidStorageOperation\n | RPCTxRollupOriginationOperation\n | RPCTxRollupBatchOperation\n | RPCTransferTicketOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCSmartRollupOriginateOperation;\n\nexport const isOpWithFee = <T extends { kind: OpKind }>(\n op: T\n): op is withKind<T, Exclude<Exclude<OpKind, OpKind.ACTIVATION>, OpKind.FAILING_NOOP>> => {\n return (\n [\n 'transaction',\n 'delegation',\n 'origination',\n 'reveal',\n 'register_global_constant',\n 'increase_paid_storage',\n 'tx_rollup_origination',\n 'tx_rollup_submit_batch',\n 'transfer_ticket',\n 'update_consensus_key',\n 'smart_rollup_add_messages',\n 'smart_rollup_originate',\n ].indexOf(op.kind) !== -1\n );\n};\n\nexport const isOpRequireReveal = <T extends { kind: OpKind }>(\n op: T\n): op is withKind<T, Exclude<InternalOperationResultKindEnum, OpKind.REVEAL>> => {\n return (\n [\n 'transaction',\n 'delegation',\n 'origination',\n 'register_global_constant',\n 'increase_paid_storage',\n 'tx_rollup_origination',\n 'tx_rollup_submit_batch',\n 'transfer_ticket',\n 'update_consensus_key',\n 'smart_rollup_add_messages',\n 'smart_rollup_originate',\n ].indexOf(op.kind) !== -1\n );\n};\n\nexport type SourceKinds = InternalOperationResultKindEnum;\n\nexport const isSourceOp = <T extends { kind: OpKind }>(op: T): op is withKind<T, SourceKinds> => {\n return ['transaction', 'delegation', 'origination', 'reveal', 'ballot'].indexOf(op.kind) !== -1;\n};\n\nexport const hasMetadata = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: K;\n} => {\n return 'metadata' in op;\n};\n\nexport const hasMetadataWithResult = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: {\n operation_result: K;\n };\n} => {\n return hasMetadata<T, any>(op) && 'operation_result' in op.metadata;\n};\n\nexport const hasMetadataWithInternalOperationResult = <T extends { kind: OpKind }, K>(\n op: T\n): op is T & {\n metadata: {\n internal_operation_results?: K;\n };\n} => {\n return hasMetadata<T, any>(op) && 'internal_operation_results' in op.metadata;\n};\n\nexport interface GasConsumingOperation {\n consumedGas?: string;\n gasLimit: number;\n}\n\nexport interface StorageConsumingOperation {\n storageDiff?: string;\n storageSize?: string;\n storageLimit: number;\n}\n\nexport interface FeeConsumingOperation {\n fee: number;\n}\n\nexport type OriginateParamsBase = {\n balance?: string | number;\n code: string | object[];\n delegate?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n};\n\n/**\n * @description Parameters for originate method\n */\nexport type OriginateParams<TStorage = any> = OriginateParamsBase &\n (\n | {\n init?: never;\n /** JS representation of a storage object */\n storage: TStorage;\n }\n | {\n /** Initial storage object value. Either Micheline or JSON encoded */\n init: string | object;\n storage?: never;\n }\n );\n\nexport interface ActivationParams {\n pkh: string;\n secret: string;\n}\n\n/**\n * @description RPC origination operation\n */\nexport interface RPCOriginationOperation {\n kind: OpKind.ORIGINATION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n balance: string;\n delegate?: string;\n source?: string;\n script: {\n code: any;\n storage: any;\n };\n}\n\n/**\n * @description RPC reveal operation\n */\nexport interface RPCRevealOperation {\n kind: OpKind.REVEAL;\n fee: number;\n public_key: string;\n source?: string;\n gas_limit: number;\n storage_limit: number;\n}\n\nexport interface RevealParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Result of a forge operation contains the operation plus its encoded version\n */\nexport interface ForgedBytes {\n opbytes: string;\n opOb: OperationObject;\n counter: number;\n}\n\n/**\n * @description Parameters for setDelegate method\n */\nexport interface DelegateParams {\n source: string;\n delegate?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Parameters for registerDelegate method\n */\nexport interface RegisterDelegateParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description RPC delegation operation\n */\nexport interface RPCDelegateOperation {\n kind: OpKind.DELEGATION;\n source?: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n delegate?: string;\n}\n\n/**\n * @description Parameters for transfer method\n */\nexport interface TransferParams {\n to: string;\n source?: string;\n amount: number;\n fee?: number;\n parameter?: TransactionOperationParameter;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n}\n\n/**\n * @description RPC register global constant operation\n */\nexport interface RPCRegisterGlobalConstantOperation {\n kind: OpKind.REGISTER_GLOBAL_CONSTANT;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n source: string;\n value: MichelsonV1Expression;\n}\n\n/**\n * @description Parameters for the `registerGlobalConstant` method\n */\nexport interface RegisterGlobalConstantParams {\n value: MichelsonV1Expression;\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description RPC transfer operation\n */\nexport interface RPCTransferOperation {\n kind: OpKind.TRANSACTION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n amount: string;\n source?: string;\n destination: string;\n parameters?: TransactionOperationParameter;\n}\n\n/**\n * @description RPC activate account operation\n */\nexport interface RPCActivateOperation {\n kind: OpKind.ACTIVATION;\n pkh: string;\n secret: string;\n}\n\n/**\n * @description RPC tx rollup origination operation\n */\nexport interface RPCTxRollupOriginationOperation {\n kind: OpKind.TX_ROLLUP_ORIGINATION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n source: string;\n tx_rollup_origination: object;\n}\n\n/**\n * @description Parameters for the `txRollupOriginate` method\n */\nexport interface TxRollupOriginateParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n\n/**\n * @description Parameters for the `txRollupSubmitBatch` method\n */\nexport interface TxRollupBatchParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n rollup: string;\n content: string;\n}\n\n/**\n * @description RPC tx rollup batch operation\n */\nexport interface RPCTxRollupBatchOperation {\n kind: OpKind.TX_ROLLUP_SUBMIT_BATCH;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n source: string;\n rollup: string;\n content: string;\n}\n\n/**\n * @description Parameters for the transferTicket contract provider\n */\nexport interface TransferTicketParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n ticketContents: MichelsonV1Expression;\n ticketTy: MichelsonV1Expression;\n ticketTicketer: string;\n ticketAmount: number;\n destination: string;\n entrypoint: string;\n}\n\n/**\n * @description Rpc transfer-ticket operation\n */\nexport interface RPCTransferTicketOperation {\n kind: OpKind.TRANSFER_TICKET;\n source?: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n ticket_contents: MichelsonV1Expression;\n ticket_ty: MichelsonV1Expression;\n ticket_ticketer: string;\n ticket_amount: number;\n destination: string;\n entrypoint: string;\n}\n\n/**\n * @description Parameters for the increasePaidStorage method\n */\nexport interface IncreasePaidStorageParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n amount: number;\n destination: string;\n}\n\n/**\n * @description RPC IncreasePaidStorage operation\n */\nexport interface RPCIncreasePaidStorageOperation {\n kind: OpKind.INCREASE_PAID_STORAGE;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n amount: number;\n destination: string;\n}\n\n/**\n * @description Parameters for the DrainDelegate method\n */\nexport interface DrainDelegateParams {\n consensus_key: string;\n delegate: string;\n destination: string;\n}\n\n/**\n * @description RPC DrainDelegate operation\n */\nexport interface RPCDrainDelegateOperation {\n kind: OpKind.DRAIN_DELEGATE;\n consensus_key: string;\n delegate: string;\n destination: string;\n}\n\n/**\n * @description Ballot operation params\n */\nexport interface BallotParams {\n source?: string;\n proposal: string;\n ballot: BallotVote;\n}\n\nexport interface RPCBallotOperation {\n kind: OpKind.BALLOT;\n source: string;\n period: number;\n proposal: string;\n ballot: BallotVote;\n}\n\nexport interface ProposalsParams {\n source?: string;\n proposals: string[];\n}\n\nexport interface RPCProposalsOperation {\n kind: OpKind.PROPOSALS;\n source: string;\n period: number;\n proposals: string[];\n}\n\nexport interface UpdateConsensusKeyParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n pk: string;\n}\n\nexport interface RPCUpdateConsensusKeyOperation {\n kind: OpKind.UPDATE_CONSENSUS_KEY;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n pk: string;\n}\n\nexport interface RPCSmartRollupAddMessagesOperation {\n kind: OpKind.SMART_ROLLUP_ADD_MESSAGES;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n message: string[];\n}\n\nexport interface SmartRollupAddMessagesParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n message: string[];\n}\nexport interface SmartRollupOriginateParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n pvmKind: PvmKind;\n kernel: string;\n parametersType: MichelsonV1Expression;\n}\n\nexport interface SmartRollupOriginateParamsWithProof extends SmartRollupOriginateParams {\n originationProof: string;\n}\n\nexport interface RPCSmartRollupOriginateOperation {\n kind: OpKind.SMART_ROLLUP_ORIGINATE;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n pvm_kind: PvmKind;\n kernel: string;\n origination_proof: string;\n parameters_ty: MichelsonV1Expression;\n}\n\n/**\n * @description RPC failing noop operation\n */\nexport interface RPCFailingNoopOperation {\n kind: OpKind.FAILING_NOOP;\n arbitrary: string;\n}\n\n/**\n * @description Parameters for the `failingNoop` method\n */\nexport interface FailingNoopParams {\n arbitrary: string;\n basedOnBlock: BlockIdentifier;\n}\n\nexport type RPCOperation =\n | RPCOriginationOperation\n | RPCTransferOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCActivateOperation\n | RPCRegisterGlobalConstantOperation\n | RPCTransferTicketOperation\n | RPCIncreasePaidStorageOperation\n | RPCDrainDelegateOperation\n | RPCBallotOperation\n | RPCProposalsOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCFailingNoopOperation\n | RPCSmartRollupOriginateOperation;\n\nexport type PrepareOperationParams = {\n operation: RPCOperation | RPCOperation[];\n source?: string;\n};\n","import { ParameterValidationError, RpcError, TaquitoError } from '@taquito/core';\nimport {\n MichelsonV1ExpressionBase,\n OperationResult,\n OperationResultDelegation,\n OperationResultOrigination,\n OperationResultRegisterGlobalConstant,\n OperationResultReveal,\n OperationResultSmartRollupOriginate,\n OperationResultTransaction,\n OperationResultTransferTicket,\n OperationResultTxRollupOrigination,\n OperationResultTxRollupSubmitBatch,\n PreapplyResponse,\n TezosGenericOperationError,\n} from '@taquito/rpc';\nimport {\n hasMetadata,\n hasMetadataWithInternalOperationResult,\n hasMetadataWithResult,\n} from './types';\n\nexport interface TezosOperationErrorWithMessage extends TezosGenericOperationError {\n with: MichelsonV1ExpressionBase;\n}\n\nconst isErrorWithMessage = (error: any): error is TezosOperationErrorWithMessage => {\n return 'with' in error;\n};\n\n/**\n * @category Error\n * @description Generic tezos error that will be thrown when a mistake occurs when doing an operation; more details here https://tezos.gitlab.io/api/errors.html\n */\nexport class TezosOperationError extends RpcError {\n id: string;\n kind: string;\n\n constructor(\n public readonly errors: TezosGenericOperationError[],\n public readonly errorDetails?: string\n ) {\n super();\n this.name = 'TezosOperationError';\n // Last error is 'often' the one with more detail\n const lastError = errors[errors.length - 1];\n this.id = lastError.id;\n this.kind = lastError.kind;\n\n this.message = `(${this.kind}) ${this.id}`;\n\n if (isErrorWithMessage(lastError)) {\n if (lastError.with.string) {\n this.message = lastError.with.string;\n } else if (lastError.with.int) {\n this.message = lastError.with.int;\n } else {\n this.message = JSON.stringify(lastError.with);\n }\n }\n }\n}\n\n/**\n * @category Error\n * @description Tezos error that will be thrown when a mistake happens during the preapply stage\n */\nexport class TezosPreapplyFailureError extends Error {\n constructor(public readonly result: any) {\n super();\n this.name = 'TezosPreapplyFailureError';\n this.message = 'Preapply returned an unexpected result';\n }\n}\n\nexport type MergedOperationResult = OperationResultTransaction &\n OperationResultOrigination &\n OperationResultDelegation &\n OperationResultRegisterGlobalConstant &\n OperationResultTxRollupOrigination &\n OperationResultTxRollupSubmitBatch &\n OperationResultTransferTicket &\n Partial<OperationResultSmartRollupOriginate> &\n OperationResultReveal & {\n fee?: string;\n };\n\n// Flatten all operation content results and internal operation results into a single array\n// Some cases where we can have multiple operation results or internal operation results are:\n// - When an operation includes a reveal operation\n// - When an operation is made using the batch API\n// - Smart contract call can contains internal operation results when they call other smart contract internally or originate contracts\nexport const flattenOperationResult = (response: PreapplyResponse | PreapplyResponse[]) => {\n const results = Array.isArray(response) ? response : [response];\n\n const returnedResults: MergedOperationResult[] = [];\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n const content = results[i].contents[j];\n if (hasMetadataWithResult(content) && 'fee' in content) {\n returnedResults.push({\n fee: content.fee,\n ...content.metadata.operation_result,\n });\n\n if (Array.isArray(content.metadata.internal_operation_results)) {\n content.metadata.internal_operation_results.forEach((x) =>\n returnedResults.push(x.result)\n );\n }\n }\n }\n }\n\n return returnedResults;\n};\n\n/***\n * @description Flatten all error from preapply response (including internal error)\n */\nexport const flattenErrors = (\n response: PreapplyResponse | PreapplyResponse[],\n status = 'failed'\n) => {\n const results = Array.isArray(response) ? response : [response];\n\n let errors: TezosGenericOperationError[] = [];\n // Transaction that do not fail will be backtracked in case one failure occur\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n const content = results[i].contents[j];\n if (hasMetadata(content)) {\n if (\n hasMetadataWithResult(content) &&\n (content.metadata.operation_result as OperationResult).status === status\n ) {\n errors = errors.concat(\n (content.metadata.operation_result as OperationResult).errors || []\n );\n }\n if (\n hasMetadataWithInternalOperationResult(content) &&\n Array.isArray(content.metadata.internal_operation_results)\n ) {\n for (const internalResult of content.metadata.internal_operation_results) {\n if ('result' in internalResult && internalResult.result.status === status) {\n errors = errors.concat(internalResult.result.errors || []);\n }\n }\n }\n }\n }\n }\n\n return errors;\n};\n\n/**\n * @category Error\n * @description Error that indicates a general failure happening during an origination operation\n */\nexport class OriginationOperationError extends TaquitoError {\n constructor(public readonly message: string) {\n super();\n this.name = 'OriginationOperationError';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid estimate value being passed\n */\nexport class InvalidEstimateValueError extends ParameterValidationError {\n constructor(public readonly message: string) {\n super();\n this.name = 'InvalidEstimateValueError';\n }\n}\n","import { ParameterValidationError, RpcError, NetworkError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates invalid confirmation count has been passed or configured\n */\nexport class InvalidConfirmationCountError extends ParameterValidationError {\n constructor(public readonly invalidConfirmations: number) {\n super();\n this.name = 'InvalidConfirmationCountError';\n this.message = `Invalid confirmation count ${invalidConfirmations} expecting at least 1`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates that confirmation polling timed out\n */\nexport class ConfirmationTimeoutError extends NetworkError {\n constructor(public readonly message: string) {\n super();\n this.name = 'ConfirmationTimeoutError';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an error being returned from the RPC response\n */\nexport class RPCResponseError extends RpcError {\n constructor(public readonly message: string, public readonly cause?: any) {\n super();\n this.name = 'RPCResponseError';\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResult,\n OperationContentsAndResultReveal,\n OperationResult,\n} from '@taquito/rpc';\nimport { BehaviorSubject, defer, EMPTY, of, range, ReplaySubject, throwError } from 'rxjs';\nimport {\n catchError,\n concatMap,\n endWith,\n filter,\n first,\n map,\n shareReplay,\n switchMap,\n tap,\n timeout,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { ForgedBytes, hasMetadataWithResult } from './types';\nimport { validateOperation, ValidationResult } from '@taquito/utils';\nimport { createObservableFromSubscription } from '../subscribe/create-observable-from-subscription';\nimport { ConfirmationTimeoutError, InvalidConfirmationCountError } from '../errors';\nimport { InvalidOperationHashError } from '@taquito/core';\n\ninterface PollingConfig {\n timeout: number;\n interval: number;\n}\n\n/**\n * @description Utility class to interact with Tezos operations\n */\nexport class Operation {\n private _pollingConfig$ = new ReplaySubject<PollingConfig>(1);\n private lastHead: BlockResponse | undefined;\n\n private currentHead$ = this._pollingConfig$.pipe(\n switchMap((config) => {\n return new BehaviorSubject(config).pipe(\n timeout({\n each: config.timeout * 1000,\n with: () =>\n throwError(() => new ConfirmationTimeoutError(`Confirmation polling timed out`)),\n })\n );\n }),\n switchMap(() => {\n return defer(() =>\n createObservableFromSubscription(this.context.stream.subscribeBlock('head'))\n ).pipe(\n switchMap((newHead) => {\n const prevHead = this.lastHead?.header.level ?? newHead.header.level - 1;\n return range(prevHead + 1, newHead.header.level - prevHead - 1).pipe(\n concatMap((level) => this.context.readProvider.getBlock(level)),\n endWith(newHead)\n );\n }),\n tap((newHead) => (this.lastHead = newHead))\n );\n }),\n shareReplay({ refCount: true })\n );\n\n // Observable that emit once operation is seen in a block\n private confirmed$ = this.currentHead$.pipe(\n map((head) => {\n for (let i = 3; i >= 0; i--) {\n head.operations[i].forEach((op) => {\n if (op.hash === this.hash) {\n this._foundAt = head.header.level;\n }\n });\n }\n\n if (head.header.level - this._foundAt >= 0) {\n return this._foundAt;\n }\n }),\n filter((x) => x !== undefined),\n first(),\n shareReplay()\n );\n\n protected _foundAt = Number.POSITIVE_INFINITY;\n get includedInBlock() {\n return this._foundAt;\n }\n /**\n *\n * @param hash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n * @throws {@link InvalidOperationHashError}\n */\n constructor(\n public readonly hash: string,\n public readonly raw: ForgedBytes,\n public readonly results: OperationContentsAndResult[],\n protected readonly context: Context\n ) {\n if (validateOperation(this.hash) !== ValidationResult.VALID) {\n throw new InvalidOperationHashError(this.hash);\n }\n\n this.confirmed$\n .pipe(\n first(),\n catchError(() => {\n return of(EMPTY);\n })\n )\n .subscribe();\n }\n\n get revealOperation() {\n return (\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'reveal') as\n | OperationContentsAndResultReveal\n | undefined)\n );\n }\n\n public get revealStatus() {\n if (this.revealOperation) {\n return this.revealOperation.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n public get status() {\n return (\n this.results.map((result) => {\n if (hasMetadataWithResult(result)) {\n return (result.metadata.operation_result as OperationResult).status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n }\n\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n * @param timeout [180] Timeout\n */\n async confirmation(confirmations?: number, timeout?: number) {\n if (typeof confirmations !== 'undefined' && confirmations < 1) {\n throw new InvalidConfirmationCountError(confirmations);\n }\n\n const { defaultConfirmationCount, confirmationPollingTimeoutSecond } = this.context.config;\n this._pollingConfig$.next({\n timeout: timeout || confirmationPollingTimeoutSecond,\n } as Required<PollingConfig>);\n\n const conf = confirmations !== undefined ? confirmations : defaultConfirmationCount;\n\n return new Promise<number>((resolve, reject) => {\n this.confirmed$\n .pipe(\n switchMap(() => this.currentHead$),\n filter((head) => head.header.level - this._foundAt >= conf - 1),\n first()\n )\n .subscribe((_) => {\n resolve(this._foundAt + (conf - 1));\n }, reject);\n });\n }\n}\n","import {\n BatchOperationResult,\n OperationContents,\n OperationContentsAndResult,\n OperationContentsAndResultOrigination,\n} from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { BATCH_KINDS } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n hasMetadataWithResult,\n} from './types';\n\nexport class BatchOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContents[],\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n private sumProp(arr: any[], prop: string) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n public getOriginatedContractAddresses(): string[] {\n const originationOpResults = this.results.filter(\n (x) => x.kind === 'origination'\n ) as OperationContentsAndResultOrigination[];\n\n let addresses: string[] = [];\n for (const res of originationOpResults) {\n if (res.metadata.operation_result.originated_contracts) {\n addresses = [...addresses, ...res.metadata.operation_result.originated_contracts];\n }\n }\n\n return addresses;\n }\n\n public get status() {\n return (\n this.results\n .filter((result) => BATCH_KINDS.indexOf(result.kind) !== -1)\n .map((result) => {\n if (hasMetadataWithResult(result)) {\n const opResult = result.metadata.operation_result as BatchOperationResult;\n return opResult.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n }\n\n get fee() {\n return this.sumProp(this.params, 'fee');\n }\n\n get gasLimit() {\n return this.sumProp(this.params, 'gas_limit');\n }\n\n get storageLimit() {\n return this.sumProp(this.params, 'storage_limit');\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return new BigNumber(this.consumedMilliGas).dividedBy(1000).toString();\n }\n\n get consumedMilliGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.results }), 'consumed_milligas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.results }), 'paid_storage_size_diff')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.results });\n }\n}\n","import {\n OperationContentsAndResult,\n RPCRunOperationParam,\n RPCSimulateOperationParam,\n RpcClientInterface,\n} from '@taquito/rpc';\nimport { Context } from './context';\nimport { ForgedBytes, ParamsWithKind, RPCOperation, isOpRequireReveal } from './operations/types';\nimport {\n InvalidEstimateValueError,\n TezosOperationError,\n TezosPreapplyFailureError,\n flattenErrors,\n} from './operations/errors';\nimport {\n createOriginationOperation,\n createRegisterGlobalConstantOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from './contract/prepare';\nimport { OpKind } from '@taquito/rpc';\nimport { InvalidOperationKindError } from '@taquito/utils';\nimport { PreparedOperation } from './prepare';\nimport { Estimate } from './estimate';\n\nexport abstract class Provider {\n get rpc(): RpcClientInterface {\n return this.context.rpc;\n }\n\n get signer() {\n return this.context.signer;\n }\n\n constructor(protected context: Context) {}\n\n protected async forge({ opOb: { branch, contents, protocol }, counter }: PreparedOperation) {\n const forgedBytes = await this.context.forger.forge({ branch, contents });\n return {\n opbytes: forgedBytes,\n opOb: {\n branch,\n contents,\n protocol,\n },\n counter,\n };\n }\n\n protected async estimate<T extends { fee?: number; gasLimit?: number; storageLimit?: number }>(\n { fee, gasLimit, storageLimit, ...rest }: T,\n estimator: (param: T) => Promise<Estimate>\n ) {\n let calculatedFee = fee;\n let calculatedGas = gasLimit;\n let calculatedStorage = storageLimit;\n\n if (calculatedFee && calculatedFee % 1 !== 0) {\n throw new InvalidEstimateValueError(`Fee value must not be a decimal: ${calculatedFee}`);\n }\n if (calculatedGas && calculatedGas % 1 !== 0) {\n throw new InvalidEstimateValueError(\n `Gas Limit value must not be a decimal: ${calculatedGas}`\n );\n }\n if (calculatedStorage && calculatedStorage % 1 !== 0) {\n throw new InvalidEstimateValueError(\n `Storage Limit value must not be a decimal: ${calculatedStorage}`\n );\n }\n\n if (fee === undefined || gasLimit === undefined || storageLimit === undefined) {\n const estimation = await estimator({ fee, gasLimit, storageLimit, ...(rest as any) });\n calculatedFee ??= estimation.suggestedFeeMutez;\n calculatedGas ??= estimation.gasLimit;\n calculatedStorage ??= estimation.storageLimit;\n }\n\n return {\n fee: calculatedFee,\n gasLimit: calculatedGas,\n storageLimit: calculatedStorage,\n };\n }\n\n async getRPCOp(param: ParamsWithKind) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n return createTransferOperation({\n ...param,\n });\n case OpKind.ORIGINATION:\n return createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n })\n );\n case OpKind.DELEGATION:\n return createSetDelegateOperation({\n ...param,\n });\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n return createRegisterGlobalConstantOperation({\n ...param,\n });\n case OpKind.INCREASE_PAID_STORAGE:\n return createIncreasePaidStorageOperation({\n ...param,\n });\n case OpKind.TRANSFER_TICKET:\n return createTransferTicketOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n return createSmartRollupAddMessagesOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return createSmartRollupOriginateOperation({\n ...param,\n });\n default:\n throw new InvalidOperationKindError((param as any).kind);\n }\n }\n\n protected async runOperation(op: RPCRunOperationParam) {\n return {\n opResponse: await this.rpc.runOperation(op),\n op,\n context: this.context.clone(),\n };\n }\n\n protected async simulate(op: RPCSimulateOperationParam) {\n return {\n opResponse: await this.rpc.simulateOperation(op),\n op,\n context: this.context.clone(),\n };\n }\n\n protected async isRevealOpNeeded(op: RPCOperation[] | ParamsWithKind[], pkh: string) {\n return !(await this.isAccountRevealRequired(pkh)) || !this.isRevealRequiredForOpType(op)\n ? false\n : true;\n }\n\n protected async isAccountRevealRequired(publicKeyHash: string) {\n return !(await this.context.readProvider.isAccountRevealed(publicKeyHash, 'head'));\n }\n\n protected isRevealRequiredForOpType(op: RPCOperation[] | ParamsWithKind[]) {\n let opRequireReveal = false;\n for (const operation of op) {\n if (isOpRequireReveal(operation)) {\n opRequireReveal = true;\n }\n }\n return opRequireReveal;\n }\n\n protected async signAndInject(forgedBytes: ForgedBytes) {\n const signed = await this.signer.sign(forgedBytes.opbytes, new Uint8Array([3]));\n forgedBytes.opbytes = signed.sbytes;\n forgedBytes.opOb.signature = signed.prefixSig;\n\n const opResponse: OperationContentsAndResult[] = [];\n const results = await this.rpc.preapplyOperations([forgedBytes.opOb]);\n\n if (!Array.isArray(results)) {\n throw new TezosPreapplyFailureError(results);\n }\n\n for (let i = 0; i < results.length; i++) {\n for (let j = 0; j < results[i].contents.length; j++) {\n opResponse.push(results[i].contents[j]);\n }\n }\n\n const errors = flattenErrors(results);\n\n if (errors.length) {\n throw new TezosOperationError(\n errors,\n 'Error occurred during validation simulation of operation'\n );\n }\n\n return {\n hash: await this.context.injector.inject(forgedBytes.opbytes),\n forgedBytes,\n opResponse,\n context: this.context.clone(),\n };\n }\n}\n","import { Context } from '../context';\nimport {\n ContractAbstraction,\n ContractStorageType,\n DefaultWalletType,\n SendParams,\n} from '../contract';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { OpKind, withKind } from '../operations/types';\nimport { OriginationWalletOperation } from './origination-operation';\nimport {\n WalletDelegateParams,\n WalletFailingNoopParams,\n WalletIncreasePaidStorageParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\nimport {\n InvalidAddressError,\n InvalidContractAddressError,\n InvalidOperationKindError,\n} from '@taquito/core';\nimport {\n validateAddress,\n validateContractAddress,\n ValidationResult,\n invalidDetail,\n} from '@taquito/utils';\nimport { OperationContentsFailingNoop } from '@taquito/rpc';\n\nexport interface PKHOption {\n forceRefetch?: boolean;\n}\n\nexport type WalletParamsWithKind =\n | withKind<WalletTransferParams, OpKind.TRANSACTION>\n | withKind<WalletOriginateParams, OpKind.ORIGINATION>\n | withKind<WalletDelegateParams, OpKind.DELEGATION>\n | withKind<WalletIncreasePaidStorageParams, OpKind.INCREASE_PAID_STORAGE>;\n\nexport class WalletOperationBatch {\n private operations: WalletParamsWithKind[] = [];\n\n constructor(private walletProvider: WalletProvider, private context: Context) {}\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: WalletTransferParams) {\n const toValidation = validateAddress(params.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n this.operations.push({ kind: OpKind.TRANSACTION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a contract call to the batch\n *\n * @param params Call a contract method\n * @param options Generic operation parameters\n */\n withContractCall(\n params: ContractMethod<Wallet> | ContractMethodObject<Wallet>,\n options: Partial<SendParams> = {}\n ) {\n return this.withTransfer(params.toTransferParams(options));\n }\n\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: WalletDelegateParams) {\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n this.operations.push({ kind: OpKind.DELEGATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination<TWallet extends DefaultWalletType = DefaultWalletType>(\n params: WalletOriginateParams<ContractStorageType<TWallet>>\n ) {\n this.operations.push({ kind: OpKind.ORIGINATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an IncreasePaidStorage operation to the batch\n *\n * @param param IncreasePaidStorage operation parameter\n */\n withIncreasePaidStorage(params: WalletIncreasePaidStorageParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n this.operations.push({ kind: OpKind.INCREASE_PAID_STORAGE, ...params });\n return this;\n }\n\n private async mapOperation(param: WalletParamsWithKind) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n return this.walletProvider.mapTransferParamsToWalletParams(async () => param);\n case OpKind.ORIGINATION:\n return this.walletProvider.mapOriginateParamsToWalletParams(async () =>\n this.context.parser.prepareCodeOrigination({\n ...param,\n })\n );\n case OpKind.DELEGATION:\n return this.walletProvider.mapDelegateParamsToWalletParams(async () => param);\n case OpKind.INCREASE_PAID_STORAGE:\n return this.walletProvider.mapIncreasePaidStorageWalletParams(async () => param);\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n * @throws {@link InvalidOperationKindError}\n */\n with(params: WalletParamsWithKind[]) {\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n this.withTransfer(param);\n break;\n case OpKind.ORIGINATION:\n this.withOrigination(param);\n break;\n case OpKind.DELEGATION:\n this.withDelegation(param);\n break;\n case OpKind.INCREASE_PAID_STORAGE:\n this.withIncreasePaidStorage(param);\n break;\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n return this;\n }\n\n /**\n *\n * @description Submit batch operation to wallet\n *\n */\n async send() {\n const ops: WalletParamsWithKind[] = [];\n\n for (const op of this.operations) {\n ops.push(await this.mapOperation(op));\n }\n\n const opHash = await this.walletProvider.sendOperations(ops);\n\n return this.context.operationFactory.createBatchOperation(opHash);\n }\n}\n\nexport class Wallet {\n constructor(private context: Context) {}\n\n private get walletProvider() {\n return this.context.walletProvider;\n }\n\n private _pkh?: string;\n\n /**\n * @description Retrieve the PKH of the account that is currently in use by the wallet\n *\n * @param option Option to use while fetching the PKH.\n * If forceRefetch is specified the wallet provider implementation will refetch the PKH from the wallet\n */\n async pkh({ forceRefetch }: PKHOption = {}) {\n if (!this._pkh || forceRefetch) {\n this._pkh = await this.walletProvider.getPKH();\n }\n\n return this._pkh;\n }\n\n private walletCommand = <T>(send: () => Promise<T>) => {\n return {\n send,\n };\n };\n\n /**\n *\n * @description Originate a new contract according to the script in parameters.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param originateParams Originate operation parameter\n */\n originate<TWallet extends DefaultWalletType = DefaultWalletType>(\n params: WalletOriginateParams<ContractStorageType<TWallet>>\n ): { send: () => Promise<OriginationWalletOperation<TWallet>> } {\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapOriginateParamsToWalletParams(() =>\n this.context.parser.prepareCodeOrigination({\n ...(params as WalletOriginateParams),\n })\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createOriginationOperation(opHash) as Promise<\n OriginationWalletOperation<TWallet>\n >;\n });\n }\n\n /**\n *\n * @description Set the delegate for a contract.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param delegateParams operation parameter\n */\n setDelegate(params: WalletDelegateParams) {\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapDelegateParamsToWalletParams(\n async () => params\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createDelegationOperation(opHash);\n });\n }\n\n /**\n *\n * @description failing_noop operation that is guaranteed to fail. DISCLAIMER: Not all wallets support signing failing_noop operations.\n *\n * @returns Signature for a failing_noop\n *\n * @param params operation parameter\n */\n async signFailingNoop(params: WalletFailingNoopParams) {\n const op: OperationContentsFailingNoop = {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n };\n const hash = await this.context.readProvider.getBlockHash(params.basedOnBlock);\n const forgedBytes = await this.context.forger.forge({\n branch: hash,\n contents: [op],\n });\n const signature = await this.walletProvider.sign(forgedBytes, Uint8Array.from([3]));\n return {\n signature,\n bytes: forgedBytes,\n signedContent: {\n branch: hash,\n contents: [\n {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n },\n ],\n },\n };\n }\n\n /**\n *\n * @description Register the current address as delegate.\n *\n * @returns An operation handle with the result from the rpc node\n *\n */\n registerDelegate() {\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapDelegateParamsToWalletParams(async () => {\n const delegate = await this.pkh();\n return { delegate };\n });\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createDelegationOperation(opHash);\n });\n }\n\n /**\n *\n * @description Transfer tezos tokens from current address to a specific address or call a smart contract.\n *\n * @returns A wallet command from which we can send the operation to the wallet\n *\n * @param params operation parameter\n */\n transfer(params: WalletTransferParams) {\n const toValidation = validateAddress(params.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapTransferParamsToWalletParams(\n async () => params\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createTransactionOperation(opHash);\n });\n }\n\n /**\n *\n * @description\n *\n * @returns\n *\n * @param params\n */\n increasePaidStorage(params: WalletIncreasePaidStorageParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n return this.walletCommand(async () => {\n const mappedParams = await this.walletProvider.mapIncreasePaidStorageWalletParams(\n async () => params\n );\n const opHash = await this.walletProvider.sendOperations([mappedParams]);\n return this.context.operationFactory.createIncreasePaidStorageOperation(opHash);\n });\n }\n\n /**\n *\n * @description Create a batch of operation\n *\n * @returns A batch object from which we can add more operation or send a command to the wallet to execute the batch\n *\n * @param params List of operation to initialize the batch with\n */\n batch(params?: Parameters<WalletOperationBatch['with']>[0]) {\n const batch = new WalletOperationBatch(this.walletProvider, this.context);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n\n /**\n *\n * @description Create an smart contract abstraction for the address specified. Calling entrypoints with the returned\n * smart contract abstraction will leverage the wallet provider to make smart contract calls\n *\n * @param address Smart contract address\n * @throws {@link InvalidContractAddressError} If the contract address is not valid\n */\n async at<T extends ContractAbstraction<Wallet>>(\n address: string,\n contractAbstractionComposer: (abs: ContractAbstraction<Wallet>, context: Context) => T = (x) =>\n x as any\n ): Promise<T> {\n const addressValidation = validateContractAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address, invalidDetail(addressValidation));\n }\n const rpc = this.context.withExtensions().rpc;\n const readProvider = this.context.withExtensions().readProvider;\n const script = await readProvider.getScript(address, 'head');\n const entrypoints = await readProvider.getEntrypoints(address);\n const abs = new ContractAbstraction(\n address,\n script,\n this,\n this.context.contract,\n entrypoints,\n rpc,\n readProvider\n );\n return contractAbstractionComposer(abs, this.context);\n }\n\n getPK() {\n return this.walletProvider.getPK();\n }\n}\n","import { OperationContentsAndResult } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { COST_PER_BYTE } from '../constants';\nimport { flattenOperationResult } from '../operations/errors';\n\nexport interface Receipt {\n totalFee: BigNumber;\n totalGas: BigNumber;\n totalMilliGas: BigNumber;\n totalStorage: BigNumber;\n totalAllocationBurn: BigNumber;\n totalOriginationBurn: BigNumber;\n totalPaidStorageDiff: BigNumber;\n totalStorageBurn: BigNumber;\n}\n\nexport const receiptFromOperation = (\n op: OperationContentsAndResult[],\n { ALLOCATION_BURN, ORIGINATION_BURN } = {\n ALLOCATION_BURN: 257,\n ORIGINATION_BURN: 257,\n }\n): Receipt => {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n const operationResults = flattenOperationResult({ contents: op });\n let totalMilliGas = new BigNumber(0);\n let totalStorage = new BigNumber(0);\n let totalFee = new BigNumber(0);\n let totalOriginationBurn = new BigNumber(0);\n let totalAllocationBurn = new BigNumber(0);\n let totalPaidStorageDiff = new BigNumber(0);\n operationResults.forEach((result) => {\n totalFee = totalFee.plus(result.fee || 0);\n totalOriginationBurn = totalOriginationBurn.plus(\n Array.isArray(result.originated_contracts)\n ? result.originated_contracts.length * ORIGINATION_BURN\n : 0\n );\n totalAllocationBurn = totalAllocationBurn.plus(\n 'allocated_destination_contract' in result ? ALLOCATION_BURN : 0\n );\n totalMilliGas = totalMilliGas.plus(result.consumed_milligas || 0);\n totalPaidStorageDiff = totalPaidStorageDiff.plus(\n 'paid_storage_size_diff' in result ? Number(result.paid_storage_size_diff) || 0 : 0\n );\n });\n\n totalStorage = totalStorage\n .plus(totalAllocationBurn)\n .plus(totalOriginationBurn)\n .plus(totalPaidStorageDiff);\n\n return {\n totalFee,\n totalMilliGas,\n totalGas: totalMilliGas.dividedBy(1000),\n totalStorage,\n totalAllocationBurn,\n totalOriginationBurn,\n totalPaidStorageDiff,\n totalStorageBurn: new BigNumber(totalStorage.multipliedBy(COST_PER_BYTE)),\n };\n};\n","import { TezosToolkitConfigError, NetworkError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates undefined confirmation has not been specified or configured\n */\nexport class ConfirmationUndefinedError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'ConfirmationUndefinedError';\n this.message = 'Default confirmation count can not be undefined';\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a generic failure when trying to fetch an observable\n */\nexport class ObservableError extends NetworkError {\n constructor(public readonly message: string) {\n super();\n this.name = 'ObservableError';\n }\n}\n","import { BlockResponse, OperationContentsAndResult, OperationResultStatusEnum } from '@taquito/rpc';\nimport { combineLatest, from, Observable, of, range, ReplaySubject } from 'rxjs';\nimport {\n catchError,\n concatMap,\n distinctUntilChanged,\n endWith,\n filter,\n first,\n map,\n share,\n switchMap,\n takeWhile,\n tap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { Receipt, receiptFromOperation } from './receipt';\nimport { validateOperation, ValidationResult } from '@taquito/utils';\nimport { BlockIdentifier } from '../read-provider/interface';\nimport { InvalidConfirmationCountError } from '../errors';\nimport { ConfirmationUndefinedError, ObservableError } from './errors';\nimport { InvalidOperationHashError } from '@taquito/core';\n\nexport type OperationStatus = 'pending' | 'unknown' | OperationResultStatusEnum;\n\nconst MAX_BRANCH_ANCESTORS = 60;\n\n/**\n * @description WalletOperation allows to monitor operation inclusion on chains and surface information related to the operation\n */\nexport class WalletOperation {\n protected _operationResult = new ReplaySubject<OperationContentsAndResult[]>(1);\n protected _includedInBlock = new ReplaySubject<BlockResponse>(1);\n protected _included = false;\n\n private lastHead: BlockResponse | undefined;\n protected newHead$: Observable<BlockResponse> = this._newHead$.pipe(\n switchMap((newHead) => {\n const prevHead = this.lastHead?.header.level ?? newHead.header.level - 1;\n return range(prevHead + 1, newHead.header.level - prevHead - 1).pipe(\n concatMap((level) => this.context.readProvider.getBlock(level)),\n endWith(newHead)\n );\n }),\n tap((newHead) => (this.lastHead = newHead)),\n share({\n connector: () => new ReplaySubject(1),\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: false,\n })\n );\n\n // Observable that emit once operation is seen in a block\n private confirmed$ = this.newHead$.pipe(\n map((head) => {\n for (const opGroup of head.operations) {\n for (const op of opGroup) {\n if (op.hash === this.opHash) {\n this._included = true;\n this._includedInBlock.next(head);\n this._operationResult.next(op.contents as OperationContentsAndResult[]);\n\n // Return the block where the operation was found\n return head;\n }\n }\n }\n }),\n filter<BlockResponse | undefined, BlockResponse>((x): x is BlockResponse => {\n return typeof x !== 'undefined';\n }),\n first(),\n share({\n connector: () => new ReplaySubject(1),\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: false,\n })\n );\n\n async operationResults() {\n return this._operationResult.pipe(first()).toPromise();\n }\n\n /**\n * @description Receipt expose the total amount of tezos token burn and spent on fees\n * The promise returned by receipt will resolve only once the transaction is included\n */\n async receipt(): Promise<Receipt> {\n const results = await this.operationResults();\n if (!results) {\n throw new ObservableError('Unable to get operation results');\n }\n return receiptFromOperation(results);\n }\n\n /**\n *\n * @param opHash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n * @throws {InvalidOperationHashError}\n */\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n private _newHead$: Observable<BlockResponse>\n ) {\n if (validateOperation(this.opHash) !== ValidationResult.VALID) {\n throw new InvalidOperationHashError(this.opHash);\n }\n this.confirmed$\n .pipe(\n first(),\n catchError(() => of(undefined))\n )\n .subscribe();\n }\n\n async getCurrentConfirmation() {\n if (!this._included) {\n return 0;\n }\n\n return combineLatest([this._includedInBlock, from(this.context.readProvider.getBlock('head'))])\n .pipe(\n map(([foundAtBlock, head]) => {\n return head.header.level - foundAtBlock.header.level + 1;\n }),\n first()\n )\n .toPromise();\n }\n\n async isInCurrentBranch(tipBlockIdentifier: BlockIdentifier = 'head') {\n // By default it is assumed that the operation is in the current branch\n if (!this._included) {\n return true;\n }\n\n const tipBlockHeaderLevel = await this.context.readProvider.getBlockLevel(tipBlockIdentifier);\n const inclusionBlock = await this._includedInBlock.pipe(first()).toPromise();\n if (!inclusionBlock) {\n throw new ObservableError('Inclusion block is undefined');\n }\n const levelDiff = (tipBlockHeaderLevel - inclusionBlock.header.level) as number;\n\n // Block produced before the operation is included are assumed to be part of the current branch\n if (levelDiff <= 0) {\n return true;\n }\n\n const tipBlockLevel = Math.min(\n inclusionBlock.header.level + levelDiff,\n inclusionBlock.header.level + MAX_BRANCH_ANCESTORS\n );\n\n const blocks = new Set(await this.context.readProvider.getLiveBlocks(tipBlockLevel));\n return blocks.has(inclusionBlock.hash);\n }\n\n confirmationObservable(confirmations?: number) {\n if (typeof confirmations !== 'undefined' && confirmations < 1) {\n throw new InvalidConfirmationCountError(confirmations);\n }\n\n const { defaultConfirmationCount } = this.context.config;\n\n const conf = confirmations !== undefined ? confirmations : defaultConfirmationCount;\n\n if (conf === undefined) {\n throw new ConfirmationUndefinedError();\n }\n\n return combineLatest([this._includedInBlock, this.newHead$]).pipe(\n distinctUntilChanged(([, previousHead], [, newHead]) => {\n return previousHead.hash === newHead.hash;\n }),\n map(([foundAtBlock, head]) => {\n return {\n block: head,\n expectedConfirmation: conf,\n currentConfirmation: head.header.level - foundAtBlock.header.level + 1,\n completed: head.header.level - foundAtBlock.header.level >= conf - 1,\n isInCurrentBranch: () => this.isInCurrentBranch(head.hash as BlockIdentifier),\n };\n }),\n takeWhile(({ completed }) => !completed, true)\n );\n }\n\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n */\n confirmation(confirmations?: number) {\n return this.confirmationObservable(confirmations).toPromise();\n }\n}\n","import { WalletOperation, OperationStatus } from './operation';\nimport { Context } from '../context';\nimport { Observable } from 'rxjs';\nimport {\n BlockResponse,\n OpKind,\n OperationContentsAndResultReveal,\n OperationContentsAndResultTransaction,\n} from '@taquito/rpc';\nimport { ObservableError } from './errors';\n\nexport class TransactionWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('operationResult returned undefined');\n }\n\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async transactionOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('operationResult returned undefined');\n }\n return operationResult.find((x) => x.kind === OpKind.TRANSACTION) as\n | OperationContentsAndResultTransaction\n | undefined;\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.transactionOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResultOrigination,\n OperationContentsAndResultReveal,\n OpKind,\n} from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { DefaultWalletType } from '../contract/contract';\nimport { findWithKind } from '../operations/types';\nimport { WalletOperation, OperationStatus } from './operation';\nimport { ObservableError } from './errors';\n\nexport class OriginationWalletOperation<\n TWallet extends DefaultWalletType = DefaultWalletType\n> extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async originationOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return findWithKind(operationResult, OpKind.ORIGINATION) as\n | OperationContentsAndResultOrigination\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return findWithKind(operationResult, OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.originationOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n\n public async contract() {\n const op = await this.originationOperation();\n const address = (op?.metadata.operation_result.originated_contracts || [])[0];\n return this.context.wallet.at<TWallet>(address);\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResultDelegation,\n OperationContentsAndResultReveal,\n OpKind,\n} from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { WalletOperation, OperationStatus } from './operation';\nimport { ObservableError } from './errors';\n\nexport class DelegationWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async delegationOperation() {\n const operationResult = await this.operationResults();\n if (operationResult) {\n return operationResult.find((x) => x.kind === OpKind.DELEGATION) as\n | OperationContentsAndResultDelegation\n | undefined;\n } else {\n throw new ObservableError('Unable to fetch operation result');\n }\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.delegationOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import { Context } from '../context';\nimport { attachKind, OpKind } from '../operations/types';\nimport {\n WalletDelegateParams,\n WalletIncreasePaidStorageParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\nimport { WalletParamsWithKind } from './wallet';\n\nexport class LegacyWalletProvider implements WalletProvider {\n constructor(private context: Context) {}\n\n async getPKH(): Promise<string> {\n return this.context.signer.publicKeyHash();\n }\n\n async mapTransferParamsToWalletParams(params: () => Promise<WalletTransferParams>) {\n return attachKind(await params(), OpKind.TRANSACTION);\n }\n\n async mapOriginateParamsToWalletParams(params: () => Promise<WalletOriginateParams>) {\n return attachKind(await params(), OpKind.ORIGINATION);\n }\n\n async mapDelegateParamsToWalletParams(params: () => Promise<WalletDelegateParams>) {\n return attachKind(await params(), OpKind.DELEGATION);\n }\n\n async mapIncreasePaidStorageWalletParams(params: () => Promise<WalletIncreasePaidStorageParams>) {\n return attachKind(await params(), OpKind.INCREASE_PAID_STORAGE);\n }\n\n async sendOperations(params: WalletParamsWithKind[]) {\n const op = await this.context.batch.batch(params as any).send();\n return op.hash;\n }\n\n async sign(bytes: string, watermark?: Uint8Array) {\n const { prefixSig } = await this.context.signer.sign(bytes, watermark);\n return prefixSig;\n }\n\n getPK() {\n return this.context.signer.publicKey();\n }\n}\n","import { TransactionOperation } from '../../operations/transaction-operation';\nimport { TransferParams } from '../../operations/types';\nimport { ContractProvider } from '../interface';\nimport { TransactionWalletOperation, Wallet } from '../../wallet';\nimport { ParameterSchema } from \"@taquito/michelson-encoder\";\nimport { ContractMethodInterface, ExplicitTransferParams, SendParams } from './contract-method-interface';\nimport { DEFAULT_SMART_CONTRACT_METHOD_NAME } from '../contract';\n\n/**\n * @description Utility class to send smart contract operation\n * The format for the arguments is the object representation\n */\nexport class ContractMethodObject<T extends ContractProvider | Wallet> implements ContractMethodInterface {\n constructor(\n private provider: T,\n private address: string,\n private parameterSchema: ParameterSchema,\n private name: string,\n private args: any = 'unit',\n private isMultipleEntrypoint = true,\n private isAnonymous = false\n ) { }\n\n /**\n * @description Get the signature of the smart contract method\n */\n getSignature() {\n return this.isAnonymous\n ? this.parameterSchema.ExtractSchema()[this.name]\n : this.parameterSchema.ExtractSchema();\n }\n\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(\n params: Partial<SendParams> = {}\n ): Promise<T extends Wallet ? TransactionWalletOperation : TransactionOperation> {\n if (this.provider instanceof Wallet) {\n return (this.provider as unknown as Wallet).transfer(this.toTransferParams(params)).send() as any;\n } else {\n return this.provider.transfer(this.toTransferParams(params)) as any;\n }\n }\n\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams({\n fee,\n gasLimit,\n storageLimit,\n source,\n amount = 0,\n mutez = false,\n }: Partial<SendParams> = {}): TransferParams {\n const fullTransferParams: ExplicitTransferParams = {\n to: this.address,\n amount,\n fee,\n mutez,\n source,\n gasLimit,\n storageLimit,\n parameter: {\n entrypoint: this.isMultipleEntrypoint ? this.name : DEFAULT_SMART_CONTRACT_METHOD_NAME,\n value: this.isAnonymous\n ? this.parameterSchema.EncodeObject({ [this.name]: this.args })\n : this.parameterSchema.EncodeObject(this.args),\n },\n };\n return fullTransferParams;\n }\n}","import { TransactionOperation } from '../../operations/transaction-operation';\nimport { TransferParams } from '../../operations/types';\nimport { ContractProvider } from '../interface';\nimport { TransactionWalletOperation, Wallet } from '../../wallet';\nimport { ParameterSchema } from '@taquito/michelson-encoder';\nimport {\n ContractMethodInterface,\n ExplicitTransferParams,\n SendParams,\n} from './contract-method-interface';\nimport { DEFAULT_SMART_CONTRACT_METHOD_NAME } from '../contract';\nimport { InvalidParameterError } from '../errors';\n\n/**\n * @description Utility class to send smart contract operation\n * The format for the arguments is the flattened representation\n */\nexport class ContractMethod<T extends ContractProvider | Wallet>\n implements ContractMethodInterface\n{\n constructor(\n private provider: T,\n private address: string,\n private parameterSchema: ParameterSchema,\n private name: string,\n private args: any[],\n private isMultipleEntrypoint = true,\n private isAnonymous = false\n ) {}\n\n private validateArgs(args: any[], schema: ParameterSchema, name: string) {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidParameterError(name, sigs, args);\n }\n }\n\n /**\n * @description Get the schema of the smart contract method\n */\n get schema() {\n return this.isAnonymous\n ? this.parameterSchema.ExtractSchema()[this.name]\n : this.parameterSchema.ExtractSchema();\n }\n\n /**\n * @description Get the signature of the smart contract method\n */\n getSignature() {\n if (this.isAnonymous) {\n const sig = this.parameterSchema.ExtractSignatures().find((x: any[]) => x[0] === this.name);\n if (sig) {\n sig.shift();\n return sig;\n }\n } else {\n const sig = this.parameterSchema.ExtractSignatures();\n return sig.length == 1 ? sig[0] : sig;\n }\n }\n\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(\n params: Partial<SendParams> = {}\n ): Promise<T extends Wallet ? TransactionWalletOperation : TransactionOperation> {\n if (this.provider instanceof Wallet) {\n return (this.provider as unknown as Wallet)\n .transfer(this.toTransferParams(params))\n .send() as any;\n } else {\n return this.provider.transfer(this.toTransferParams(params)) as any;\n }\n }\n\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams({\n fee,\n gasLimit,\n storageLimit,\n source,\n amount = 0,\n mutez = false,\n }: Partial<SendParams> = {}): TransferParams {\n const fullTransferParams: ExplicitTransferParams = {\n to: this.address,\n amount,\n fee,\n mutez,\n source,\n gasLimit,\n storageLimit,\n parameter: {\n entrypoint: this.isMultipleEntrypoint ? this.name : DEFAULT_SMART_CONTRACT_METHOD_NAME,\n value: this.isAnonymous\n ? this.parameterSchema.Encode(this.name, ...this.args)\n : this.parameterSchema.Encode(...this.args),\n },\n };\n return fullTransferParams;\n }\n}\n","import { ViewSchema } from '@taquito/michelson-encoder';\nimport {\n MichelsonV1Expression,\n MichelsonV1ExpressionExtended,\n RpcClientInterface,\n RPCRunCodeParam,\n RPCRunScriptViewParam,\n} from '@taquito/rpc';\nimport { validateAddress, ValidationResult } from '@taquito/utils';\nimport { TzReadProvider } from '../../read-provider/interface';\nimport {\n InvalidViewSimulationContext,\n ViewSimulationError,\n validateAndExtractFailwith,\n} from '../errors';\nimport { InvalidViewParameterError } from '@taquito/core';\n\nexport interface ExecutionContextParams {\n source?: string;\n viewCaller: string;\n}\n\nexport class OnChainView {\n constructor(\n private _rpc: RpcClientInterface,\n private _readProvider: TzReadProvider,\n private _contractAddress: string,\n private _smartContractViewSchema: ViewSchema,\n private _contractStorageType: MichelsonV1Expression,\n private _args: any = 'Unit'\n ) {}\n\n /**\n * @description Get the signature of the smart contract view\n */\n getSignature() {\n return {\n parameter: this._smartContractViewSchema.extractArgsSchema(),\n result: this._smartContractViewSchema.extractResultSchema(),\n };\n }\n\n /**\n * @description Get the result of the view simulation\n * @param executionContext.source the public key hash of the account who initialized this view execution.\n * @param executionContext.viewCaller the contract address which is the caller of view.\n */\n async executeView(executionContext: ExecutionContextParams) {\n this.verifyContextExecution(executionContext);\n const chainId = await this._readProvider.getChainId();\n const viewArgs = this.transformArgsToMichelson();\n const scriptView: RPCRunScriptViewParam = {\n contract: this._contractAddress,\n view: this._smartContractViewSchema.viewName,\n input: viewArgs,\n chain_id: chainId,\n source: executionContext.viewCaller,\n };\n if (executionContext.source) {\n scriptView.payer = executionContext.source;\n }\n return this.executeViewAndDecodeResult(scriptView);\n }\n\n private verifyContextExecution(executionContext: ExecutionContextParams) {\n if (\n executionContext.source &&\n validateAddress(executionContext.source) !== ValidationResult.VALID\n ) {\n throw new InvalidViewSimulationContext(\n `The source account who initialized the view execution is invalid: ${executionContext.source}.`\n );\n }\n if (\n !executionContext.viewCaller ||\n validateAddress(executionContext.viewCaller) !== ValidationResult.VALID\n ) {\n throw new InvalidViewSimulationContext(\n `The contract which is the caller of view is invalid: ${executionContext.viewCaller}.`\n );\n }\n }\n\n private transformArgsToMichelson() {\n try {\n return this._smartContractViewSchema.encodeViewArgs(this._args);\n } catch (error) {\n throw new InvalidViewParameterError(\n this._smartContractViewSchema.viewName,\n this.getSignature(),\n this._args,\n error\n );\n }\n }\n /**\n * @description Loops through the view's instructions and replace BALANCE, SENDER, SELF_ADDRESS and AMOUNT with Michelson expressions that match the current context, if applicable.\n *\n * Certain specific instructions have different semantics in view:\n * BALANCE represents the current amount of mutez held by the contract where view is;\n * SENDER represents the contract which is the caller of view;\n * SELF_ADDRESS represents the contract where view is;\n * AMOUNT is always 0 mutez.\n *\n */\n private adaptViewCodeToContext(\n instructions: MichelsonV1ExpressionExtended[],\n viewCaller: string,\n contractBalance: string\n ) {\n const instructionsToReplace = {\n BALANCE: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: contractBalance }] }],\n SENDER: [{ prim: 'PUSH', args: [{ prim: 'address' }, { string: viewCaller }] }],\n SELF_ADDRESS: [\n { prim: 'PUSH', args: [{ prim: 'address' }, { string: this._contractAddress }] },\n ],\n AMOUNT: [{ prim: 'PUSH', args: [{ prim: 'mutez' }, { int: '0' }] }],\n };\n\n instructions.forEach((inst: any, i: number) => {\n if (inst.prim in instructionsToReplace) {\n instructions[i] = Object(instructionsToReplace)[inst.prim];\n }\n if (inst.args && inst.args.length !== 0) {\n this.adaptViewCodeToContext(inst.args, viewCaller, contractBalance);\n } else if (Array.isArray(inst)) {\n this.adaptViewCodeToContext(inst, viewCaller, contractBalance);\n }\n });\n return instructions;\n }\n\n private async executeViewAndDecodeResult(viewScript: RPCRunScriptViewParam | RPCRunCodeParam) {\n let storage: MichelsonV1ExpressionExtended;\n try {\n storage = (await this._rpc.runScriptView(viewScript as RPCRunScriptViewParam))\n .data as MichelsonV1ExpressionExtended;\n } catch (error: any) {\n const failWith = validateAndExtractFailwith(error);\n throw failWith\n ? new ViewSimulationError(\n `The simulation of the on-chain view named ${\n this._smartContractViewSchema.viewName\n } failed with: ${JSON.stringify(failWith)}`,\n this._smartContractViewSchema.viewName,\n failWith,\n error\n )\n : error;\n }\n return this._smartContractViewSchema.decodeViewResult(storage);\n }\n}\n","import { Wallet } from '../../wallet';\nimport { ContractProvider } from '../../contract';\nimport { ContractMethodObject } from './contract-method-object-param';\nimport { ContractMethod } from './contract-method-flat-param';\nimport { ParameterSchema, ViewSchema } from '@taquito/michelson-encoder';\nimport { RpcClientInterface, MichelsonV1Expression } from '@taquito/rpc';\nimport { OnChainView } from './contract-on-chain-view';\nimport { TzReadProvider } from '../../read-provider/interface';\n\nexport class ContractMethodFactory<T extends ContractProvider | Wallet> {\n constructor(private provider: T, private contractAddress: string) {}\n\n createContractMethodFlatParams(\n smartContractMethodSchema: ParameterSchema,\n smartContractMethodName: string,\n args: any[],\n isMultipleEntrypoint = true,\n isAnonymous = false\n ) {\n return new ContractMethod<T>(\n this.provider,\n this.contractAddress,\n smartContractMethodSchema,\n smartContractMethodName,\n args,\n isMultipleEntrypoint,\n isAnonymous\n );\n }\n\n createContractMethodObjectParam(\n smartContractMethodSchema: ParameterSchema,\n smartContractMethodName: string,\n args: any[],\n isMultipleEntrypoint = true,\n isAnonymous = false\n ) {\n return new ContractMethodObject<T>(\n this.provider,\n this.contractAddress,\n smartContractMethodSchema,\n smartContractMethodName,\n args,\n isMultipleEntrypoint,\n isAnonymous\n );\n }\n\n createContractViewObjectParam(\n rpc: RpcClientInterface,\n readProvider: TzReadProvider,\n smartContractViewSchema: ViewSchema,\n contractStorageType: MichelsonV1Expression,\n viewArgs: any\n ) {\n return new OnChainView(\n rpc,\n readProvider,\n this.contractAddress,\n smartContractViewSchema,\n contractStorageType,\n viewArgs\n );\n }\n}\n","import { ParameterSchema, Schema, ViewSchema, EventSchema } from '@taquito/michelson-encoder';\nimport {\n EntrypointsResponse,\n MichelsonV1Expression,\n RpcClientInterface,\n ScriptResponse,\n} from '@taquito/rpc';\nimport {\n invalidDetail,\n validateChain,\n validateContractAddress,\n ValidationResult,\n} from '@taquito/utils';\nimport { ChainIds } from '../constants';\nimport { TzReadProvider } from '../read-provider/interface';\nimport { Wallet } from '../wallet';\nimport { ContractMethodFactory } from './contract-methods/contract-method-factory';\nimport { ContractMethod } from './contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from './contract-methods/contract-method-object-param';\nimport { OnChainView } from './contract-methods/contract-on-chain-view';\nimport { InvalidParameterError } from './errors';\nimport { ContractProvider, StorageProvider } from './interface';\nimport { InvalidChainIdError, DeprecationError } from '@taquito/core';\n\nexport const DEFAULT_SMART_CONTRACT_METHOD_NAME = 'default';\n\n/**\n * @description Utility class to retrieve data from a smart contract's storage without incurring fees via a contract's view method\n */\nexport class ContractView {\n constructor(\n private currentContract: ContractAbstraction<ContractProvider | Wallet>,\n private name: string,\n private callbackParametersSchema: ParameterSchema,\n private parameterSchema: ParameterSchema,\n private args: any[],\n private rpc: RpcClientInterface,\n private readProvider: TzReadProvider\n ) {}\n\n async read(chainId?: ChainIds) {\n const chainIdValidation = validateChain(chainId ?? '');\n if (validateContractAddress(chainId ?? '') == ValidationResult.VALID) {\n throw new DeprecationError(\n `Since version 12, the lambda view no longer depends on a lambda contract. The read method no longer accepts a contract address as a parameter.`\n );\n } else if (chainId && chainIdValidation !== ValidationResult.VALID) {\n throw new InvalidChainIdError(chainId, invalidDetail(chainIdValidation));\n }\n const arg = this.parameterSchema.Encode(...this.args);\n const result = await this.rpc.runView({\n contract: this.currentContract.address,\n entrypoint: this.name,\n input: arg,\n chain_id: chainId ? chainId : await this.readProvider.getChainId(),\n });\n return this.callbackParametersSchema.Execute(result.data);\n }\n}\n\nconst validateArgs = (args: any[], schema: ParameterSchema, name: string) => {\n const sigs = schema.ExtractSignatures();\n\n if (!sigs.find((x: any[]) => x.length === args.length)) {\n throw new InvalidParameterError(name, sigs, args);\n }\n};\n\n// lambda view tzip4\nconst isView = (entrypoint: MichelsonV1Expression): boolean => {\n let isView = false;\n if ('prim' in entrypoint && entrypoint.prim === 'pair' && entrypoint.args) {\n const lastElement = entrypoint.args[entrypoint.args.length - 1];\n if ('prim' in lastElement && lastElement.prim === 'contract') {\n isView = true;\n }\n }\n return isView;\n};\n\nexport type Contract = ContractAbstraction<ContractProvider>;\nexport type WalletContract = ContractAbstraction<Wallet>;\n\ntype DefaultMethods<T extends ContractProvider | Wallet> = Record<\n string,\n (...args: any[]) => ContractMethod<T>\n>;\ntype DefaultMethodsObject<T extends ContractProvider | Wallet> = Record<\n string,\n (args?: any) => ContractMethodObject<T>\n>;\ntype DefaultViews = Record<string, (...args: any[]) => ContractView>;\ntype DefaultContractViews = Record<string, (args?: any) => OnChainView>;\ntype DefaultStorage = unknown; // Record<string, unknown>;\n\ntype PromiseReturnType<T extends (...args: any) => any> = T extends (\n ...args: any\n) => Promise<infer R>\n ? R\n : any;\nexport type ContractStorageType<T extends ContractAbstraction<ContractProvider | Wallet>> =\n PromiseReturnType<T['storage']>;\nexport type DefaultContractType = ContractAbstraction<ContractProvider>;\nexport type DefaultWalletType = ContractAbstraction<Wallet>;\n\n/**\n * @description Smart contract abstraction\n */\nexport class ContractAbstraction<\n T extends ContractProvider | Wallet,\n TMethods extends DefaultMethods<T> = DefaultMethods<T>,\n TMethodsObject extends DefaultMethodsObject<T> = DefaultMethodsObject<T>,\n TViews extends DefaultViews = DefaultViews,\n TContractViews extends DefaultContractViews = DefaultContractViews,\n TStorage extends DefaultStorage = DefaultStorage\n> {\n private contractMethodFactory: ContractMethodFactory<T>;\n /**\n * @description Contains methods that are implemented by the target Tezos Smart Contract, and offers the user to call the Smart Contract methods as if they were native TS/JS methods.\n * NB: if the contract contains annotation it will include named properties; if not it will be indexed by a number.\n *\n */\n public methods: TMethods = {} as TMethods;\n /**\n * @description Contains methods that are implemented by the target Tezos Smart Contract, and offers the user to call the Smart Contract methods as if they were native TS/JS methods.\n * `methodsObject` serves the exact same purpose as the `methods` member. The difference is that it allows passing the parameter in an object format when calling the smart contract method (instead of the flattened representation)\n * NB: if the contract contains annotation it will include named properties; if not it will be indexed by a number.\n *\n */\n public methodsObject: TMethodsObject = {} as TMethodsObject;\n /**\n * @description Contains lamda views (tzip4) that are implemented by the target Tezos Smart Contract, and offers the user to call the lambda views as if they were native TS/JS methods.\n * NB: These are the view defined in the tzip4 standard, not the views introduced by the Hangzhou protocol.\n */\n public views: TViews = {} as TViews;\n /**\n * @description Contains on-chain views that are defined by the target Tezos Smart Contract, and offers the user to simulate the views execution as if they were native TS/JS methods.\n * NB: the expected format for the parameter when calling a smart contract view is the object format (same format as for the storage) and not the flattened representation.\n *\n */\n public contractViews: TContractViews = {} as TContractViews;\n\n public readonly schema: Schema;\n\n public readonly parameterSchema: ParameterSchema;\n public readonly viewSchema: ViewSchema[];\n public readonly eventSchema: EventSchema[];\n\n constructor(\n public readonly address: string,\n public readonly script: ScriptResponse,\n provider: T,\n private storageProvider: StorageProvider,\n public readonly entrypoints: EntrypointsResponse,\n private rpc: RpcClientInterface,\n private readProvider: TzReadProvider\n ) {\n this.contractMethodFactory = new ContractMethodFactory(provider, address);\n this.schema = Schema.fromRPCResponse({ script: this.script });\n this.parameterSchema = ParameterSchema.fromRPCResponse({ script: this.script });\n\n this.viewSchema = ViewSchema.fromRPCResponse({ script: this.script });\n if (this.viewSchema.length !== 0) {\n this._initializeOnChainViews(this, rpc, this.readProvider, this.viewSchema);\n }\n this.eventSchema = EventSchema.fromRPCResponse({ script: this.script });\n this._initializeMethods(this, this.entrypoints.entrypoints, this.rpc, this.readProvider);\n }\n\n private _initializeMethods(\n currentContract: ContractAbstraction<T>,\n entrypoints: {\n [key: string]: object;\n },\n rpc: RpcClientInterface,\n readProvider: TzReadProvider\n ) {\n const parameterSchema = this.parameterSchema;\n const keys = Object.keys(entrypoints);\n if (parameterSchema.isMultipleEntryPoint) {\n keys.forEach((smartContractMethodName) => {\n const smartContractMethodSchema = new ParameterSchema(entrypoints[smartContractMethodName]);\n\n (this.methods as DefaultMethods<T>)[smartContractMethodName] = function (...args: any[]) {\n return currentContract.contractMethodFactory.createContractMethodFlatParams(\n smartContractMethodSchema,\n smartContractMethodName,\n args\n );\n };\n\n (this.methodsObject as DefaultMethodsObject<T>)[smartContractMethodName] = function (\n args: any\n ) {\n return currentContract.contractMethodFactory.createContractMethodObjectParam(\n smartContractMethodSchema,\n smartContractMethodName,\n args\n );\n };\n\n if (isView(entrypoints[smartContractMethodName])) {\n const view = function (...args: any[]) {\n const entrypointParamWithoutCallback = (entrypoints[smartContractMethodName] as any)\n .args[0];\n const smartContractMethodSchemaWithoutCallback = new ParameterSchema(\n entrypointParamWithoutCallback\n );\n const parametersCallback = (entrypoints[smartContractMethodName] as any).args[1]\n .args[0];\n const smartContractMethodCallbackSchema = new ParameterSchema(parametersCallback);\n\n validateArgs(args, smartContractMethodSchemaWithoutCallback, smartContractMethodName);\n return new ContractView(\n currentContract,\n smartContractMethodName,\n smartContractMethodCallbackSchema,\n smartContractMethodSchemaWithoutCallback,\n args,\n rpc,\n readProvider\n );\n };\n (this.views as DefaultViews)[smartContractMethodName] = view;\n }\n });\n\n // Deal with methods with no annotations which were not discovered by the RPC endpoint\n // Methods with no annotations are discovered using parameter schema\n const anonymousMethods = Object.keys(parameterSchema.ExtractSchema()).filter(\n (key) => Object.keys(entrypoints).indexOf(key) === -1\n );\n\n anonymousMethods.forEach((smartContractMethodName) => {\n (this.methods as DefaultMethods<T>)[smartContractMethodName] = function (...args: any[]) {\n return currentContract.contractMethodFactory.createContractMethodFlatParams(\n parameterSchema,\n smartContractMethodName,\n args,\n false,\n true\n );\n };\n\n (this.methodsObject as DefaultMethodsObject<T>)[smartContractMethodName] = function (\n args: any\n ) {\n return currentContract.contractMethodFactory.createContractMethodObjectParam(\n parameterSchema,\n smartContractMethodName,\n args,\n false,\n true\n );\n };\n });\n } else {\n const smartContractMethodSchema = this.parameterSchema;\n (this.methods as DefaultMethods<T>)[DEFAULT_SMART_CONTRACT_METHOD_NAME] = function (\n ...args: any[]\n ) {\n return currentContract.contractMethodFactory.createContractMethodFlatParams(\n smartContractMethodSchema,\n DEFAULT_SMART_CONTRACT_METHOD_NAME,\n args,\n false\n );\n };\n\n (this.methodsObject as DefaultMethodsObject<T>)[DEFAULT_SMART_CONTRACT_METHOD_NAME] =\n function (args: any) {\n return currentContract.contractMethodFactory.createContractMethodObjectParam(\n smartContractMethodSchema,\n DEFAULT_SMART_CONTRACT_METHOD_NAME,\n args,\n false\n );\n };\n }\n }\n\n private _initializeOnChainViews(\n currentContract: ContractAbstraction<T>,\n rpc: RpcClientInterface,\n readProvider: TzReadProvider,\n allContractViews: ViewSchema[]\n ) {\n const storageType = this.schema.val;\n\n allContractViews.forEach((viewSchema) => {\n (this.contractViews as DefaultContractViews)[viewSchema.viewName] = function (args: any) {\n return currentContract.contractMethodFactory.createContractViewObjectParam(\n rpc,\n readProvider,\n viewSchema,\n storageType,\n args\n );\n };\n });\n }\n\n /**\n * @description Return a friendly representation of the smart contract storage\n */\n public storage<T extends TStorage = TStorage>() {\n return this.storageProvider.getStorage<T>(this.address, this.schema);\n }\n\n /**\n *\n * @description Return a friendly representation of the smart contract big map value\n *\n * @param key BigMap key to fetch\n *\n * @deprecated getBigMapKey has been deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n public bigMap(key: string) {\n return this.storageProvider.getBigMapKey(this.address, key, this.schema);\n }\n}\n","const setDelegate = (key: string) => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n {\n prim: 'PUSH',\n args: [{ prim: 'key_hash' }, { string: key }],\n },\n { prim: 'SOME' },\n { prim: 'SET_DELEGATE' },\n { prim: 'CONS' },\n ];\n};\n\nconst transferImplicit = (key: string, mutez: number) => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n {\n prim: 'PUSH',\n args: [{ prim: 'key_hash' }, { string: key }],\n },\n { prim: 'IMPLICIT_ACCOUNT' },\n {\n prim: 'PUSH',\n args: [{ prim: 'mutez' }, { int: `${mutez}` }],\n },\n { prim: 'UNIT' },\n { prim: 'TRANSFER_TOKENS' },\n { prim: 'CONS' },\n ];\n};\n\nconst removeDelegate = () => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n { prim: 'NONE', args: [{ prim: 'key_hash' }] },\n { prim: 'SET_DELEGATE' },\n { prim: 'CONS' },\n ];\n};\n\nconst transferToContract = (key: string, amount: number) => {\n return [\n { prim: 'DROP' },\n { prim: 'NIL', args: [{ prim: 'operation' }] },\n {\n prim: 'PUSH',\n args: [{ prim: 'address' }, { string: key }],\n },\n { prim: 'CONTRACT', args: [{ prim: 'unit' }] },\n {\n prim: 'IF_NONE',\n args: [[{ prim: 'UNIT' }, { prim: 'FAILWITH' }], []],\n },\n {\n prim: 'PUSH',\n args: [{ prim: 'mutez' }, { int: `${amount}` }],\n },\n { prim: 'UNIT' },\n { prim: 'TRANSFER_TOKENS' },\n { prim: 'CONS' },\n ];\n};\n\nexport const MANAGER_LAMBDA = {\n setDelegate,\n removeDelegate,\n transferImplicit,\n transferToContract,\n};\n","const code = [\n {\n prim: 'parameter',\n args: [\n {\n prim: 'lambda',\n args: [\n { prim: 'unit' },\n {\n prim: 'pair',\n args: [{ prim: 'list', args: [{ prim: 'operation' }] }, { prim: 'unit' }],\n },\n ],\n },\n ],\n },\n { prim: 'storage', args: [{ prim: 'unit' }] },\n { prim: 'code', args: [[{ prim: 'CAR' }, { prim: 'UNIT' }, { prim: 'EXEC' }]] },\n];\n\nconst storage = 'Unit';\n\nexport const VIEW_LAMBDA = {\n code,\n storage\n}\n","import { Wallet } from '../wallet/wallet';\nimport { Context } from '../context';\nimport { ContractAbstraction } from './contract';\nimport { ContractProvider } from './interface';\n\nexport function compose<\n ContractAbsComposer1 extends ContractAbstraction<ContractProvider | Wallet>,\n ContractAbsComposer2 extends ContractAbstraction<ContractProvider | Wallet>,\n ContractAbstractionComposed\n>(\n functioncomposer1: (abs: ContractAbsComposer1, context: Context) => ContractAbsComposer2,\n functioncomposer2: (abs: ContractAbsComposer2, context: Context) => ContractAbstractionComposed\n): (abs: ContractAbsComposer1, context: Context) => ContractAbstractionComposed {\n return (contractAbstraction, context) =>\n functioncomposer2(functioncomposer1(contractAbstraction, context), context);\n}\n","import BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\n\nexport class SaplingStateAbstraction {\n constructor(private id: BigNumber, private provider: ContractProvider) { }\n\n /**\n *\n * @description Fetch the sapling state\n * \n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a json object of the sapling_state\n *\n */\n async getSaplingDiff(block?: number) {\n return this.provider.getSaplingDiffByID(this.id.toString(), block);\n }\n\n getId() {\n return this.id.toString();\n }\n}\n","import {\n OperationContents,\n OpKind,\n VotingPeriodBlockResult,\n PreapplyParams,\n ConstantsResponse,\n} from '@taquito/rpc';\nimport {\n DelegateParams,\n RevealParams,\n RPCOperation,\n RPCOpWithFee,\n RPCOpWithSource,\n isOpRequireReveal,\n RegisterGlobalConstantParams,\n TransferParams,\n OriginateParams,\n UpdateConsensusKeyParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n BallotParams,\n ProposalsParams,\n DrainDelegateParams,\n ParamsWithKind,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n isOpWithFee,\n RegisterDelegateParams,\n ActivationParams,\n} from '../operations/types';\nimport { PreparationProvider, PreparedOperation } from './interface';\nimport { DEFAULT_FEE, DEFAULT_STORAGE_LIMIT, Protocols, getRevealGasLimit } from '../constants';\nimport { RPCResponseError } from '../errors';\nimport { PublicKeyNotFoundError, InvalidOperationKindError, DeprecationError } from '@taquito/core';\nimport { Context } from '../context';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { ContractProvider } from '../contract/interface';\nimport {\n createSetDelegateOperation,\n createTransferOperation,\n createRevealOperation,\n createRegisterGlobalConstantOperation,\n createOriginationOperation,\n createUpdateConsensusKeyOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createBallotOperation,\n createProposalsOperation,\n createDrainDelegateOperation,\n DefaultContractType,\n ContractStorageType,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n createRegisterDelegateOperation,\n createActivationOperation,\n} from '../contract';\nimport { Estimate } from '../estimate';\nimport { ForgeParams } from '@taquito/local-forging';\nimport { Provider } from '../provider';\nimport BigNumber from 'bignumber.js';\nimport { BlockIdentifier } from '../read-provider/interface';\n\ninterface Limits {\n fee?: number;\n storageLimit?: number;\n gasLimit?: number;\n}\n\nconst mergeLimits = (\n userDefinedLimit: Limits,\n defaultLimits: Required<Limits>\n): Required<Limits> => {\n return {\n fee: userDefinedLimit.fee ?? defaultLimits.fee,\n gasLimit: userDefinedLimit.gasLimit ?? defaultLimits.gasLimit,\n storageLimit: userDefinedLimit.storageLimit ?? defaultLimits.storageLimit,\n };\n};\n\n/**\n * @description PrepareProvider is a utility class to output the prepared format of an operation\n */\nexport class PrepareProvider extends Provider implements PreparationProvider {\n #counters: { [key: string]: number };\n\n constructor(protected context: Context) {\n super(context);\n this.#counters = {};\n }\n\n private async getBlockHash(block?: BlockIdentifier) {\n return this.context.readProvider.getBlockHash(block ?? 'head~2');\n }\n\n private async getProtocolHash() {\n return this.context.readProvider.getNextProtocol('head');\n }\n\n private async getHeadCounter(pkh: string): Promise<string> {\n return this.context.readProvider.getCounter(pkh, 'head') ?? '0';\n }\n\n private adjustGasForBatchOperation(\n gasLimitBlock: BigNumber,\n gaslimitOp: BigNumber,\n numberOfOps: number\n ) {\n return BigNumber.min(gaslimitOp, gasLimitBlock.div(numberOfOps + 1));\n }\n\n private async getAccountLimits(\n pkh: string,\n constants: Pick<\n ConstantsResponse,\n | 'hard_gas_limit_per_operation'\n | 'hard_gas_limit_per_block'\n | 'hard_storage_limit_per_operation'\n | 'cost_per_byte'\n >,\n numberOfOps?: number\n ) {\n const balance = await this.context.readProvider.getBalance(pkh, 'head');\n const {\n hard_gas_limit_per_operation,\n hard_gas_limit_per_block,\n hard_storage_limit_per_operation,\n cost_per_byte,\n } = constants;\n return {\n fee: 0,\n gasLimit: numberOfOps\n ? Math.floor(\n this.adjustGasForBatchOperation(\n hard_gas_limit_per_block,\n hard_gas_limit_per_operation,\n numberOfOps\n ).toNumber()\n )\n : hard_gas_limit_per_operation.toNumber(),\n storageLimit: Math.floor(\n BigNumber.min(balance.dividedBy(cost_per_byte), hard_storage_limit_per_operation).toNumber()\n ),\n };\n }\n\n private getFee(op: RPCOpWithFee, pkh: string, headCounter: number) {\n if (!this.#counters[pkh] || this.#counters[pkh] < headCounter) {\n this.#counters[pkh] = headCounter;\n }\n const opCounter = ++this.#counters[pkh];\n\n return {\n counter: `${opCounter}`,\n fee: typeof op.fee === 'undefined' ? '0' : `${op.fee}`,\n gas_limit: typeof op.gas_limit === 'undefined' ? '0' : `${op.gas_limit}`,\n storage_limit: typeof op.storage_limit === 'undefined' ? '0' : `${op.storage_limit}`,\n };\n }\n\n private getSource(op: RPCOpWithSource, pkh: string, source: string | undefined) {\n return { source: typeof op.source === 'undefined' ? source || pkh : op.source };\n }\n\n private async addRevealOperationIfNeeded(operation: RPCOperation, publicKeyHash: string) {\n if (isOpRequireReveal(operation)) {\n const ops: RPCOperation[] = [operation];\n const { publicKey, pkh } = await this.getKeys();\n if (await this.isAccountRevealRequired(publicKeyHash)) {\n if (!publicKey) {\n throw new PublicKeyNotFoundError(pkh);\n }\n ops.unshift(\n await createRevealOperation(\n {\n fee: DEFAULT_FEE.REVEAL,\n storageLimit: DEFAULT_STORAGE_LIMIT.REVEAL,\n gasLimit: getRevealGasLimit(pkh),\n },\n publicKeyHash,\n publicKey\n )\n );\n return ops;\n }\n }\n return operation;\n }\n\n private async getKeys(): Promise<{\n pkh: string;\n publicKey?: string;\n }> {\n const isSignerConfigured = this.context.isAnySignerConfigured();\n return {\n pkh: isSignerConfigured\n ? await this.signer.publicKeyHash()\n : await this.context.walletProvider.getPKH(),\n publicKey: isSignerConfigured ? await this.signer.publicKey() : undefined,\n };\n }\n\n private convertIntoArray(op: RPCOperation | RPCOperation[]): RPCOperation[] {\n if (Array.isArray(op)) {\n return [...op];\n } else {\n return [op];\n }\n }\n\n private constructOpContents(\n ops: RPCOperation[],\n headCounter: number,\n pkh: string,\n source?: string | undefined,\n currentVotingPeriod?: VotingPeriodBlockResult\n ): OperationContents[] {\n return ops.map((op: RPCOperation) => {\n switch (op.kind) {\n case OpKind.ACTIVATION:\n case OpKind.DRAIN_DELEGATE:\n return {\n ...op,\n };\n case OpKind.ORIGINATION:\n return {\n ...op,\n balance: typeof op.balance !== 'undefined' ? `${op.balance}` : '0',\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.TRANSACTION: {\n const cops = {\n ...op,\n amount: typeof op.amount !== 'undefined' ? `${op.amount}` : '0',\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n if (cops.source.toLowerCase().startsWith('kt1')) {\n throw new DeprecationError(\n `KT1 addresses are not supported as source since ${Protocols.PsBabyM1}`\n );\n }\n return cops;\n }\n case OpKind.REVEAL:\n case OpKind.DELEGATION:\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n case OpKind.UPDATE_CONSENSUS_KEY:\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return {\n ...op,\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.TRANSFER_TICKET:\n return {\n ...op,\n ticket_amount: `${op.ticket_amount}`,\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.INCREASE_PAID_STORAGE:\n return {\n ...op,\n amount: `${op.amount}`,\n ...this.getSource(op, pkh, source),\n ...this.getFee(op, pkh, headCounter),\n };\n case OpKind.BALLOT:\n if (currentVotingPeriod === undefined) {\n throw new RPCResponseError(`Failed to get the current voting period index`);\n }\n return {\n ...op,\n period: currentVotingPeriod?.voting_period.index,\n };\n case OpKind.PROPOSALS:\n if (currentVotingPeriod === undefined) {\n throw new RPCResponseError(`Failed to get the current voting period index`);\n }\n return {\n ...op,\n period: currentVotingPeriod?.voting_period.index,\n };\n default:\n throw new InvalidOperationKindError((op as RPCOperation).kind);\n }\n });\n }\n\n /**\n *\n * @description Method to prepare an activation operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async activate({ pkh, secret }: ActivationParams): Promise<PreparedOperation> {\n const op = await createActivationOperation({\n pkh,\n secret,\n });\n\n const ops = this.convertIntoArray(op);\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n const contents = this.constructOpContents(ops, headCounter, pkh);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a reveal operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async reveal({ fee, gasLimit, storageLimit }: RevealParams): Promise<PreparedOperation> {\n const { pkh, publicKey } = await this.getKeys();\n\n if (!publicKey) {\n throw new PublicKeyNotFoundError(pkh);\n }\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const mergedEstimates = mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS);\n\n const op = await createRevealOperation(\n {\n fee: mergedEstimates.fee,\n gasLimit: mergedEstimates.gasLimit,\n storageLimit: mergedEstimates.storageLimit,\n },\n pkh,\n publicKey\n );\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare an origination operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async originate<TContract extends DefaultContractType = DefaultContractType>(\n { fee, storageLimit, gasLimit, ...rest }: OriginateParams<ContractStorageType<TContract>>,\n source?: string\n ): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n })\n );\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a transaction operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async transaction({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: TransferParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTransferOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a delegation operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async delegation({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: DelegateParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createSetDelegateOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a register delegate operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async registerDelegate(\n { fee, storageLimit, gasLimit }: RegisterDelegateParams,\n source?: string\n ): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const mergedEstimates = mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS);\n\n const op = await createRegisterDelegateOperation(\n {\n fee: mergedEstimates.fee,\n storageLimit: mergedEstimates.storageLimit,\n gasLimit: mergedEstimates.gasLimit,\n },\n pkh\n );\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a register_global_constant operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async registerGlobalConstant({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: RegisterGlobalConstantParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createRegisterGlobalConstantOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare an update_consensus_key operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async updateConsensusKey(\n { fee, storageLimit, gasLimit, ...rest }: UpdateConsensusKeyParams,\n source?: string\n ): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createUpdateConsensusKeyOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare an increase_paid_storage operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async increasePaidStorage({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: IncreasePaidStorageParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createIncreasePaidStorageOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a ballot operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async ballot(params: BallotParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const op = await createBallotOperation({\n ...params,\n });\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n let currentVotingPeriod: VotingPeriodBlockResult;\n\n try {\n currentVotingPeriod = await this.rpc.getCurrentPeriod();\n } catch (e) {\n throw new RPCResponseError('Failed to get the current voting period index');\n }\n\n const contents = this.constructOpContents(\n ops,\n headCounter,\n pkh,\n undefined,\n currentVotingPeriod\n );\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a proposals operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async proposals(params: ProposalsParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const op = await createProposalsOperation({\n ...params,\n });\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n let currentVotingPeriod: VotingPeriodBlockResult;\n\n try {\n currentVotingPeriod = await this.rpc.getCurrentPeriod();\n } catch (e) {\n throw new RPCResponseError('Failed to get the current voting period index');\n }\n\n const contents = this.constructOpContents(\n ops,\n headCounter,\n pkh,\n undefined,\n currentVotingPeriod\n );\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a drain_delegate operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async drainDelegate(params: DrainDelegateParams, source?: string): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const op = await createDrainDelegateOperation({\n ...params,\n });\n\n const ops = this.convertIntoArray(op);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a transfer_ticket operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async transferTicket({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: TransferTicketParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createTransferTicketOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a smart_rollup_add_messages operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n async smartRollupAddMessages({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: SmartRollupAddMessagesParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createSmartRollupAddMessagesOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a smart_rollup_originate operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async smartRollupOriginate({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: SmartRollupOriginateParams): Promise<PreparedOperation> {\n const { pkh } = await this.getKeys();\n\n const originationProof = await this.rpc.getOriginationProof({\n kind: rest.pvmKind,\n kernel: rest.kernel,\n });\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const op = await createSmartRollupOriginateOperation({\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n ...rest,\n originationProof,\n });\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n const contents = this.constructOpContents(ops, headCounter, pkh, rest.source);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a batch operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async batch(batchParams: ParamsWithKind[], estimates?: Estimate[]): Promise<PreparedOperation> {\n const { pkh, publicKey } = await this.getKeys();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants, batchParams.length);\n const revealNeeded = await this.isRevealOpNeeded(batchParams, pkh);\n\n const ops: RPCOperation[] = [];\n if (!estimates) {\n for (const op of batchParams) {\n if (isOpWithFee(op)) {\n const limits = mergeLimits(op, DEFAULT_PARAMS);\n\n ops.push(await this.getRPCOp({ ...op, ...limits }));\n } else {\n ops.push({ ...op });\n }\n }\n } else {\n for (const op of batchParams) {\n if (isOpWithFee(op)) {\n const e = estimates.shift();\n const limits = mergeLimits(op, {\n fee: e!.suggestedFeeMutez,\n storageLimit: e!.storageLimit,\n gasLimit: e!.gasLimit,\n });\n ops.push(await this.getRPCOp({ ...op, ...limits }));\n } else {\n ops.push({ ...op });\n }\n }\n }\n\n if (revealNeeded) {\n if (!publicKey) {\n throw new PublicKeyNotFoundError(pkh);\n }\n ops.unshift(\n await createRevealOperation(\n {\n fee: DEFAULT_FEE.REVEAL,\n storageLimit: DEFAULT_STORAGE_LIMIT.REVEAL,\n gasLimit: getRevealGasLimit(pkh),\n },\n pkh,\n publicKey\n )\n );\n }\n\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const contents = this.constructOpContents(ops, headCounter, pkh);\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to prepare a batch operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n async contractCall(\n contractMethod: ContractMethod<ContractProvider> | ContractMethodObject<ContractProvider>\n ): Promise<PreparedOperation> {\n const hash = await this.getBlockHash();\n const protocol = await this.getProtocolHash();\n\n const { pkh } = await this.getKeys();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const params = contractMethod.toTransferParams();\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n\n const estimateLimits = mergeLimits(\n {\n fee: params.fee,\n storageLimit: params.storageLimit,\n gasLimit: params.gasLimit,\n },\n DEFAULT_PARAMS\n );\n\n const op = {\n kind: OpKind.TRANSACTION,\n fee: params.fee ?? estimateLimits.fee,\n gas_limit: params.gasLimit ?? estimateLimits.gasLimit,\n storage_limit: params.storageLimit ?? estimateLimits.storageLimit,\n amount: String(params.amount),\n destination: params.to,\n parameters: params.parameter,\n } as RPCOperation;\n\n const operation = await this.addRevealOperationIfNeeded(op, pkh);\n const ops = this.convertIntoArray(operation);\n\n const contents = this.constructOpContents(ops, headCounter, pkh);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter: headCounter,\n };\n }\n\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for the preapplyOperation method\n * @param prepared a Prepared Operation\n * @returns a PreapplyParams object\n */\n async toPreapply(prepared: PreparedOperation): Promise<PreapplyParams> {\n const {\n opOb: { contents, branch, protocol },\n } = prepared;\n const forgeParams = this.toForge(prepared);\n const forged = await this.context.forger.forge(forgeParams);\n const sig = await this.context.signer.sign(forged, new Uint8Array([3]));\n\n return [{ contents, branch, protocol, signature: sig.prefixSig }];\n }\n\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for forging\n * @param param a Prepared Operation\n * @returns a ForgeParams object\n */\n toForge({ opOb: { contents, branch } }: PreparedOperation): ForgeParams {\n return {\n branch,\n contents,\n };\n }\n}\n","import { Context } from '../context';\nimport { ContractStorageType, DefaultContractType } from '../contract/contract';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { SendParams } from '../contract/contract-methods/contract-method-interface';\nimport { ContractProvider } from '../contract/interface';\nimport {\n createOriginationOperation,\n createRegisterGlobalConstantOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract/prepare';\nimport { BatchOperation } from '../operations/batch-operation';\nimport {\n ActivationParams,\n DelegateParams,\n OriginateParams,\n TransferParams,\n ParamsWithKind,\n RegisterGlobalConstantParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParamsWithProof,\n} from '../operations/types';\nimport { OpKind } from '@taquito/rpc';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { validateAddress, validateKeyHash, ValidationResult, invalidDetail } from '@taquito/utils';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport {\n InvalidAddressError,\n InvalidKeyHashError,\n InvalidOperationKindError,\n InvalidAmountError,\n} from '@taquito/core';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare';\n\nexport const BATCH_KINDS = [\n OpKind.ACTIVATION,\n OpKind.ORIGINATION,\n OpKind.TRANSACTION,\n OpKind.DELEGATION,\n];\nexport type BatchKinds =\n | OpKind.ACTIVATION\n | OpKind.ORIGINATION\n | OpKind.TRANSACTION\n | OpKind.DELEGATION;\n\nexport class OperationBatch extends Provider {\n private operations: ParamsWithKind[] = [];\n\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n\n private prepare = new PrepareProvider(this.context);\n\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: TransferParams) {\n const toValidation = validateAddress(params.to);\n if (params.amount < 0) {\n throw new InvalidAmountError(params.amount.toString());\n }\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n this.operations.push({ kind: OpKind.TRANSACTION, ...params });\n return this;\n }\n\n /**\n *\n * @description Transfer tickets from a Tezos address (tz1,tz2 or tz3) to a smart contract address( KT1)\n *\n * @param params Transfer operation parameter\n */\n withTransferTicket(params: TransferTicketParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n this.operations.push({ kind: OpKind.TRANSFER_TICKET, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a contract call to the batch\n *\n * @param params Call a contract method\n * @param options Generic operation parameters\n */\n withContractCall(\n params: ContractMethod<ContractProvider> | ContractMethodObject<ContractProvider>,\n options: Partial<SendParams> = {}\n ) {\n return this.withTransfer(params.toTransferParams(options));\n }\n\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: DelegateParams) {\n const sourceValidation = validateAddress(params.source);\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n this.operations.push({ kind: OpKind.DELEGATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an activation operation to the batch\n *\n * @param params Activation operation parameter\n * @throws {@link InvalidKeyHashError}\n */\n withActivation({ pkh, secret }: ActivationParams) {\n const pkhValidation = validateKeyHash(pkh);\n if (pkhValidation !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh, invalidDetail(pkhValidation));\n }\n this.operations.push({ kind: OpKind.ACTIVATION, pkh, secret });\n return this;\n }\n\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination<TContract extends DefaultContractType = DefaultContractType>(\n params: OriginateParams<ContractStorageType<TContract>>\n ) {\n this.operations.push({ kind: OpKind.ORIGINATION, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a register a global constant operation to the batch\n *\n * @param params RegisterGlobalConstant operation parameter\n */\n withRegisterGlobalConstant(params: RegisterGlobalConstantParams) {\n this.operations.push({ kind: OpKind.REGISTER_GLOBAL_CONSTANT, ...params });\n return this;\n }\n\n /**\n *\n * @description Add an increase paid storage operation to the batch\n *\n * @param params IncreasePaidStorage operation parameter\n */\n withIncreasePaidStorage(params: IncreasePaidStorageParams) {\n this.operations.push({ kind: OpKind.INCREASE_PAID_STORAGE, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a smart rollup add messages operation to the batch\n *\n * @param params Rollup origination operation parameter\n */\n withSmartRollupAddMessages(params: SmartRollupAddMessagesParams) {\n this.operations.push({ kind: OpKind.SMART_ROLLUP_ADD_MESSAGES, ...params });\n return this;\n }\n\n /**\n *\n * @description Add a smart rollup originate operation to the batch\n *\n * @param params Smart Rollup Originate operation parameter\n */\n withSmartRollupOriginate(params: SmartRollupOriginateParamsWithProof) {\n this.operations.push({ kind: OpKind.SMART_ROLLUP_ORIGINATE, ...params });\n return this;\n }\n\n async getRPCOp(param: ParamsWithKind) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n return createTransferOperation({\n ...param,\n });\n case OpKind.ORIGINATION:\n return createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n })\n );\n case OpKind.DELEGATION:\n return createSetDelegateOperation({\n ...param,\n });\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n return createRegisterGlobalConstantOperation({\n ...param,\n });\n case OpKind.INCREASE_PAID_STORAGE:\n return createIncreasePaidStorageOperation({\n ...param,\n });\n case OpKind.TRANSFER_TICKET:\n return createTransferTicketOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n return createSmartRollupAddMessagesOperation({\n ...param,\n });\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return createSmartRollupOriginateOperation({\n ...param,\n });\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n * @throws {@link InvalidOperationKindError}\n */\n with(params: ParamsWithKind[]) {\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n this.withTransfer(param);\n break;\n case OpKind.ORIGINATION:\n this.withOrigination(param);\n break;\n case OpKind.DELEGATION:\n this.withDelegation(param);\n break;\n case OpKind.ACTIVATION:\n this.withActivation(param);\n break;\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n this.withRegisterGlobalConstant(param);\n break;\n case OpKind.INCREASE_PAID_STORAGE:\n this.withIncreasePaidStorage(param);\n break;\n case OpKind.TRANSFER_TICKET:\n this.withTransferTicket(param);\n break;\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n this.withSmartRollupAddMessages(param);\n break;\n case OpKind.SMART_ROLLUP_ORIGINATE:\n this.withSmartRollupOriginate(param);\n break;\n default:\n throw new InvalidOperationKindError(JSON.stringify((param as any).kind));\n }\n }\n\n return this;\n }\n\n /**\n *\n * @description Forge and Inject the operation batch\n *\n * @param params Optionally specify the source of the operation\n */\n async send(params?: { source?: string }) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const source = (params && params.source) || publicKeyHash;\n const estimates = await this.estimator.batch(this.operations);\n\n if (estimates.length !== this.operations.length) {\n estimates.shift();\n }\n const preparedOp = await this.prepare.batch(this.operations, estimates);\n\n const opBytes = await this.forge(preparedOp);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BatchOperation(\n hash,\n preparedOp.opOb.contents,\n source,\n forgedBytes,\n opResponse,\n context\n );\n }\n}\n\nexport class RPCBatchProvider {\n constructor(private context: Context, private estimator: EstimationProvider) {}\n\n /***\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]) {\n const batch = new OperationBatch(this.context, this.estimator);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n}\n","import {\n BatchOperationResult,\n BlockResponse,\n OperationContentsAndResultOrigination,\n OperationContentsAndResultReveal,\n OpKind,\n} from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { BATCH_KINDS } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { hasMetadataWithResult } from '../operations/types';\nimport { WalletOperation, OperationStatus } from './operation';\nimport { ObservableError } from './errors';\n\nexport class BatchWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('Unable to fetch operation results');\n } else {\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n }\n\n public getOriginatedContractAddresses = async (): Promise<string[]> => {\n const opResult = await this.operationResults();\n if (!opResult) {\n throw new ObservableError('Unable to fetch operation results');\n } else {\n const originationOpResults = opResult.filter(\n (x) => x.kind === 'origination'\n ) as OperationContentsAndResultOrigination[];\n\n let addresses: string[] = [];\n for (const res of originationOpResults) {\n if (res.metadata.operation_result.originated_contracts) {\n addresses = [...addresses, ...res.metadata.operation_result.originated_contracts];\n }\n }\n\n return addresses;\n }\n };\n\n async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.operationResults();\n if (op) {\n return (\n op\n .filter((result) => BATCH_KINDS.indexOf(result.kind) !== -1)\n .map((result) => {\n if (hasMetadataWithResult(result)) {\n const opResult = result.metadata.operation_result as BatchOperationResult;\n return opResult.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\n } else {\n throw new ObservableError('Unable to fetch operation results');\n }\n }\n}\n","import { WalletOperation, OperationStatus } from './operation';\nimport { Context } from '../context';\nimport { Observable } from 'rxjs';\nimport {\n BlockResponse,\n OpKind,\n OperationContentsAndResultReveal,\n OperationContentsAndResultIncreasePaidStorage,\n} from '@taquito/rpc';\nimport { ObservableError } from './errors';\n\nexport class IncreasePaidStorageWalletOperation extends WalletOperation {\n constructor(\n public readonly opHash: string,\n protected readonly context: Context,\n newHead$: Observable<BlockResponse>\n ) {\n super(opHash, context, newHead$);\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('Unable to fetch operation result');\n } else {\n return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n }\n\n public async increasePaidStorageOperation() {\n const operationResult = await this.operationResults();\n if (!operationResult) {\n throw new ObservableError('Unable to fetch operation result');\n } else {\n return operationResult.find((x) => x.kind === OpKind.INCREASE_PAID_STORAGE) as\n | OperationContentsAndResultIncreasePaidStorage\n | undefined;\n }\n }\n\n public async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.increasePaidStorageOperation();\n if (!op) {\n return 'unknown';\n }\n\n return op.metadata.operation_result.status;\n }\n}\n","import { BlockResponse } from '@taquito/rpc';\nimport {\n BehaviorSubject,\n concat,\n defer,\n from,\n Observable,\n of,\n range,\n ReplaySubject,\n SchedulerLike,\n throwError,\n} from 'rxjs';\nimport { concatMap, mergeMap, share, startWith, switchMap, timeout } from 'rxjs/operators';\nimport { Context } from '../context';\nimport { BlockIdentifier } from '../read-provider/interface';\nimport { createObservableFromSubscription } from '../subscribe/create-observable-from-subscription';\nimport { BatchWalletOperation } from './batch-operation';\nimport { DelegationWalletOperation } from './delegation-operation';\nimport { IncreasePaidStorageWalletOperation } from './increase-paid-storage-operation';\nimport { WalletOperation } from './operation';\nimport { OriginationWalletOperation } from './origination-operation';\nimport { TransactionWalletOperation } from './transaction-operation';\nimport { ConfirmationTimeoutError } from '../errors';\n\nexport function timeoutAfter<T>(timeoutMillisec: number): (source: Observable<T>) => Observable<T> {\n return function inner(source: Observable<T>): Observable<T> {\n return new BehaviorSubject(null).pipe(\n timeout({\n each: timeoutMillisec,\n with: () =>\n throwError(() => new ConfirmationTimeoutError(`Confirmation polling timed out`)),\n }),\n mergeMap(() => source)\n );\n };\n}\n\nexport const createNewPollingBasedHeadObservable = (\n sharedHeadOb: Observable<BlockResponse>,\n context: Context,\n _scheduler?: SchedulerLike\n): Observable<BlockResponse> => {\n return sharedHeadOb.pipe(\n timeoutAfter(context.config.confirmationPollingTimeoutSecond * 1000),\n share({\n connector: () => new ReplaySubject(1),\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: false,\n })\n );\n};\n\nexport interface OperationFactoryConfig {\n blockIdentifier?: string;\n}\n\nexport class OperationFactory {\n constructor(private context: Context) {}\n\n // Cache the last block for one second across all operations\n private sharedHeadObs = defer(() => {\n return createObservableFromSubscription(this.context.stream.subscribeBlock('head'));\n });\n\n private async createNewHeadObservable() {\n return createNewPollingBasedHeadObservable(this.sharedHeadObs, this.context);\n }\n\n private createPastBlockWalker(startBlock: string, count = 1) {\n return from(this.context.readProvider.getBlock(startBlock as BlockIdentifier)).pipe(\n switchMap((block) => {\n if (count === 1) {\n return of(block);\n }\n\n return range(block.header.level, count - 1).pipe(\n startWith(block),\n concatMap(async (level) => {\n return this.context.readProvider.getBlock(\n typeof level === 'number' ? level : level.header.level\n );\n })\n );\n })\n );\n }\n\n private async createHeadObservableFromConfig({ blockIdentifier }: OperationFactoryConfig) {\n const observableSequence: Observable<BlockResponse>[] = [];\n\n if (blockIdentifier) {\n observableSequence.push(this.createPastBlockWalker(blockIdentifier));\n }\n\n observableSequence.push(await this.createNewHeadObservable());\n\n return concat(...observableSequence);\n }\n\n async createOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<WalletOperation> {\n return new WalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createBatchOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<BatchWalletOperation> {\n return new BatchWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createTransactionOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<TransactionWalletOperation> {\n return new TransactionWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createDelegationOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<DelegationWalletOperation> {\n return new DelegationWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createOriginationOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<OriginationWalletOperation> {\n return new OriginationWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n\n async createIncreasePaidStorageOperation(\n hash: string,\n config: OperationFactoryConfig = {}\n ): Promise<IncreasePaidStorageWalletOperation> {\n return new IncreasePaidStorageWalletOperation(\n hash,\n this.context.clone(),\n await this.createHeadObservableFromConfig(config)\n );\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from '../operations/operations';\nimport { TzProvider } from './interface';\nimport {\n validateAddress,\n ValidationResult,\n validateKeyHash,\n InvalidKeyHashError,\n invalidDetail,\n} from '@taquito/utils';\nimport { InvalidAddressError } from '@taquito/core';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare';\n\nexport class RpcTzProvider extends Provider implements TzProvider {\n constructor(context: Context) {\n super(context);\n }\n\n private prepare = new PrepareProvider(this.context);\n\n async getBalance(address: string): Promise<BigNumber> {\n const addressValidation = validateAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(address, invalidDetail(addressValidation));\n }\n return this.context.readProvider.getBalance(address, 'head');\n }\n\n async getDelegate(address: string): Promise<string | null> {\n const addressValidation = validateAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(address, invalidDetail(addressValidation));\n }\n return this.context.readProvider.getDelegate(address, 'head');\n }\n\n async activate(pkh: string, secret: string) {\n const pkhValidation = validateKeyHash(pkh);\n if (pkhValidation !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh, invalidDetail(pkhValidation));\n }\n\n const prepared = await this.prepare.activate({ pkh, secret });\n\n const forgedBytes = await this.forge(prepared);\n const bytes = `${forgedBytes.opbytes}00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`;\n return new Operation(\n await this.rpc.injectOperation(bytes),\n { ...forgedBytes, opbytes: bytes },\n [],\n this.context.clone()\n );\n }\n}\n","const MINIMAL_FEE_MUTEZ = 100;\nconst MINIMAL_FEE_PER_BYTE_MUTEZ = 1;\nconst MINIMAL_FEE_PER_GAS_MUTEZ = 0.1;\n\nconst GAS_BUFFER = 100;\n\nexport interface EstimateProperties {\n milligasLimit: number;\n storageLimit: number;\n opSize: number;\n minimalFeePerStorageByteMutez: number;\n baseFeeMutez?: number;\n}\n\n/**\n * Examples of use :\n *\n * Estimate a transfer operation :\n * ```\n * // Assuming that provider and signer are already configured...\n *\n * const amount = 2;\n * const address = 'tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY';\n *\n * // Estimate gasLimit, storageLimit and fees for a transfer operation\n * const est = await Tezos.estimate.transfer({ to: address, amount: amount })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n *\n * Estimate a contract origination :\n * ```\n * // generic.json is referring to a Michelson Smart Contract\n *\n * const genericMultisigJSON = require('./generic.json')\n * const est = await Tezos.estimate.originate({\n * code: genericMultisigJSON,\n * storage: {\n * stored_counter: 0,\n * threshold: 1,\n * keys: ['edpkuLxx9PQD8fZ45eUzrK3BhfDZJHhBuK4Zi49DcEGANwd2rpX82t']\n * }\n * })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n */\n\nexport class Estimate {\n constructor(\n private readonly _milligasLimit: number | string,\n private readonly _storageLimit: number | string,\n public readonly opSize: number | string,\n private readonly minimalFeePerStorageByteMutez: number | string,\n /**\n * @description Base fee in mutez (1 mutez = 1e10−6 tez)\n */\n private readonly baseFeeMutez: number | string = MINIMAL_FEE_MUTEZ\n ) {}\n\n /**\n * @description The number of Mutez that will be burned for the storage of the [operation](https://tezos.gitlab.io/user/glossary.html#operations). (Storage + Allocation fees)\n */\n get burnFeeMutez() {\n return this.roundUp(Number(this.storageLimit) * Number(this.minimalFeePerStorageByteMutez));\n }\n\n /**\n * @description The limit on the amount of storage an [operation](https://tezos.gitlab.io/user/glossary.html#operations) can use.\n */\n get storageLimit() {\n const limit = Math.max(Number(this._storageLimit), 0);\n return limit > 0 ? limit : 0;\n }\n\n /**\n * @description The limit on the amount of [gas](https://tezos.gitlab.io/user/glossary.html#gas) a given operation can consume.\n */\n get gasLimit() {\n return this.roundUp(Number(this._milligasLimit) / 1000 + GAS_BUFFER);\n }\n\n private get operationFeeMutez() {\n return (\n (Number(this._milligasLimit) / 1000 + GAS_BUFFER) * MINIMAL_FEE_PER_GAS_MUTEZ +\n Number(this.opSize) * MINIMAL_FEE_PER_BYTE_MUTEZ\n );\n }\n\n private roundUp(nanotez: number) {\n return Math.ceil(Number(nanotez));\n }\n\n /**\n * @description Minimum fees for the [operation](https://tezos.gitlab.io/user/glossary.html#operations) according to [baker](https://tezos.gitlab.io/user/glossary.html#baker) defaults.\n */\n get minimalFeeMutez() {\n return this.roundUp(MINIMAL_FEE_MUTEZ + this.operationFeeMutez);\n }\n\n /**\n * @description The suggested fee for the operation which includes minimal fees and a small buffer.\n */\n get suggestedFeeMutez() {\n return this.roundUp(this.operationFeeMutez + MINIMAL_FEE_MUTEZ * 2);\n }\n\n /**\n * @description Fees according to your specified base fee will ensure that at least minimum fees are used.\n */\n get usingBaseFeeMutez() {\n return (\n Math.max(Number(this.baseFeeMutez), MINIMAL_FEE_MUTEZ) + this.roundUp(this.operationFeeMutez)\n );\n }\n\n /**\n * @description The sum of `minimalFeeMutez` + `burnFeeMutez`.\n */\n get totalCost() {\n return this.minimalFeeMutez + this.burnFeeMutez;\n }\n\n /**\n * @description Since Delphinet, consumed gas is provided in milligas for more precision.\n * This function returns an estimation of the gas that operation will consume in milligas.\n */\n get consumedMilligas() {\n return Number(this._milligasLimit);\n }\n\n static createEstimateInstanceFromProperties(estimateProperties: EstimateProperties[]) {\n let milligasLimit = 0;\n let storageLimit = 0;\n let opSize = 0;\n let minimalFeePerStorageByteMutez = 0;\n let baseFeeMutez: number | undefined;\n\n estimateProperties.forEach((estimate) => {\n milligasLimit += estimate.milligasLimit;\n storageLimit += estimate.storageLimit;\n opSize += estimate.opSize;\n minimalFeePerStorageByteMutez = Math.max(\n estimate.minimalFeePerStorageByteMutez,\n minimalFeePerStorageByteMutez\n );\n if (estimate.baseFeeMutez) {\n baseFeeMutez = baseFeeMutez ? baseFeeMutez + estimate.baseFeeMutez : estimate.baseFeeMutez;\n }\n });\n return new Estimate(\n milligasLimit,\n storageLimit,\n opSize,\n minimalFeePerStorageByteMutez,\n baseFeeMutez\n );\n }\n\n static createArrayEstimateInstancesFromProperties(estimateProperties: EstimateProperties[]) {\n return estimateProperties.map(\n (x) =>\n new Estimate(\n x.milligasLimit,\n x.storageLimit,\n x.opSize,\n x.minimalFeePerStorageByteMutez,\n x.baseFeeMutez\n )\n );\n }\n}\n","import { TaquitoError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates unable to get public key to estimate reveal operation in Wallet API\n */\nexport class RevealEstimateError extends TaquitoError {\n constructor() {\n super();\n this.name = 'RevealEstimateError';\n this.message = 'Public key is unknown, unable to estimate the reveal operation in Wallet API.';\n }\n}\n","import { PreapplyResponse, ConstantsResponse, RPCSimulateOperationParam } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { flattenErrors, flattenOperationResult, TezosOperationError } from '../operations/errors';\nimport {\n DelegateParams,\n isOpWithFee,\n OriginateParams,\n ParamsWithKind,\n RegisterDelegateParams,\n TransferParams,\n RevealParams,\n RegisterGlobalConstantParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n UpdateConsensusKeyParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n} from '../operations/types';\nimport { Estimate, EstimateProperties } from './estimate';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { validateAddress, ValidationResult, invalidDetail } from '@taquito/utils';\nimport { RevealEstimateError } from './errors';\nimport { ContractMethod, ContractMethodObject, ContractProvider } from '../contract';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare/prepare-provider';\nimport { PreparedOperation } from '../prepare';\nimport { InvalidAddressError, InvalidAmountError } from '@taquito/core';\n\nexport class RPCEstimateProvider extends Provider implements EstimationProvider {\n private readonly ALLOCATION_STORAGE = 257;\n private readonly ORIGINATION_STORAGE = 257;\n private readonly OP_SIZE_REVEAL = 128;\n\n private prepare = new PrepareProvider(this.context);\n\n private async getKeys(): Promise<{\n publicKeyHash: string;\n publicKey?: string;\n }> {\n const isSignerConfigured = this.context.isAnySignerConfigured();\n return {\n publicKeyHash: isSignerConfigured\n ? await this.signer.publicKeyHash()\n : await this.context.walletProvider.getPKH(),\n publicKey: isSignerConfigured ? await this.signer.publicKey() : undefined,\n };\n }\n\n private getEstimationPropertiesFromOperationContent(\n content: PreapplyResponse['contents'][0],\n size: number,\n costPerByte: BigNumber\n ): EstimateProperties {\n const operationResults = flattenOperationResult({ contents: [content] });\n let totalMilligas = 0;\n let totalStorage = 0;\n operationResults.forEach((result) => {\n totalStorage +=\n 'originated_contracts' in result && typeof result.originated_contracts !== 'undefined'\n ? result.originated_contracts.length * this.ORIGINATION_STORAGE\n : 0;\n totalStorage += 'allocated_destination_contract' in result ? this.ALLOCATION_STORAGE : 0;\n totalMilligas += Number(result.consumed_milligas) || 0;\n totalStorage +=\n 'paid_storage_size_diff' in result ? Number(result.paid_storage_size_diff) || 0 : 0;\n totalStorage +=\n 'storage_size' in result && 'global_address' in result\n ? Number(result.storage_size) || 0\n : 0;\n totalStorage += 'genesis_commitment_hash' in result ? Number(result.size) : 0;\n });\n\n if (isOpWithFee(content)) {\n return {\n milligasLimit: totalMilligas || 0,\n storageLimit: Number(totalStorage || 0),\n opSize: size,\n minimalFeePerStorageByteMutez: costPerByte.toNumber(),\n };\n } else {\n return {\n milligasLimit: 0,\n storageLimit: 0,\n opSize: size,\n minimalFeePerStorageByteMutez: costPerByte.toNumber(),\n baseFeeMutez: 0,\n };\n }\n }\n\n private async calculateEstimates(\n op: PreparedOperation,\n constants: Pick<ConstantsResponse, 'cost_per_byte' | 'smart_rollup_origination_size'>\n ) {\n const {\n opbytes,\n opOb: { branch, contents },\n } = await this.forge(op);\n const operation: RPCSimulateOperationParam = {\n operation: { branch, contents },\n chain_id: await this.context.readProvider.getChainId(),\n };\n\n const { opResponse } = await this.simulate(operation);\n const { cost_per_byte } = constants;\n const errors = [...flattenErrors(opResponse, 'backtracked'), ...flattenErrors(opResponse)];\n\n // Fail early in case of errors\n if (errors.length) {\n throw new TezosOperationError(errors, 'Error occurred during estimation');\n }\n\n let numberOfOps = 1;\n if (Array.isArray(op.opOb.contents) && op.opOb.contents.length > 1) {\n numberOfOps =\n opResponse.contents[0].kind === 'reveal'\n ? op.opOb.contents.length - 1\n : op.opOb.contents.length;\n }\n\n return opResponse.contents.map((x) => {\n return this.getEstimationPropertiesFromOperationContent(\n x,\n // TODO: Calculate a specific opSize for each operation.\n x.kind === 'reveal' ? this.OP_SIZE_REVEAL / 2 : opbytes.length / 2 / numberOfOps,\n cost_per_byte\n );\n });\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an origination operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param OriginationOperation Originate operation parameter\n */\n async originate(params: OriginateParams) {\n const preparedOperation = await this.prepare.originate(params);\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an transfer operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TransferOperation Originate operation parameter\n */\n async transfer({ fee, storageLimit, gasLimit, ...rest }: TransferParams) {\n const toValidation = validateAddress(rest.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.to, invalidDetail(toValidation));\n }\n const sourceValidation = validateAddress(rest.source ?? '');\n if (rest.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source, invalidDetail(sourceValidation));\n }\n if (rest.amount < 0) {\n throw new InvalidAmountError(rest.amount.toString());\n }\n const preparedOperation = await this.prepare.transaction({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a transferTicket operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TransferTicketParams operation parameter\n */\n async transferTicket({ fee, storageLimit, gasLimit, ...rest }: TransferTicketParams) {\n const destinationValidation = validateAddress(rest.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.destination, invalidDetail(destinationValidation));\n }\n const sourceValidation = validateAddress(rest.source ?? '');\n if (rest.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source, invalidDetail(sourceValidation));\n }\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.transferTicket({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async setDelegate({ fee, gasLimit, storageLimit, ...rest }: DelegateParams) {\n const sourceValidation = validateAddress(rest.source);\n if (rest.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source, invalidDetail(sourceValidation));\n }\n const delegateValidation = validateAddress(rest.delegate ?? '');\n if (rest.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.delegate, invalidDetail(delegateValidation));\n }\n\n const preparedOperation = await this.prepare.delegation({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a each operation in the batch\n *\n * @returns An array of Estimate objects. If a reveal operation is needed, the first element of the array is the Estimate for the reveal operation.\n */\n async batch(params: ParamsWithKind[]) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperations = await this.prepare.batch(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperations, protocolConstants);\n\n return Estimate.createArrayEstimateInstancesFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async registerDelegate(\n { fee, storageLimit, gasLimit, ...rest }: RegisterDelegateParams,\n source?: string\n ) {\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const checkSource = source || pkh;\n const preparedOperation = await this.prepare.registerDelegate(\n { fee, storageLimit, gasLimit, ...rest },\n checkSource\n );\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees to reveal the current account\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation or undefined if the account is already revealed\n *\n * @param Estimate\n */\n async reveal(params?: RevealParams) {\n const { publicKeyHash, publicKey } = await this.getKeys();\n if (!publicKey) {\n throw new RevealEstimateError();\n }\n if (await this.isAccountRevealRequired(publicKeyHash)) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = params\n ? await this.prepare.reveal(params)\n : await this.prepare.reveal({});\n\n const estimateProperties = await this.calculateEstimates(\n preparedOperation,\n protocolConstants\n );\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an registerGlobalConstant operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param params registerGlobalConstant operation parameter\n */\n async registerGlobalConstant({\n fee,\n storageLimit,\n gasLimit,\n ...rest\n }: RegisterGlobalConstantParams) {\n const preparedOperation = await this.prepare.registerGlobalConstant({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit, and fees for an increasePaidStorage operation\n *\n * @returns An estimation of gasLimit, storageLimit, and fees for the operation\n *\n * @param params increasePaidStorage operation parameters\n */\n async increasePaidStorage({ fee, storageLimit, gasLimit, ...rest }: IncreasePaidStorageParams) {\n if (rest.amount < 0) {\n throw new InvalidAmountError(rest.amount.toString());\n }\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.increasePaidStorage({\n fee,\n storageLimit,\n gasLimit,\n ...rest,\n });\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Update Consensus Key operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async updateConsensusKey(params: UpdateConsensusKeyParams) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.updateConsensusKey(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a smart_rollup_add_messages operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async smartRollupAddMessages(params: SmartRollupAddMessagesParams) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.smartRollupAddMessages(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Smart Rollup Originate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param SmartRollupOriginateParams\n */\n async smartRollupOriginate(params: SmartRollupOriginateParams) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.smartRollupOriginate(params);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for contract call\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the contract call\n *\n * @param Estimate\n */\n async contractCall(\n contractMethod: ContractMethod<ContractProvider> | ContractMethodObject<ContractProvider>\n ) {\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const preparedOperation = await this.prepare.contractCall(contractMethod);\n\n const estimateProperties = await this.calculateEstimates(preparedOperation, protocolConstants);\n\n if (preparedOperation.opOb.contents[0].kind === 'reveal') {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultDelegation,\n OperationContentsDelegation,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Delegation operation provide utility function to fetch newly issued delegation\n *\n * @warn Currently support only one delegation per operation\n */\nexport class DelegateOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsDelegation,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const delegationOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'delegation') as OperationContentsAndResultDelegation);\n const result = delegationOp && delegationOp.metadata && delegationOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get delegate() {\n return this.params.delegate;\n }\n\n get isRegisterOperation(): boolean {\n return this.delegate === this.source;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultOrigination,\n OperationContentsOrigination,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { DefaultContractType } from '../contract/contract';\nimport { RpcContractProvider } from '../contract/rpc-contract-provider';\nimport { OriginationOperationError } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n hasMetadataWithResult,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Origination operation provide utility function to fetch newly originated contract\n *\n * @warn Currently support only one origination per operation\n */\nexport class OriginationOperation<TContract extends DefaultContractType = DefaultContractType>\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n /**\n * @description Contract address of the newly originated contract\n */\n public readonly contractAddress?: string;\n\n constructor(\n hash: string,\n private readonly params: OperationContentsOrigination,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context,\n private contractProvider: RpcContractProvider\n ) {\n super(hash, raw, results, context);\n\n const originatedContracts = this.operationResults && this.operationResults.originated_contracts;\n if (Array.isArray(originatedContracts)) {\n this.contractAddress = originatedContracts[0];\n }\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get operationResults() {\n const originationOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'origination') as\n | OperationContentsAndResultOrigination\n | undefined);\n\n const result =\n originationOp &&\n hasMetadataWithResult(originationOp) &&\n originationOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get storageDiff() {\n const storageDiff = this.operationResults && this.operationResults.paid_storage_size_diff;\n return storageDiff ? storageDiff : undefined;\n }\n\n get storageSize() {\n const storageSize = this.operationResults && this.operationResults.storage_size;\n return storageSize ? storageSize : undefined;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n\n /**\n * @description Provide the contract abstract of the newly originated contract\n * @throws {@link OriginationOperationError}\n */\n async contract(confirmations?: number, timeout?: number) {\n if (!this.contractAddress) {\n throw new OriginationOperationError('No contract was originated in this operation');\n }\n\n await this.confirmation(confirmations, timeout);\n return this.contractProvider.at<TContract>(this.contractAddress);\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultRegisterGlobalConstant,\n OperationContentsRegisterGlobalConstant,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description RegisterGlobalConstantOperation provides utility functions to fetch a newly issued operation of kind register_global_constant\n */\nexport class RegisterGlobalConstantOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n /**\n * @description Hash (index) of the newly registered constant\n */\n public readonly globalConstantHash?: string;\n constructor(\n hash: string,\n private readonly params: OperationContentsRegisterGlobalConstant,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n\n this.globalConstantHash = this.operationResults && this.operationResults.global_address;\n }\n\n get operationResults() {\n const registerGlobalConstantOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'register_global_constant'\n ) as OperationContentsAndResultRegisterGlobalConstant);\n const result =\n registerGlobalConstantOp &&\n registerGlobalConstantOp.metadata &&\n registerGlobalConstantOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get registeredExpression() {\n return this.params.value;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultReveal,\n OperationContentsReveal,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Reveal operation provides utility functions to fetch a newly issued revelation\n */\nexport class RevealOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsReveal,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const revealOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'reveal') as OperationContentsAndResultReveal);\n return revealOp ? [revealOp] : [];\n }\n\n get status() {\n const operationResults = this.operationResults;\n const txResult = operationResults[0];\n if (txResult) {\n return txResult.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get publicKey() {\n return this.params.public_key;\n }\n\n private sumProp(arr: any[], prop: string) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return new BigNumber(this.consumedMilliGas).dividedBy(1000).toString();\n }\n\n get consumedMilliGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'consumed_milligas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(\n flattenOperationResult({ contents: this.operationResults }),\n 'paid_storage_size_diff'\n )\n );\n }\n\n get storageSize() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'storage_size')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.operationResults });\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultTransaction,\n OperationContentsTransaction,\n} from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult, MergedOperationResult } from './errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description Transaction operation provides utility functions to fetch a newly issued transaction\n *\n * @warn Currently supports one transaction per operation\n */\nexport class TransactionOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsTransaction,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const transactionOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'transaction'\n ) as OperationContentsAndResultTransaction);\n return transactionOp ? [transactionOp] : [];\n }\n\n get status() {\n const operationResults = this.operationResults;\n const txResult = operationResults[0];\n if (txResult) {\n return txResult.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n }\n\n get amount() {\n return new BigNumber(this.params.amount);\n }\n\n get destination() {\n return this.params.destination;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n private sumProp(arr: MergedOperationResult[], prop: keyof MergedOperationResult) {\n return arr.reduce((prev, current) => {\n return prop in current ? Number(current[prop]) + prev : prev;\n }, 0);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return new BigNumber(this.consumedMilliGas).dividedBy(1000).toString();\n }\n\n get consumedMilliGas() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'consumed_milligas')\n );\n }\n\n get storageDiff() {\n return String(\n this.sumProp(\n flattenOperationResult({ contents: this.operationResults }),\n 'paid_storage_size_diff'\n )\n );\n }\n\n get storageSize() {\n return String(\n this.sumProp(flattenOperationResult({ contents: this.operationResults }), 'storage_size')\n );\n }\n\n get errors() {\n return flattenErrors({ contents: this.operationResults });\n }\n}\n","import { Schema, BigMapKeyType } from '@taquito/michelson-encoder';\nimport BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\nimport { HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\n\nexport class BigMapAbstraction {\n constructor(private id: BigNumber, private schema: Schema, private provider: ContractProvider) {}\n\n /**\n *\n * @description Fetch one value in a big map\n *\n * @param keysToEncode Key to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a well formatted json object of a big map value or undefined if the key is not found in the big map\n *\n */\n async get<T>(keyToEncode: BigMapKeyType, block?: number) {\n try {\n const id = await this.provider.getBigMapKeyByID<T>(\n this.id.toString(),\n keyToEncode,\n this.schema,\n block\n );\n return id;\n } catch (e) {\n if (e instanceof HttpResponseError && e.status === STATUS_CODE.NOT_FOUND) {\n return undefined;\n } else {\n throw e;\n }\n }\n }\n\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it.\n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param keysToEncode Array of keys to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n async getMultipleValues<T>(keysToEncode: Array<BigMapKeyType>, block?: number, batchSize = 5) {\n return this.provider.getBigMapKeysByID<T>(\n this.id.toString(),\n keysToEncode,\n this.schema,\n block,\n batchSize\n );\n }\n\n toJSON() {\n return this.id.toString();\n }\n\n toString() {\n return this.id.toString();\n }\n}\n","import { Schema, Semantic } from '@taquito/michelson-encoder';\nimport { BigMapAbstraction } from './big-map';\nimport { ContractProvider } from './interface';\nimport BigNumber from 'bignumber.js';\nimport { MichelsonV1Expression } from '@taquito/rpc';\nimport { SaplingStateAbstraction } from './sapling-state-abstraction';\n\n// Override the default michelson encoder semantic to provide richer abstraction over storage properties\nexport const smartContractAbstractionSemantic: (p: ContractProvider) => Semantic = (\n provider: ContractProvider\n) => ({\n // Provide a specific abstraction for BigMaps\n big_map: (val: MichelsonV1Expression, code: MichelsonV1Expression) => {\n if (!val || !('int' in val) || val.int === undefined) {\n // Return an empty object in case of missing big map ID\n return {};\n } else {\n const schema = new Schema(code);\n return new BigMapAbstraction(new BigNumber(val.int), schema, provider);\n }\n },\n sapling_state: (val: MichelsonV1Expression) => {\n if (!val || !('int' in val) || val.int === undefined) {\n // Return an empty object in case of missing sapling state ID\n return {};\n } else {\n return new SaplingStateAbstraction(new BigNumber(val.int), provider);\n }\n }\n /*\n // TODO: embed useful other abstractions\n 'contract': () => {},\n 'address': () => {}\n */\n});\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultBallot,\n OperationContentsBallot,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n\n/**\n *\n * @description BallotOperation provides utility functions to fetch a new operation of kind ballot\n *\n */\nexport class BallotOperation extends Operation {\n constructor(\n hash: string,\n private readonly params: OperationContentsBallot,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const ballotOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'ballot') as OperationContentsAndResultBallot);\n const result = ballotOp;\n\n return result ? result : undefined;\n }\n\n get period() {\n return this.operationResults?.period;\n }\n\n get proposal() {\n return this.params.proposal;\n }\n\n get ballot() {\n return this.params.ballot;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultDrainDelegate,\n OperationContentsDrainDelegate,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n\n/**\n *\n * @description DrainDelegateOperation provides utility functions to fetch a new operation of kind drain_delegate\n *\n */\n\nexport class DrainDelegateOperation extends Operation {\n constructor(\n hash: string,\n private readonly params: OperationContentsDrainDelegate,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const drainDelegateOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'drain_delegate'\n ) as OperationContentsAndResultDrainDelegate);\n const result =\n drainDelegateOp && drainDelegateOp.metadata && drainDelegateOp.metadata.balance_updates;\n return result ? result : undefined;\n }\n\n get consensusKey() {\n return this.params.consensus_key;\n }\n\n get delegate() {\n return this.params.delegate;\n }\n\n get destination() {\n return this.params.destination;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultTransferTicket,\n OperationContentsTransferTicket,\n OpKind,\n} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from '../operations';\nimport {\n GasConsumingOperation,\n StorageConsumingOperation,\n FeeConsumingOperation,\n ForgedBytes,\n} from './types';\n\n/**\n *\n * @description Transfer tickets from a Tezos address (tz1, tz2 or tz3) to a smart contract address (KT1) (everything on layer 1 at this step)\n *\n * @warn Currently only supports one L2 ticket holder transfer at once. ie. one collection of tickets owned by tz1, tz2 or tz3 to a smart contract.\n */\nexport class TransferTicketOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsTransferTicket,\n private readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const transferOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === OpKind.TRANSFER_TICKET\n ) as OperationContentsAndResultTransferTicket);\n const result = transferOp && transferOp.metadata && transferOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedGas() {\n BigNumber.config({ DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_UP });\n return this.consumedMilliGas\n ? new BigNumber(this.consumedMilliGas).dividedBy(1000).toString()\n : undefined;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultIncreasePaidStorage,\n OperationContentsIncreasePaidStorage,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n *\n * @description IncreasePaidStorageOperation provides utility functions to fetch a new operation of kind increase_paid_storage\n *\n */\n\nexport class IncreasePaidStorageOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsIncreasePaidStorage,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const increasePaidStorageOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'increase_paid_storage'\n ) as OperationContentsAndResultIncreasePaidStorage);\n const result =\n increasePaidStorageOp &&\n increasePaidStorageOp.metadata &&\n increasePaidStorageOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get amount() {\n return this.params.amount;\n }\n\n get destination() {\n return this.params.destination;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultProposals,\n OperationContentsProposals,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n\n/**\n *\n * @description ProposalsOperation provides utility functions to fetch a new operation of kind proposals\n *\n */\nexport class ProposalsOperation extends Operation {\n constructor(\n hash: string,\n private readonly params: OperationContentsProposals,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const proposalsOp =\n Array.isArray(this.results) &&\n (this.results.find((op) => op.kind === 'proposals') as OperationContentsAndResultProposals);\n const result = proposalsOp;\n\n return result ? result : undefined;\n }\n\n get proposals() {\n return this.params.proposals;\n }\n\n get period() {\n return this.operationResults?.period;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultUpdateConsensusKey,\n OperationContentsUpdateConsensusKey,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n *\n * @description UpdateConsensusKeyOperation provides utility to fetch properties for Operation of kind UpdateConsensusKey\n *\n */\nexport class UpdateConsensusKeyOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsUpdateConsensusKey,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const updateConsensusKeyOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'update_consensus_key'\n ) as OperationContentsAndResultUpdateConsensusKey);\n const result =\n updateConsensusKeyOp &&\n updateConsensusKeyOp.metadata &&\n updateConsensusKeyOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get pk() {\n return this.params.pk;\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultSmartRollupAddMessages,\n OperationContentsSmartRollupAddMessages,\n} from '@taquito/rpc';\n\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description SmartRollupAddMessagesOperation provides utility to fetch properties of SmartRollupAddMessages\n */\n\nexport class SmartRollupAddMessagesOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsSmartRollupAddMessages,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const smartRollupAddMessagesOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'smart_rollup_add_messages'\n ) as OperationContentsAndResultSmartRollupAddMessages);\n const result =\n smartRollupAddMessagesOp &&\n smartRollupAddMessagesOp.metadata &&\n smartRollupAddMessagesOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get message() {\n return this.params.message;\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import {\n OperationContentsAndResult,\n OperationContentsAndResultSmartRollupOriginate,\n OperationContentsSmartRollupOriginate,\n OpKind,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n *\n * @description SmartRollupOriginate Operation provides utility to fetch properties for Operation of kind SmartRollupOriginate\n *\n */\nexport class SmartRollupOriginateOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: OperationContentsSmartRollupOriginate,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n }\n\n get operationResults() {\n const smartRollupOriginateOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === OpKind.SMART_ROLLUP_ORIGINATE\n ) as OperationContentsAndResultSmartRollupOriginate);\n const result =\n smartRollupOriginateOp &&\n smartRollupOriginateOp.metadata &&\n smartRollupOriginateOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get fee() {\n return Number(this.params.fee);\n }\n\n get gasLimit() {\n return Number(this.params.gas_limit);\n }\n\n get storageLimit() {\n return Number(this.params.storage_limit);\n }\n\n get consumedMilliGas() {\n return this.operationResults?.consumed_milligas;\n }\n\n get pvmKind() {\n return this.params.pvm_kind;\n }\n\n get kernel() {\n return this.params.kernel;\n }\n\n get originationProof() {\n return this.params.origination_proof;\n }\n\n get errors() {\n return this.operationResults?.errors;\n }\n}\n","import { HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport { BigMapKeyType, MichelsonMap, MichelsonMapKey, Schema } from '@taquito/michelson-encoder';\nimport {\n OpKind,\n OperationContentsBallot,\n OperationContentsDelegation,\n OperationContentsDrainDelegate,\n OperationContentsFailingNoop,\n OperationContentsIncreasePaidStorage,\n OperationContentsOrigination,\n OperationContentsProposals,\n OperationContentsRegisterGlobalConstant,\n OperationContentsReveal,\n OperationContentsSmartRollupAddMessages,\n OperationContentsSmartRollupOriginate,\n OperationContentsTransaction,\n OperationContentsTransferTicket,\n OperationContentsUpdateConsensusKey,\n ScriptResponse,\n} from '@taquito/rpc';\nimport {\n encodeExpr,\n invalidDetail,\n validateAddress,\n validateContractAddress,\n ValidationResult,\n} from '@taquito/utils';\nimport {\n InvalidAddressError,\n InvalidContractAddressError,\n InvalidAmountError,\n} from '@taquito/core';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { DelegateOperation } from '../operations/delegate-operation';\nimport { OriginationOperation } from '../operations/origination-operation';\nimport { RegisterGlobalConstantOperation } from '../operations/register-global-constant-operation';\nimport { RevealOperation } from '../operations/reveal-operation';\nimport { TransactionOperation } from '../operations/transaction-operation';\nimport {\n DelegateParams,\n OriginateParams,\n ParamsWithKind,\n RegisterDelegateParams,\n RegisterGlobalConstantParams,\n RevealParams,\n TransferParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n DrainDelegateParams,\n BallotParams,\n ProposalsParams,\n UpdateConsensusKeyParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n FailingNoopParams,\n} from '../operations/types';\nimport { DefaultContractType, ContractStorageType, ContractAbstraction } from './contract';\nimport { InvalidDelegationSource, RevealOperationError } from './errors';\nimport { ContractProvider, ContractSchema, StorageProvider } from './interface';\nimport { smartContractAbstractionSemantic } from './semantic';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { TransferTicketOperation } from '../operations/transfer-ticket-operation';\nimport { IncreasePaidStorageOperation } from '../operations/increase-paid-storage-operation';\nimport { BallotOperation } from '../operations/ballot-operation';\nimport { DrainDelegateOperation } from '../operations/drain-delegate-operation';\nimport { ProposalsOperation } from '../operations/proposals-operation';\nimport { UpdateConsensusKeyOperation } from '../operations/update-consensus-key-operation';\nimport { SmartRollupAddMessagesOperation } from '../operations/smart-rollup-add-messages-operation';\nimport { SmartRollupOriginateOperation } from '../operations/smart-rollup-originate-operation';\nimport { Provider } from '../provider';\nimport { PrepareProvider } from '../prepare';\nimport { FailingNoopOperation } from '../operations/failing-noop-operation';\n\nexport class RpcContractProvider extends Provider implements ContractProvider, StorageProvider {\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n contractProviderTypeSymbol = Symbol.for('taquito-contract-provider-type-symbol');\n\n private prepare = new PrepareProvider(this.context);\n /**\n *\n * @description Return a well formatted json object of the contract storage\n *\n * @param contract contract address you want to get the storage from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n * @throws {@link InvalidContractAddressError}\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n async getStorage<T>(contract: string, schema?: ContractSchema): Promise<T> {\n const contractValidation = validateContractAddress(contract);\n if (contractValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract, invalidDetail(contractValidation));\n }\n const script = await this.context.readProvider.getScript(contract, 'head');\n if (!schema) {\n schema = script;\n }\n\n let contractSchema: Schema;\n if (Schema.isSchema(schema as Schema)) {\n contractSchema = schema as Schema;\n } else {\n contractSchema = Schema.fromRPCResponse({ script: schema as ScriptResponse });\n }\n\n return contractSchema.Execute(script.storage, smartContractAbstractionSemantic(this)) as T; // Cast into T because only the caller can know the true type of the storage\n }\n\n /**\n *\n * @description Return a well formatted json object of the contract big map storage\n *\n * @param contract contract address you want to get the storage from\n * @param key contract big map key to fetch value from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n * @throws {@link InvalidContractAddressError}\n * @deprecated Deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n async getBigMapKey<T>(contract: string, key: string, schema?: ContractSchema): Promise<T> {\n const contractValidation = validateContractAddress(contract);\n if (contractValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract, invalidDetail(contractValidation));\n }\n if (!schema) {\n schema = (await this.rpc.getContract(contract)).script;\n }\n\n let contractSchema: Schema;\n if (Schema.isSchema(schema as Schema)) {\n contractSchema = schema as Schema;\n } else {\n contractSchema = Schema.fromRPCResponse({ script: schema as ScriptResponse });\n }\n\n const encodedKey = contractSchema.EncodeBigMapKey(key);\n\n const val = await this.rpc.getBigMapKey(contract, encodedKey);\n\n return contractSchema.ExecuteOnBigMapValue(val) as T; // Cast into T because only the caller can know the true type of the storage\n }\n\n /**\n *\n * @description Return a well formatted json object of a big map value\n *\n * @param id Big Map ID\n * @param keyToEncode key to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n async getBigMapKeyByID<T>(\n id: string,\n keyToEncode: BigMapKeyType,\n schema: Schema,\n block?: number\n ): Promise<T> {\n const { key, type } = schema.EncodeBigMapKey(keyToEncode);\n const { packed } = await this.context.packer.packData({ data: key, type });\n\n const encodedExpr = encodeExpr(packed);\n\n const bigMapValue = block\n ? await this.context.readProvider.getBigMapValue(\n { id: id.toString(), expr: encodedExpr },\n block\n )\n : await this.context.readProvider.getBigMapValue(\n { id: id.toString(), expr: encodedExpr },\n 'head'\n );\n\n return schema.ExecuteOnBigMapValue(bigMapValue, smartContractAbstractionSemantic(this)) as T;\n }\n\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it.\n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param id Big Map ID\n * @param keys Array of keys to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n async getBigMapKeysByID<T>(\n id: string,\n keys: Array<BigMapKeyType>,\n schema: Schema,\n block?: number,\n batchSize = 5\n ): Promise<MichelsonMap<MichelsonMapKey, T | undefined>> {\n const level = await this.getBlockForRequest(keys, block);\n const bigMapValues = new MichelsonMap<MichelsonMapKey, T | undefined>();\n\n // Execute batch of promises in series\n let position = 0;\n let results: Array<T | undefined> = [];\n\n while (position < keys.length) {\n const keysBatch = keys.slice(position, position + batchSize);\n const batch = keysBatch.map((keyToEncode) =>\n this.getBigMapValueOrUndefined<T>(keyToEncode, id, schema, level)\n );\n results = [...results, ...(await Promise.all(batch))];\n position += batchSize;\n }\n\n for (let i = 0; i < results.length; i++) {\n bigMapValues.set(keys[i], results[i]);\n }\n\n return bigMapValues;\n }\n\n private async getBlockForRequest(keys: Array<BigMapKeyType>, block?: number) {\n return keys.length === 1 || typeof block !== 'undefined'\n ? block\n : await this.context.readProvider.getBlockLevel('head');\n }\n\n private async getBigMapValueOrUndefined<T>(\n keyToEncode: BigMapKeyType,\n id: string,\n schema: Schema,\n level?: number\n ) {\n try {\n return await this.getBigMapKeyByID<T>(id, keyToEncode, schema, level);\n } catch (ex) {\n if (ex instanceof HttpResponseError && ex.status === STATUS_CODE.NOT_FOUND) {\n return;\n } else {\n throw ex;\n }\n }\n }\n\n /**\n *\n * @description Return a well formatted json object of a sapling state\n *\n * @param id Sapling state ID\n * @param block optional block level to fetch the value from\n *\n */\n async getSaplingDiffByID(id: string, block?: number) {\n const saplingState = block\n ? await this.context.readProvider.getSaplingDiffById({ id: id.toString() }, block)\n : await this.context.readProvider.getSaplingDiffById({ id: id.toString() }, 'head');\n return saplingState;\n }\n\n /**\n *\n * @description Originate a new contract according to the script in parameters. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @warn You cannot specify storage and init at the same time (use init to pass the raw michelson representation of storage)\n *\n * @param OriginationOperation Originate operation parameter\n */\n async originate<TContract extends DefaultContractType = DefaultContractType>(\n params: OriginateParams<ContractStorageType<TContract>>\n ) {\n const estimate = await this.estimate(params, this.estimator.originate.bind(this.estimator));\n const preparedOrigination = await this.prepare.originate({ ...params, ...estimate });\n\n const content = preparedOrigination.opOb.contents.find(\n (op) => op.kind === OpKind.ORIGINATION\n ) as OperationContentsOrigination;\n const forgedOrigination = await this.forge(preparedOrigination);\n\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(forgedOrigination);\n return new OriginationOperation<TContract>(\n hash,\n content,\n forgedBytes,\n opResponse,\n context,\n this\n );\n }\n\n /**\n *\n * @description Set the delegate for a contract. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param SetDelegate operation parameter\n */\n async setDelegate(params: DelegateParams) {\n const sourceValidation = validateAddress(params.source);\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const delegateValidation = validateAddress(params.delegate ?? '');\n if (params.delegate && delegateValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate, invalidDetail(delegateValidation));\n }\n\n // Since babylon delegation source cannot smart contract\n if (/kt1/i.test(params.source)) {\n throw new InvalidDelegationSource(params.source);\n }\n\n const publicKeyHash = await this.signer.publicKeyHash();\n const sourceOrDefault = params.source || publicKeyHash;\n\n const estimate = await this.estimate(params, this.estimator.setDelegate.bind(this.estimator));\n const preparedDelegation = await this.prepare.delegation({ ...params, ...estimate });\n\n const content = preparedDelegation.opOb.contents.find(\n (op) => op.kind === OpKind.DELEGATION\n ) as OperationContentsDelegation;\n\n const opBytes = await this.forge(preparedDelegation);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(hash, content, sourceOrDefault, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Register the current address as delegate. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RegisterDelegate operation parameter\n */\n async registerDelegate(params: RegisterDelegateParams) {\n const estimate = await this.estimate(\n params,\n this.estimator.registerDelegate.bind(this.estimator)\n );\n const source = await this.signer.publicKeyHash();\n\n const prepared = await this.prepare.registerDelegate({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.DELEGATION\n ) as OperationContentsDelegation;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(hash, content, source, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Transfer tz from current address to a specific address. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param Transfer operation parameter\n */\n async transfer(params: TransferParams) {\n const toValidation = validateAddress(params.to);\n if (toValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to, invalidDetail(toValidation));\n }\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n if (params.amount < 0) {\n throw new InvalidAmountError(params.amount.toString());\n }\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(params, this.estimator.transfer.bind(this.estimator));\n\n const source = params.source || publicKeyHash;\n const prepared = await this.prepare.transaction({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.TRANSACTION\n ) as OperationContentsTransaction;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransactionOperation(hash, content, source, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Transfer Tickets to a smart contract address\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param TransferTicketParams operation parameter\n */\n async transferTicket(params: TransferTicketParams) {\n const destinationValidation = validateAddress(params.destination);\n if (destinationValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, invalidDetail(destinationValidation));\n }\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n\n const publicKeyHash = await this.signer.publicKeyHash();\n const source = params.source ?? publicKeyHash;\n\n const estimate = await this.estimate(\n params,\n this.estimator.transferTicket.bind(this.estimator)\n );\n\n const prepared = await this.prepare.transferTicket({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.TRANSFER_TICKET\n ) as OperationContentsTransferTicket;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransferTicketOperation(hash, content, source, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Reveal the current address. Will throw an error if the address is already revealed.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RevealParams operation parameter\n */\n async reveal(params: RevealParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimateReveal = await this.estimator.reveal(params);\n if (estimateReveal) {\n const estimated = await this.estimate(params, async () => estimateReveal);\n const prepared = await this.prepare.reveal({ ...params, ...estimated });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.REVEAL\n ) as OperationContentsReveal;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RevealOperation(hash, content, publicKeyHash, forgedBytes, opResponse, context);\n } else {\n throw new RevealOperationError(\n `The publicKeyHash '${publicKeyHash}' has already been revealed.`\n );\n }\n }\n\n /**\n *\n * @description Register a Micheline expression in a global table of constants. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params registerGlobalConstant operation parameter\n */\n async registerGlobalConstant(params: RegisterGlobalConstantParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.registerGlobalConstant.bind(this.estimator)\n );\n\n const prepared = await this.prepare.registerGlobalConstant({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.REGISTER_GLOBAL_CONSTANT\n ) as OperationContentsRegisterGlobalConstant;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RegisterGlobalConstantOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description Increase the paid storage of a smart contract\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params increasePaidStorage operation parameter\n */\n async increasePaidStorage(params: IncreasePaidStorageParams) {\n if (params.amount < 0) {\n throw new InvalidAmountError(params.amount.toString());\n }\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.increasePaidStorage.bind(this.estimator)\n );\n\n const prepared = await this.prepare.increasePaidStorage({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.INCREASE_PAID_STORAGE\n ) as OperationContentsIncreasePaidStorage;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new IncreasePaidStorageOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description Transfers the spendable balance of the delegate to destination when consensus_key is the active consensus key of delegate\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params drainDelegate operation parameter\n */\n async drainDelegate(params: DrainDelegateParams) {\n const prepared = await this.prepare.drainDelegate(params);\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.DRAIN_DELEGATE\n ) as OperationContentsDrainDelegate;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DrainDelegateOperation(hash, content, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Submit a ballot vote to a specified proposal\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param BallotParams Ballot operation parameter\n */\n async ballot(params: BallotParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const source = params.source ?? publicKeyHash;\n\n const prepared = await this.prepare.ballot({ ...params, source });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.BALLOT\n ) as OperationContentsBallot;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BallotOperation(hash, content, publicKeyHash, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Submit or upvote a proposal during the Proposal period\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param ProposalsParams Proposals operation parameter\n */\n async proposals(params: ProposalsParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const sourceValidation = validateAddress(params.source ?? '');\n if (params.source && sourceValidation !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, invalidDetail(sourceValidation));\n }\n const source = params.source ?? publicKeyHash;\n\n const prepared = await this.prepare.proposals({ ...params, source });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.PROPOSALS\n ) as OperationContentsProposals;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new ProposalsOperation(hash, content, publicKeyHash, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Updates the consensus key of the baker to public_key starting from the current cycle plus PRESERVED_CYCLES + 1\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param UpdateConsensusKeyParams\n */\n async updateConsensusKey(params: UpdateConsensusKeyParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.updateConsensusKey.bind(this.estimator)\n );\n\n const prepared = await this.prepare.updateConsensusKey({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.UPDATE_CONSENSUS_KEY\n ) as OperationContentsUpdateConsensusKey;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new UpdateConsensusKeyOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n * @description Adds messages to the rollup inbox that can be executed/claimed after it gets cemented\n * @param SmartRollupAddMessagesParams\n * @returns An operation handle with results from the RPC node\n */\n async smartRollupAddMessages(params: SmartRollupAddMessagesParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.smartRollupAddMessages.bind(this.estimator)\n );\n\n const prepared = await this.prepare.smartRollupAddMessages({ ...params, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.SMART_ROLLUP_ADD_MESSAGES\n ) as OperationContentsSmartRollupAddMessages;\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n\n return new SmartRollupAddMessagesOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n * @description Creates a smart rollup originate operation\n * @param SmartRollupOriginateParams\n * @returns An operation handle with results from the RPC node\n */\n async smartRollupOriginate(params: SmartRollupOriginateParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.smartRollupOriginate.bind(this.estimator)\n );\n const originationProof = await this.rpc.getOriginationProof({\n kind: params.pvmKind,\n kernel: params.kernel,\n });\n const completeParams = { ...params, originationProof };\n\n const prepared = await this.prepare.smartRollupOriginate({ ...completeParams, ...estimate });\n const content = prepared.opOb.contents.find(\n (op) => op.kind === OpKind.SMART_ROLLUP_ORIGINATE\n ) as OperationContentsSmartRollupOriginate;\n\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n\n return new SmartRollupOriginateOperation(\n hash,\n content,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description A failing_noop operation that is guaranteed to fail.\n *\n * @returns A FailingNoopOperation object representing the signed failing_noop operation\n *\n * @param params failingNoop operation parameter\n */\n async failingNoop(params: FailingNoopParams): Promise<FailingNoopOperation> {\n const op: OperationContentsFailingNoop = {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n };\n const hash = await this.context.readProvider.getBlockHash(params.basedOnBlock);\n\n const forged = await this.context.forger.forge({\n branch: hash,\n contents: [op],\n });\n const { prefixSig } = await this.signer.sign(forged, new Uint8Array([3]));\n return {\n signature: prefixSig,\n bytes: forged,\n signedContent: {\n branch: hash,\n contents: [\n {\n kind: OpKind.FAILING_NOOP,\n arbitrary: params.arbitrary,\n },\n ],\n },\n };\n }\n\n /**\n *\n * @description Create an smart contract abstraction for the address specified.\n *\n * @param address Smart contract address\n * @throws {@link InvalidContractAddressError}\n */\n async at<T extends DefaultContractType = DefaultContractType>(\n address: string,\n contractAbstractionComposer: ContractAbstractionComposer<T> = (x) => x as any\n ): Promise<T> {\n const addressValidation = validateContractAddress(address);\n if (addressValidation !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address, invalidDetail(addressValidation));\n }\n const rpc = this.context.withExtensions().rpc;\n const readProvider = this.context.withExtensions().readProvider;\n const script = await readProvider.getScript(address, 'head');\n const entrypoints = await readProvider.getEntrypoints(address);\n const abs = new ContractAbstraction(\n address,\n script,\n this,\n this,\n entrypoints,\n rpc,\n readProvider\n );\n return contractAbstractionComposer(abs, this.context);\n }\n\n /**\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @returns A batch object from which we can add more operation or send a command to execute the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]) {\n const batch = new OperationBatch(this.context, this.estimator);\n\n if (Array.isArray(params)) {\n batch.with(params);\n }\n\n return batch;\n }\n}\n\ntype ContractAbstractionComposer<T> = (\n abs: ContractAbstraction<ContractProvider>,\n context: Context\n) => T;\n","import { Context } from '../context';\nimport { ParserProvider } from './interface';\nimport { Expr, GlobalConstantHashAndValue, Parser, Prim, ProtocolID } from '@taquito/michel-codec';\nimport { OriginateParams } from '../operations/types';\nimport { InvalidInitParameter, InvalidCodeParameter } from '../contract/errors';\nimport { Schema } from '@taquito/michelson-encoder';\nimport { MichelsonV1Expression, MichelsonV1ExpressionBase } from '@taquito/rpc';\nimport { Protocols } from '../constants';\n\nexport class MichelCodecParser implements ParserProvider {\n constructor(private context: Context) {}\n\n private async getNextProto(): Promise<ProtocolID> {\n if (!this.context.proto) {\n const nextProto = await this.context.readProvider.getNextProtocol('head');\n this.context.proto = nextProto as Protocols;\n }\n return this.context.proto as ProtocolID;\n }\n\n async parseScript(src: string): Promise<Expr[] | null> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseScript(src);\n }\n\n async parseMichelineExpression(src: string): Promise<Expr | null> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseMichelineExpression(src);\n }\n\n async parseJSON(src: object): Promise<Expr> {\n const parser = new Parser({ protocol: await this.getNextProto() });\n return parser.parseJSON(src);\n }\n\n async prepareCodeOrigination(params: OriginateParams): Promise<OriginateParams> {\n const parsedParams = params;\n parsedParams.code = await this.formatCodeParam(params.code);\n if (params.init) {\n parsedParams.init = await this.formatInitParam(params.init);\n } else if (params.storage) {\n const storageType = (parsedParams.code as Expr[]).find(\n (p): p is Prim => 'prim' in p && p.prim === 'storage'\n );\n if (!storageType?.args) {\n throw new InvalidCodeParameter(\n 'The storage section is missing from the script',\n params.code\n );\n }\n const schema = new Schema(storageType.args[0] as MichelsonV1Expression);\n const globalconstantsHashAndValue = await this.findGlobalConstantsHashAndValue(schema);\n\n if (Object.keys(globalconstantsHashAndValue).length !== 0) {\n // If there are global constants in the storage part of the contract code,\n // they need to be locally expanded in order to encode the storage arguments\n const p = new Parser({ expandGlobalConstant: globalconstantsHashAndValue });\n const storageTypeNoGlobalConst = p.parseJSON(storageType.args[0]);\n const schemaNoGlobalConst = new Schema(storageTypeNoGlobalConst);\n parsedParams.init = schemaNoGlobalConst.Encode(params.storage);\n } else {\n parsedParams.init = schema.Encode(params.storage);\n }\n delete parsedParams.storage;\n }\n return parsedParams;\n }\n\n private async formatCodeParam(code: string | object[]) {\n let parsedCode: Expr[];\n if (typeof code === 'string') {\n const c = await this.parseScript(code);\n if (c === null) {\n throw new InvalidCodeParameter('Unable to parse', code);\n }\n parsedCode = c;\n } else {\n const c = await this.parseJSON(code);\n const order = ['parameter', 'storage', 'code'];\n // Ensure correct ordering for RPC\n parsedCode = (c as Prim[]).sort((a, b) => order.indexOf(a.prim) - order.indexOf(b.prim));\n }\n return parsedCode;\n }\n\n private async formatInitParam(init: string | object) {\n let parsedInit: Expr;\n if (typeof init === 'string') {\n const c = await this.parseMichelineExpression(init);\n if (c === null) {\n throw new InvalidInitParameter('Invalid init parameter', init);\n }\n parsedInit = c;\n } else {\n parsedInit = await this.parseJSON(init);\n }\n return parsedInit;\n }\n\n private async findGlobalConstantsHashAndValue(schema: Schema) {\n const globalConstantTokens = schema.findToken('constant');\n const globalConstantsHashAndValue: GlobalConstantHashAndValue = {};\n\n if (globalConstantTokens.length !== 0) {\n for (const token of globalConstantTokens) {\n const tokenArgs = token.tokenVal.args;\n if (tokenArgs) {\n const expression = tokenArgs[0] as MichelsonV1ExpressionBase;\n if (expression.string) {\n const hash: string = expression.string;\n const michelineValue =\n await this.context.globalConstantsProvider.getGlobalConstantByHash(hash);\n Object.assign(globalConstantsHashAndValue, {\n [hash]: michelineValue,\n });\n }\n }\n }\n }\n return globalConstantsHashAndValue;\n }\n}\n","import { Packer } from './interface';\nimport { Context } from '../context';\nimport { PackDataParams, PackDataResponse } from '@taquito/rpc';\n\nexport class RpcPacker implements Packer {\n constructor(private context: Context) {}\n \n async packData(data: PackDataParams): Promise<PackDataResponse> {\n return this.context.rpc.packData(data);\n }\n}\n","import { TaquitoError, TezosToolkitConfigError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates that a global constant does not exist\n */\nexport class GlobalConstantNotFound extends TaquitoError {\n constructor(public readonly hash: string) {\n super();\n this.name = 'GlobalConstantNotFound';\n this.message = `Please load the value associated with the constant ${hash} using the loadGlobalConstant method of the DefaultGlobalConstantsProvider.`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates the global constant provider not being configured under TezosToolkit\n */\nexport class UnconfiguredGlobalConstantsProviderError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'UnconfiguredGlobalConstantsProviderError';\n this.message =\n 'No global constants provider has been configured. Please configure one by calling setGlobalConstantsProvider({globalConstantsProvider}) on your TezosToolkit instance.';\n }\n}\n","import { Expr } from '@taquito/michel-codec';\nimport { UnconfiguredGlobalConstantsProviderError } from './errors';\nimport { GlobalConstantHash, GlobalConstantsProvider } from './interface-global-constants-provider';\n\nexport class NoopGlobalConstantsProvider implements GlobalConstantsProvider {\n async getGlobalConstantByHash(_hash: GlobalConstantHash): Promise<Expr> {\n throw new UnconfiguredGlobalConstantsProviderError();\n }\n}\n","import {\n BlockResponse,\n EntrypointsResponse,\n MichelsonV1Expression,\n RpcClientInterface,\n SaplingDiffResponse,\n ScriptedContracts,\n} from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { BigMapQuery, BlockIdentifier, SaplingStateQuery, TzReadProvider } from './interface';\n\n/**\n * @description Converts calls from TzReadProvider into calls to the wrapped RpcClient in a format it can understand.\n */\nexport class RpcReadAdapter implements TzReadProvider {\n constructor(private rpc: RpcClientInterface) {}\n\n /**\n * @description Access the balance of a contract.\n * @param address address from which we want to retrieve the balance\n * @param block from which we want to retrieve the balance\n * @returns the balance in mutez\n */\n async getBalance(address: string, block: BlockIdentifier): Promise<BigNumber> {\n return this.rpc.getBalance(address, { block: String(block) });\n }\n\n /**\n * @description Access the delegate of a contract, if any.\n * @param address contract address from which we want to retrieve the delegate (baker)\n * @param block from which we want to retrieve the delegate\n * @returns the public key hash of the delegate or null if no delegate\n */\n async getDelegate(address: string, block: BlockIdentifier): Promise<string | null> {\n return this.rpc.getDelegate(address, { block: String(block) });\n }\n\n /**\n * @description Access the next protocol hash\n * @param block from which we want to retrieve the next protocol hash\n */\n async getNextProtocol(block: BlockIdentifier): Promise<string> {\n const protocols = await this.rpc.getProtocols({ block: String(block) });\n return protocols.next_protocol;\n }\n\n /**\n * @description Access protocol constants used in Taquito\n * @param block from which we want to retrieve the constants\n */\n async getProtocolConstants(block: BlockIdentifier): Promise<{\n time_between_blocks?: BigNumber[];\n minimal_block_delay?: BigNumber | undefined;\n hard_gas_limit_per_operation: BigNumber;\n hard_gas_limit_per_block: BigNumber;\n hard_storage_limit_per_operation: BigNumber;\n cost_per_byte: BigNumber;\n tx_rollup_origination_size?: number;\n smart_rollup_origination_size: number;\n }> {\n const {\n time_between_blocks,\n minimal_block_delay,\n hard_gas_limit_per_operation,\n hard_gas_limit_per_block,\n hard_storage_limit_per_operation,\n cost_per_byte,\n tx_rollup_origination_size,\n smart_rollup_origination_size,\n } = await this.rpc.getConstants({ block: String(block) });\n return {\n time_between_blocks,\n minimal_block_delay,\n hard_gas_limit_per_operation,\n hard_gas_limit_per_block,\n hard_storage_limit_per_operation,\n cost_per_byte,\n tx_rollup_origination_size,\n smart_rollup_origination_size,\n };\n }\n\n /**\n * @description Access the script (code and storage) of a smart contract\n * @param contract contract address from which we want to retrieve the script\n * @param block from which we want to retrieve the storage value\n * @returns Note: The code must be in the JSON format and not contain global constant\n */\n async getScript(contract: string, block: BlockIdentifier): Promise<ScriptedContracts> {\n const { script } = await this.rpc.getContract(contract, { block: String(block) });\n return script;\n }\n\n /**\n * @description Access the storage value of a contract\n * @param contract contract address from which we want to retrieve the storage\n * @param block from which we want to retrieve the storage value\n */\n async getStorage(contract: string, block: BlockIdentifier): Promise<MichelsonV1Expression> {\n return this.rpc.getStorage(contract, { block: String(block) });\n }\n\n /**\n * @description Access the block hash\n */\n async getBlockHash(block: BlockIdentifier): Promise<string> {\n const { hash } = await this.rpc.getBlockHeader({ block: String(block) });\n return hash;\n }\n\n /**\n * @description Access the block level\n */\n async getBlockLevel(block: BlockIdentifier): Promise<number> {\n const { level } = await this.rpc.getBlockHeader({ block: String(block) });\n return level;\n }\n\n /**\n * @description Access the counter of an address\n * @param pkh from which we want to retrieve the counter\n * @param block from which we want to retrieve the counter\n */\n async getCounter(pkh: string, block: BlockIdentifier): Promise<string> {\n const { counter } = await this.rpc.getContract(pkh, { block: String(block) });\n return counter || '0';\n }\n\n /**\n * @description Access the timestamp of a block\n * @param block from which we want to retrieve the timestamp\n * @returns date ISO format zero UTC offset (\"2022-01-19T22:37:07Z\")\n */\n async getBlockTimestamp(block: BlockIdentifier): Promise<string> {\n const { timestamp } = await this.rpc.getBlockHeader({ block: String(block) });\n return timestamp;\n }\n\n /**\n * @description Access the value associated with a key in a big map.\n * @param bigMapQuery Big Map ID and Expression hash to query (A b58check encoded Blake2b hash of the expression)\n * @param block from which we want to retrieve the big map value\n */\n async getBigMapValue(\n bigMapQuery: BigMapQuery,\n block: BlockIdentifier\n ): Promise<MichelsonV1Expression> {\n return this.rpc.getBigMapExpr(bigMapQuery.id, bigMapQuery.expr, {\n block: String(block),\n });\n }\n\n /**\n * @description Access the value associated with a sapling state ID.\n * @param id Sapling state ID\n * @param block from which we want to retrieve the sapling state\n */\n async getSaplingDiffById(\n saplingStateQuery: SaplingStateQuery,\n block: BlockIdentifier\n ): Promise<SaplingDiffResponse> {\n return this.rpc.getSaplingDiffById(saplingStateQuery.id, { block: String(block) });\n }\n\n /**\n * @description Access the sapling state of a smart contract.\n * @param contractAddress The address of the smart contract\n * @param block The block you want to retrieve the sapling state from\n */\n async getSaplingDiffByContract(\n contractAddress: string,\n block: BlockIdentifier\n ): Promise<SaplingDiffResponse> {\n return this.rpc.getSaplingDiffByContract(contractAddress, { block: String(block) });\n }\n\n /**\n * @description Return the list of entrypoints of the contract\n * @param contract address of the contract we want to get the entrypoints of\n */\n async getEntrypoints(contract: string): Promise<EntrypointsResponse> {\n return this.rpc.getEntrypoints(contract);\n }\n\n /**\n * @description Access the chain id\n */\n async getChainId(): Promise<string> {\n return this.rpc.getChainId();\n }\n\n /**\n * @description Indicate if an account is revealed\n * @param publicKeyHash of the account\n * @param block from which we want to know if the account is revealed\n */\n async isAccountRevealed(publicKeyHash: string, block: BlockIdentifier): Promise<boolean> {\n const manager = await this.rpc.getManagerKey(publicKeyHash, { block: String(block) });\n const haveManager = manager && typeof manager === 'object' ? !!manager.key : !!manager;\n return haveManager;\n }\n\n /**\n * @description Return all the information about a block\n * @param block from which we want to retrieve the information\n */\n async getBlock(block: BlockIdentifier): Promise<BlockResponse> {\n return this.rpc.getBlock({ block: String(block) });\n }\n\n /**\n * @description Return a list of the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.\n * @param block from which we want to retrieve the information\n */\n getLiveBlocks(block: BlockIdentifier): Promise<string[]> {\n return this.rpc.getLiveBlocks({ block: String(block) });\n }\n}\n","import { ParameterValidationError } from '@taquito/core';\nimport { FilterExpression } from '../taquito';\n\n/**\n * @category Error\n * @description Error that indicates an unsupported event being passed or used\n */\nexport class UnsupportedEventError extends ParameterValidationError {\n constructor(public readonly type: string) {\n super();\n this.name = 'UnsupportedEventError';\n this.message = `Unsupported event type \"${type}\" expecting one of the \"data\", \"error\", or \"close\".`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid filter expression being passed or used\n */\nexport class InvalidFilterExpressionError extends ParameterValidationError {\n constructor(public readonly invalidExpression: FilterExpression) {\n super();\n this.name = 'InvalidFilterExpressionError';\n this.message = `Invalid filter expression expecting the object to contain either and/or property`;\n }\n}\n","import {\n OpFilter,\n FilterExpression,\n Filter,\n OpHashFilter,\n SourceFilter,\n KindFilter,\n DestinationFilter,\n OperationContent,\n} from './interface';\n\nimport { InternalOperationResult } from '@taquito/rpc';\n\nimport { InvalidFilterExpressionError } from './errors';\n\nconst opHashFilter = (op: OperationContent, filter: OpHashFilter) => op.hash === filter.opHash;\n\nconst sourceFilter = (x: OperationContent, filter: SourceFilter) => {\n switch (x.kind) {\n case 'endorsement':\n return 'metadata' in x && x.metadata.delegate === filter.source;\n case 'activate_account':\n return 'metadata' in x && x.pkh === filter.source;\n default:\n return 'source' in x && x.source === filter.source;\n }\n};\n\nconst kindFilter = (x: OperationContent, filter: KindFilter) =>\n 'kind' in x && x.kind === filter.kind;\n\nconst destinationFilter = (x: OperationContent, filter: DestinationFilter) => {\n switch (x.kind) {\n case 'delegation':\n return x.delegate === filter.destination;\n case 'origination':\n if (\n 'metadata' in x &&\n 'operation_result' in x.metadata &&\n 'originated_contracts' in x.metadata.operation_result &&\n Array.isArray(x.metadata.operation_result.originated_contracts)\n ) {\n return x.metadata.operation_result.originated_contracts.some(\n (contract) => contract === filter.destination\n );\n }\n break;\n case 'transaction':\n return x.destination === filter.destination;\n default:\n return false;\n }\n};\n\nexport const eventFilter = (\n result: InternalOperationResult,\n address?: string,\n tag?: string,\n excludeFailedOperations?: boolean\n) => {\n if (result.kind !== 'event') {\n return false;\n }\n if (tag && result.tag !== tag) {\n return false;\n }\n if (address && result.source !== address) {\n return false;\n }\n if (excludeFailedOperations && result.result.status !== 'applied') {\n return false;\n }\n return true;\n};\n\nexport const evaluateOpFilter = (op: OperationContent, filter: OpFilter) => {\n if ('opHash' in filter) {\n return opHashFilter(op, filter);\n } else if ('source' in filter) {\n return sourceFilter(op, filter);\n } else if ('kind' in filter) {\n return kindFilter(op, filter);\n } else if ('destination' in filter) {\n return destinationFilter(op, filter);\n }\n return false;\n};\n\nexport const evaluateExpression = (op: OperationContent, exp: FilterExpression): boolean => {\n if (Array.isArray(exp.and)) {\n return exp.and.every((x: OpFilter | FilterExpression) => evaluateFilter(op, x));\n } else if (Array.isArray(exp.or)) {\n return exp.or.some((x: OpFilter | FilterExpression) => evaluateFilter(op, x));\n } else {\n throw new InvalidFilterExpressionError(exp);\n }\n};\n\nexport const evaluateFilter = (op: OperationContent, filter: Filter): boolean => {\n const filters: OpFilter[] | FilterExpression[] = [];\n if (!Array.isArray(filter)) {\n filters.push(filter as any);\n } else {\n filters.push(...(filter as any));\n }\n\n return (filters as any[]).every((filterOrExp: OpFilter | FilterExpression) => {\n if ('and' in filterOrExp || 'or' in filterOrExp) {\n return evaluateExpression(op, filterOrExp);\n } else {\n return evaluateOpFilter(op, filterOrExp as OpFilter);\n }\n });\n};\n","/* eslint-disable no-dupe-class-members */\nimport { Observable, Subject, NEVER, OperatorFunction } from 'rxjs';\nimport { Subscription } from './interface';\nimport { takeUntil, tap, catchError, retry } from 'rxjs/operators';\nimport { UnsupportedEventError } from './errors';\n\nexport { UnsupportedEventError } from './errors';\n\nexport class ObservableSubscription<T> implements Subscription<T> {\n private errorListeners: Array<(error: Error) => void> = [];\n private messageListeners: Array<(data: T) => void> = [];\n private closeListeners: Array<() => void> = [];\n private completed$ = new Subject<void>();\n\n constructor(\n obs: Observable<T>,\n private shouldRetry: boolean = false,\n private operatorFunction: OperatorFunction<T, T> = retry<T>()\n ) {\n obs\n .pipe(\n takeUntil(this.completed$),\n tap(\n (data: T) => {\n this.call(this.messageListeners, data);\n },\n (error) => {\n this.call(this.errorListeners, error);\n },\n () => {\n this.call(this.closeListeners);\n }\n ),\n this.shouldRetry ? operatorFunction : tap(),\n catchError(() => NEVER)\n )\n .subscribe();\n }\n\n private call<K>(listeners: Array<(val: K) => void>, value?: K) {\n for (const l of listeners) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n l(value!);\n } catch (ex) {\n console.error(ex);\n }\n }\n }\n\n private remove(listeners: Array<any>, value: any) {\n const idx = listeners.indexOf(value);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n }\n\n public on(type: 'error', cb: (error: Error) => void): void;\n public on(type: 'data', cb: (data: T) => void): void;\n public on(type: 'close', cb: () => void): void;\n\n public on(type: 'data' | 'error' | 'close', cb: any): void {\n switch (type) {\n case 'data':\n this.messageListeners.push(cb);\n break;\n case 'error':\n this.errorListeners.push(cb);\n break;\n case 'close':\n this.closeListeners.push(cb);\n break;\n default:\n throw new UnsupportedEventError(type);\n }\n }\n\n public off(type: 'error', cb: (error: Error) => void): void;\n public off(type: 'data', cb: (data: T) => void): void;\n public off(type: 'close', cb: () => void): void;\n\n public off(type: 'data' | 'error' | 'close', cb: any): void {\n switch (type) {\n case 'data':\n this.remove(this.messageListeners, cb);\n break;\n case 'error':\n this.remove(this.errorListeners, cb);\n break;\n case 'close':\n this.remove(this.closeListeners, cb);\n break;\n default:\n throw new UnsupportedEventError(type);\n }\n }\n\n public close() {\n this.completed$.next();\n }\n}\n","import {\n BlockResponse,\n InternalOperationResult,\n OperationContentsAndResultTransaction,\n} from '@taquito/rpc';\nimport { BehaviorSubject, from, Observable, ObservableInput, OperatorFunction, timer } from 'rxjs';\nimport {\n concatMap,\n distinctUntilKeyChanged,\n first,\n pluck,\n publish,\n refCount,\n retry,\n switchMap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { evaluateFilter, eventFilter } from './filters';\nimport {\n Filter,\n EventFilter,\n SubscribeProvider,\n Subscription,\n OperationContent,\n EventSubscription,\n} from './interface';\nimport { ObservableSubscription } from './observable-subscription';\nimport BigNumber from 'bignumber.js';\n\nexport interface PollingSubscribeProviderConfig {\n pollingIntervalMilliseconds?: number;\n shouldObservableSubscriptionRetry: boolean;\n observableSubscriptionRetryFunction: OperatorFunction<any, any>;\n}\n\nexport const defaultConfigStreamer: PollingSubscribeProviderConfig = {\n shouldObservableSubscriptionRetry: false,\n observableSubscriptionRetryFunction: retry(),\n};\n\nconst getLastBlock = (context: Context) => {\n return from(context.rpc.getBlock()).pipe(first());\n};\n\nconst applyFilter = (filter: Filter) =>\n concatMap<BlockResponse, ObservableInput<OperationContent>>((block) => {\n return new Observable<OperationContent>((sub) => {\n for (const ops of block.operations) {\n for (const op of ops) {\n for (const content of op.contents) {\n if (evaluateFilter({ hash: op.hash, ...content }, filter)) {\n sub.next({ hash: op.hash, ...content });\n }\n }\n }\n }\n sub.complete();\n });\n });\n\nconst applyEventFilter = (filter?: EventFilter) =>\n concatMap<BlockResponse, ObservableInput<EventSubscription>>((block) => {\n return new Observable<EventSubscription>((sub) => {\n for (const ops of block.operations) {\n for (const op of ops) {\n for (const content of op.contents) {\n const tx = content as OperationContentsAndResultTransaction;\n const internalOpResults = tx.metadata.internal_operation_results;\n if (internalOpResults) {\n for (const event of internalOpResults) {\n if (eventFilter(event, filter?.address, filter?.tag, filter?.excludeFailedOperations)) {\n sub.next({\n opHash: op.hash,\n blockHash: block.hash,\n level: block.header.level,\n ...event,\n });\n }\n }\n }\n }\n }\n }\n sub.complete();\n });\n });\n\nexport class PollingSubscribeProvider implements SubscribeProvider {\n private _config$: BehaviorSubject<PollingSubscribeProviderConfig>;\n // Map the changing polling interval to a timer, which will automatically terminate the previous timer when the next one starts.\n private timer$: Observable<number>;\n\n private newBlock$: Observable<BlockResponse>;\n\n constructor(private context: Context, config: Partial<PollingSubscribeProviderConfig> = {}) {\n this._config$ = new BehaviorSubject({\n ...defaultConfigStreamer,\n ...config,\n });\n this.timer$ = this._config$.pipe(\n pluck('pollingIntervalMilliseconds'),\n switchMap((pollingIntervalMilliseconds) => {\n if (!pollingIntervalMilliseconds) {\n return from(this.getConfirmationPollingInterval()).pipe(\n switchMap((interval) => {\n return timer(0, interval);\n })\n );\n } else {\n return timer(0, pollingIntervalMilliseconds);\n }\n })\n );\n this.newBlock$ = this.timer$.pipe(\n switchMap(() => getLastBlock(this.context)),\n distinctUntilKeyChanged('hash'),\n publish(),\n refCount()\n );\n }\n\n get config() {\n return this._config$.getValue();\n }\n\n private async getConfirmationPollingInterval() {\n if (!this.config.pollingIntervalMilliseconds) {\n const defaultIntervalTestnetsMainnet = 5000;\n const defaultIntervalSandbox = 1000;\n try {\n const constants = await this.context.readProvider.getProtocolConstants('head');\n const blockTime = constants.minimal_block_delay\n ? constants.minimal_block_delay.multipliedBy(1000)\n : constants.time_between_blocks\n ? constants.time_between_blocks[0].multipliedBy(1000)\n : new BigNumber(defaultIntervalTestnetsMainnet);\n const confirmationPollingInterval = blockTime.dividedBy(3);\n\n this.config.pollingIntervalMilliseconds =\n confirmationPollingInterval.toNumber() === 0\n ? defaultIntervalSandbox\n : confirmationPollingInterval.toNumber();\n } catch (exception) {\n return defaultIntervalTestnetsMainnet;\n }\n }\n return this.config.pollingIntervalMilliseconds;\n }\n\n subscribeBlock(_filter: 'head'): Subscription<BlockResponse> {\n return new ObservableSubscription(\n this.newBlock$,\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n\n subscribe(_filter: 'head'): Subscription<string> {\n return new ObservableSubscription(\n this.newBlock$.pipe(pluck('hash')),\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n\n subscribeOperation(filter: Filter): Subscription<OperationContent> {\n return new ObservableSubscription(\n this.newBlock$.pipe(applyFilter(filter)),\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n\n subscribeEvent(eventFilter?: EventFilter): Subscription<InternalOperationResult> {\n return new ObservableSubscription(\n this.newBlock$.pipe(applyEventFilter(eventFilter)),\n this.config.shouldObservableSubscriptionRetry,\n this.config.observableSubscriptionRetryFunction\n );\n }\n}\n","import {\n LocalForger,\n Forger,\n ForgeParams,\n ForgeResponse,\n ProtocolsHash,\n} from '@taquito/local-forging';\nimport { Protocols } from '../constants';\nimport { Context } from '../context';\n\nexport class TaquitoLocalForger implements Forger {\n constructor(private context: Context) {}\n\n private async getNextProto(): Promise<ProtocolsHash> {\n if (!this.context.proto) {\n const nextProto = await this.context.readProvider.getNextProtocol('head');\n this.context.proto = nextProto as Protocols;\n }\n return this.context.proto as unknown as ProtocolsHash;\n }\n\n async forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n const forger = new LocalForger(await this.getNextProto());\n return forger.forge({ branch, contents });\n }\n}\n","import { RpcClient, RpcClientInterface } from '@taquito/rpc';\nimport { Protocols } from './constants';\nimport { Forger } from '@taquito/local-forging';\nimport { Injector } from './injector/interface';\nimport { RpcInjector } from './injector/rpc-injector';\nimport { Signer } from './signer/interface';\nimport { NoopSigner } from './signer/noop';\nimport { OperationFactory } from './wallet/operation-factory';\nimport { RpcTzProvider } from './tz/rpc-tz-provider';\nimport { RPCEstimateProvider } from './estimate/rpc-estimate-provider';\nimport { RpcContractProvider } from './contract/rpc-contract-provider';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\n\nimport { Wallet, LegacyWalletProvider, WalletProvider } from './wallet';\nimport { ParserProvider } from './parser/interface';\nimport { MichelCodecParser } from './parser/michel-codec-parser';\nimport { Packer } from './packer/interface';\nimport { RpcPacker } from './packer/rpc-packer';\nimport { BehaviorSubject } from 'rxjs';\nimport { GlobalConstantsProvider } from './global-constants/interface-global-constants-provider';\nimport { NoopGlobalConstantsProvider } from './global-constants/noop-global-constants-provider';\nimport { TzReadProvider } from './read-provider/interface';\nimport { RpcReadAdapter } from './read-provider/rpc-read-adapter';\nimport { SubscribeProvider } from './subscribe/interface';\nimport { PollingSubscribeProvider } from './subscribe/polling-subcribe-provider';\nimport { TaquitoLocalForger } from './forger/taquito-local-forger';\nimport { PrepareProvider } from './prepare/prepare-provider';\n\nexport interface TaquitoProvider<T, K extends Array<any>> {\n new (context: Context, ...rest: K): T;\n}\n\nexport interface ConfigConfirmation {\n confirmationPollingTimeoutSecond: number;\n defaultConfirmationCount: number;\n}\n\nexport const defaultConfigConfirmation: ConfigConfirmation = {\n defaultConfirmationCount: 1,\n confirmationPollingTimeoutSecond: 180,\n};\n\n/**\n * @description Encapsulate common service used throughout different part of the library\n */\nexport class Context {\n private _rpcClient: RpcClientInterface;\n private _forger: Forger;\n private _parser: ParserProvider;\n private _injector: Injector;\n private _walletProvider: WalletProvider;\n public readonly operationFactory: OperationFactory;\n private _packer: Packer;\n private providerDecorator: Array<(context: Context) => Context> = [];\n private _globalConstantsProvider: GlobalConstantsProvider;\n private _readProvider: TzReadProvider;\n private _stream: SubscribeProvider;\n public readonly tz = new RpcTzProvider(this);\n public readonly estimate = new RPCEstimateProvider(this);\n public readonly contract = new RpcContractProvider(this, this.estimate);\n public readonly prepare = new PrepareProvider(this);\n public readonly batch = new RPCBatchProvider(this, this.estimate);\n public readonly wallet = new Wallet(this);\n\n constructor(\n private _rpc: RpcClientInterface | string,\n private _signer: Signer = new NoopSigner(),\n private _proto?: Protocols,\n public readonly _config = new BehaviorSubject({\n ...defaultConfigConfirmation,\n }),\n forger?: Forger,\n injector?: Injector,\n packer?: Packer,\n wallet?: WalletProvider,\n parser?: ParserProvider,\n globalConstantsProvider?: GlobalConstantsProvider,\n readProvider?: TzReadProvider,\n stream?: SubscribeProvider\n ) {\n if (typeof this._rpc === 'string') {\n this._rpcClient = new RpcClient(this._rpc);\n } else {\n this._rpcClient = this._rpc;\n }\n this._forger = forger ? forger : new TaquitoLocalForger(this);\n this._injector = injector ? injector : new RpcInjector(this);\n this.operationFactory = new OperationFactory(this);\n this._walletProvider = wallet ? wallet : new LegacyWalletProvider(this);\n this._parser = parser ? parser : new MichelCodecParser(this);\n this._packer = packer ? packer : new RpcPacker(this);\n this._globalConstantsProvider = globalConstantsProvider\n ? globalConstantsProvider\n : new NoopGlobalConstantsProvider();\n this._readProvider = readProvider ? readProvider : new RpcReadAdapter(this._rpcClient);\n this._stream = stream ? stream : new PollingSubscribeProvider(this);\n }\n\n get config(): ConfigConfirmation {\n return this._config.getValue();\n }\n\n set config(value: ConfigConfirmation) {\n this._config.next({\n ...value,\n });\n }\n\n setPartialConfig(value: Partial<ConfigConfirmation>) {\n this._config.next({\n ...this._config.getValue(),\n ...value,\n });\n }\n\n get rpc(): RpcClientInterface {\n return this._rpcClient;\n }\n\n set rpc(value: RpcClientInterface) {\n this._rpcClient = value;\n }\n\n get injector() {\n return this._injector;\n }\n\n set injector(value: Injector) {\n this._injector = value;\n }\n\n get forger() {\n return this._forger;\n }\n\n set forger(value: Forger) {\n this._forger = value;\n }\n\n get signer() {\n return this._signer;\n }\n\n set signer(value: Signer) {\n this._signer = value;\n }\n\n get walletProvider() {\n return this._walletProvider;\n }\n\n set walletProvider(value: WalletProvider) {\n this._walletProvider = value;\n }\n\n set proto(value: Protocols | undefined) {\n this._proto = value;\n }\n\n get proto() {\n return this._proto;\n }\n\n get parser() {\n return this._parser;\n }\n\n set parser(value: ParserProvider) {\n this._parser = value;\n }\n\n get packer() {\n return this._packer;\n }\n\n set packer(value: Packer) {\n this._packer = value;\n }\n\n get globalConstantsProvider() {\n return this._globalConstantsProvider;\n }\n\n set globalConstantsProvider(value: GlobalConstantsProvider) {\n this._globalConstantsProvider = value;\n }\n\n get readProvider() {\n return this._readProvider;\n }\n\n set readProvider(value: TzReadProvider) {\n this._readProvider = value;\n }\n\n get stream() {\n return this._stream;\n }\n\n set stream(value: SubscribeProvider) {\n this._stream = value;\n }\n\n async isAnyProtocolActive(protocol: string[] = []) {\n if (this._proto) {\n return protocol.includes(this._proto);\n } else {\n const next_protocol = await this.readProvider.getNextProtocol('head');\n return protocol.includes(next_protocol);\n }\n }\n\n isAnySignerConfigured() {\n return !(this.signer instanceof NoopSigner);\n }\n\n /**\n * @description Create a copy of the current context. Useful when you have long running operation and you do not want a context change to affect the operation\n */\n clone(): Context {\n return new Context(\n this.rpc,\n this.signer,\n this.proto,\n this._config,\n this.forger,\n this._injector,\n this.packer,\n this._walletProvider,\n this._parser,\n this._globalConstantsProvider,\n this._readProvider,\n this._stream\n );\n }\n\n /**\n * @description Allows extensions set on the TezosToolkit to inject logic into the context\n */\n registerProviderDecorator(fx: (context: Context) => Context) {\n this.providerDecorator.push(fx);\n }\n\n /**\n * @description Applies the decorators on a cloned instance of the context and returned this cloned instance.\n * The decorators are functions that inject logic into the context.\n * They are provided by the extensions set on the TezosToolkit by calling the registerProviderDecorator method.\n */\n withExtensions = (): Context => {\n let clonedContext = this.clone();\n this.providerDecorator.forEach((decorator) => {\n clonedContext = decorator(clonedContext);\n });\n\n return clonedContext;\n };\n}\n","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"commitHash\": \"a97e506efd61b86e39ae30db588401b8fda46553\",\n \"version\": \"17.3.2\"\n};\n","import { TaquitoError, TezosToolkitConfigError } from '@taquito/core';\n\n/**\n * @category Error\n * @description Error that indicates CompositeForger.forge() results doesn't match each other\n */\nexport class ForgingMismatchError extends TaquitoError {\n constructor(public readonly results: string[]) {\n super();\n this.name = 'ForgingMismatchError';\n this.message = `Forging mismatch error`;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates no forger has been configured for CompositeForger\n */\nexport class UnspecifiedForgerError extends TezosToolkitConfigError {\n constructor() {\n super();\n this.name = 'UnspecifiedForgerError';\n this.message =\n 'No forger has been configured. Please configure new CompositeForger([rpcForger, localForger]) with your TezosToolkit instance.';\n }\n}\n","import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nimport { UnspecifiedForgerError, ForgingMismatchError } from './errors';\n\nexport class CompositeForger implements Forger {\n constructor(private forgers: Forger[]) {\n if (forgers.length === 0) {\n throw new UnspecifiedForgerError();\n }\n }\n\n async forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n const results = await Promise.all(\n this.forgers.map((forger) => {\n return forger.forge({ branch, contents });\n })\n );\n\n if (results.length === 0) {\n throw new UnspecifiedForgerError();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let lastResult: string = results.pop()!; // Assumed to be more than one since we\n while (results.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const currentResult = results.pop()!;\n\n if (currentResult !== lastResult) {\n throw new ForgingMismatchError([lastResult, currentResult]);\n }\n lastResult = currentResult;\n }\n\n return lastResult;\n }\n}\n","import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nimport { Context } from '../context';\n\nexport class RpcForger implements Forger {\n constructor(private context: Context) {}\n\n forge({ branch, contents }: ForgeParams): Promise<ForgeResponse> {\n return this.context.rpc.forgeOperations({ branch, contents });\n }\n}\n","import { OriginateParams } from \"../operations/types\";\nimport { ParserProvider } from \"./interface\";\n\nexport class NoopParser implements ParserProvider {\n async prepareCodeOrigination(params: OriginateParams): Promise<OriginateParams> {\n return params;\n }\n}","import { Packer } from './interface';\nimport { packDataBytes, MichelsonData, MichelsonType } from '@taquito/michel-codec'\nimport { PackDataResponse, PackDataParams } from '@taquito/rpc';\n\nexport class MichelCodecPacker implements Packer {\n\n async packData(data: PackDataParams): Promise<PackDataResponse> {\n const { bytes } = packDataBytes(data.data as MichelsonData, data.type as MichelsonType);\n return { packed: bytes }\n }\n}\n","import { GlobalConstantHashAndValue } from '@taquito/michel-codec';\nimport { GlobalConstantNotFound } from './errors';\nimport { GlobalConstantHash, GlobalConstantsProvider } from './interface-global-constants-provider';\n\nexport class DefaultGlobalConstantsProvider implements GlobalConstantsProvider {\n private _globalConstantsLibrary: GlobalConstantHashAndValue = {};\n\n /**\n *\n * @description Allows to load global constant hashes and their corresponding Michelson JSON values\n */\n loadGlobalConstant(globalConstant: GlobalConstantHashAndValue) {\n for (const hash in globalConstant) {\n Object.assign(this._globalConstantsLibrary, {\n [hash]: globalConstant[hash],\n });\n }\n }\n\n /**\n *\n * @description Retrieve the Michelson value of a global constant based on its hash\n *\n * @param hash a string representing the global constant hash\n * @returns Expr, the JSON Michelson value\n */\n async getGlobalConstantByHash(hash: GlobalConstantHash) {\n const value = this._globalConstantsLibrary[hash];\n if (!value) {\n throw new GlobalConstantNotFound(hash);\n }\n return value;\n }\n}\n","/**\n * @packageDocumentation\n * @module @taquito/taquito\n */\n\nimport { RpcClient, RpcClientInterface } from '@taquito/rpc';\nimport { Forger } from '@taquito/local-forging';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\nimport { Protocols } from './constants';\nimport { ConfigConfirmation, Context, TaquitoProvider } from './context';\nimport { ContractProvider } from './contract/interface';\nimport { Extension } from './extension/extension';\nimport { format } from '@taquito/utils';\nimport { GlobalConstantsProvider } from './global-constants/interface-global-constants-provider';\nimport { NoopGlobalConstantsProvider } from './global-constants/noop-global-constants-provider';\nimport { Packer } from './packer/interface';\nimport { RpcPacker } from './packer/rpc-packer';\nimport { TzReadProvider } from './read-provider/interface';\nimport { RpcReadAdapter } from './read-provider/rpc-read-adapter';\nimport { PreparationProvider } from './prepare/interface';\nimport { Signer } from './signer/interface';\nimport { NoopSigner } from './signer/noop';\nimport { SubscribeProvider } from './subscribe/interface';\nimport { PollingSubscribeProvider } from './subscribe/polling-subcribe-provider';\nimport { TzProvider } from './tz/interface';\nimport { VERSION } from './version';\nimport { LegacyWalletProvider, Wallet, WalletProvider } from './wallet';\nimport { OperationFactory } from './wallet/operation-factory';\nimport { TaquitoLocalForger } from './forger/taquito-local-forger';\nimport { EstimationProvider } from './estimate/estimate-provider-interface';\nimport { ParserProvider } from './parser/interface';\nimport { MichelCodecParser } from './parser/michel-codec-parser';\nimport { Injector } from './injector/interface';\nimport { RpcInjector } from './injector/rpc-injector';\n\nexport { MichelsonMap, UnitValue } from '@taquito/michelson-encoder';\nexport { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nexport * from './constants';\nexport * from './context';\nexport { TaquitoProvider } from './context';\nexport * from './contract';\nexport * from './contract/big-map';\nexport { CompositeForger } from './forger/composite-forger';\nexport { RpcForger } from './forger/rpc-forger';\nexport * from './operations';\nexport { OperationBatch } from './batch/rpc-batch-provider';\nexport * from './signer/interface';\nexport * from './subscribe/interface';\nexport { SubscribeProvider } from './subscribe/interface';\nexport { PollingSubscribeProvider } from './subscribe/polling-subcribe-provider';\nexport { ObservableSubscription } from './subscribe/observable-subscription';\nexport * from './tz/interface';\nexport * from './wallet';\nexport { Extension } from './extension/extension';\nexport * from './injector/interface';\nexport * from './injector/rpc-injector';\nexport * from './parser/interface';\nexport * from './parser/michel-codec-parser';\nexport * from './parser/noop-parser';\nexport * from './packer/interface';\nexport * from './packer/michel-codec-packer';\nexport * from './packer/rpc-packer';\nexport * from './global-constants/default-global-constants-provider';\nexport * from './global-constants/errors';\nexport * from './global-constants/interface-global-constants-provider';\nexport {\n BigMapQuery,\n SaplingStateQuery,\n BlockIdentifier,\n TzReadProvider,\n} from './read-provider/interface';\nexport { RpcReadAdapter } from './read-provider/rpc-read-adapter';\nexport * from './estimate';\nexport { TaquitoLocalForger } from './forger/taquito-local-forger';\nexport * from './prepare';\n\nexport interface SetProviderOptions {\n forger?: Forger;\n wallet?: WalletProvider;\n rpc?: string | RpcClientInterface;\n readProvider?: TzReadProvider;\n stream?: string | SubscribeProvider;\n signer?: Signer;\n protocol?: Protocols;\n config?: Partial<ConfigConfirmation>;\n packer?: Packer;\n globalConstantsProvider?: GlobalConstantsProvider;\n parserProvider?: ParserProvider;\n injectorProvider?: Injector;\n}\n\nexport interface VersionInfo {\n commitHash: string;\n version: string;\n}\n\n/**\n * @description Facade class that surfaces all of the libraries capability and allow it's configuration\n *\n * @param _rpc The RPC server to use\n */\nexport class TezosToolkit {\n private _options: SetProviderOptions = {};\n private _rpcClient: RpcClientInterface;\n private _wallet: Wallet;\n private _context: Context;\n /**\n * @deprecated TezosToolkit.batch has been deprecated in favor of TezosToolkit.contract.batch\n *\n */\n public batch: RPCBatchProvider['batch'];\n\n public readonly format = format;\n\n constructor(private _rpc: RpcClientInterface | string) {\n if (typeof this._rpc === 'string') {\n this._rpcClient = new RpcClient(this._rpc);\n } else {\n this._rpcClient = this._rpc;\n }\n this._context = new Context(_rpc);\n this._wallet = new Wallet(this._context);\n this.setProvider({ rpc: this._rpcClient });\n this.batch = this._context.batch.batch.bind(this._context.batch);\n }\n\n /**\n * @description Sets configuration on the Tezos Taquito instance. Allows user to choose which signer, rpc client, rpc url, forger and so forth\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setProvider({rpc: 'https://mainnet.ecadinfra.com/', signer: new InMemorySigner.fromSecretKey(“edsk...”)})\n * @example Tezos.setProvider({ config: { confirmationPollingTimeoutSecond: 300 }})\n *\n */\n\n setProvider({\n rpc,\n stream,\n signer,\n protocol,\n config,\n forger,\n wallet,\n packer,\n globalConstantsProvider,\n readProvider,\n parserProvider,\n injectorProvider,\n }: SetProviderOptions) {\n this.setRpcProvider(rpc);\n this.setStreamProvider(stream);\n this.setSignerProvider(signer);\n this.setForgerProvider(forger);\n this.setWalletProvider(wallet);\n this.setPackerProvider(packer);\n this.setGlobalConstantsProvider(globalConstantsProvider);\n this.setReadProvider(readProvider);\n this.setParserProvider(parserProvider);\n this.setInjectorProvider(injectorProvider);\n\n this._context.proto = protocol;\n if (config) {\n this._context.setPartialConfig(config);\n }\n }\n\n /**\n * @description Sets signer provider on the Tezos Taquito instance.\n *\n * @param options signer to use to interact with the Tezos network\n *\n * @example Tezos.setSignerProvider(new InMemorySigner.fromSecretKey('edsk...'))\n *\n */\n setSignerProvider(signer?: SetProviderOptions['signer']) {\n if (!this._options.signer && typeof signer === 'undefined') {\n this._context.signer = new NoopSigner();\n this._options.signer = signer;\n } else if (typeof signer !== 'undefined') {\n this._context.signer = signer;\n this._options.signer = signer;\n }\n }\n\n /**\n * @description Sets rpc provider on the Tezos Taquito instance\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setRpcProvider('https://mainnet.ecadinfra.com/')\n *\n */\n setRpcProvider(rpc?: SetProviderOptions['rpc']) {\n if (typeof rpc === 'string') {\n this._rpcClient = new RpcClient(rpc);\n } else if (rpc === undefined) {\n // do nothing, RPC is required in the constructor, do not override it\n } else {\n this._rpcClient = rpc;\n }\n this._options.rpc = this._rpcClient;\n this._context.rpc = this._rpcClient;\n }\n\n /**\n * @description Sets forger provider on the Tezos Taquito instance\n * The `LocalForger` from `@taquito/local-forging` is set by default.\n *\n * @param options forger to use to interact with the Tezos network\n *\n * @example Tezos.setForgerProvider(this.getFactory(RpcForger)())\n *\n */\n setForgerProvider(forger?: SetProviderOptions['forger']) {\n if (typeof forger !== 'undefined') {\n this._options.forger = forger;\n this._context.forger = forger;\n } else if (this._options.forger === undefined) {\n const f = this.getFactory(TaquitoLocalForger)();\n this._options.forger = f;\n this._context.forger = f;\n }\n }\n\n /**\n * @description Sets stream provider on the Tezos Taquito instance\n *\n * @param options stream to use to interact with the Tezos network\n *\n * @example Tezos.setStreamProvider(...)\n *\n */\n setStreamProvider(stream?: SetProviderOptions['stream']) {\n if (typeof stream === 'string') {\n const s = new PollingSubscribeProvider(new Context(new RpcClient(stream)));\n this._options.stream = s;\n this._context.stream = s;\n } else if (typeof stream !== 'undefined') {\n this._options.stream = stream;\n this._context.stream = stream;\n } else if (this._options.stream === undefined) {\n const s = this.getFactory(PollingSubscribeProvider)();\n this._options.stream = s;\n this._context.stream = s;\n }\n }\n\n /**\n * @description Sets wallet provider on the Tezos Taquito instance\n *\n * @param options wallet to use to interact with the Tezos network\n *\n * @example Tezos.setWalletProvider(...)\n *\n */\n setWalletProvider(wallet?: SetProviderOptions['wallet']) {\n if (!this._options.wallet && typeof wallet === 'undefined') {\n const w = this.getFactory(LegacyWalletProvider)();\n this._options.wallet = w;\n this._context.walletProvider = w;\n } else if (typeof wallet !== 'undefined') {\n this._options.wallet = wallet;\n this._context.walletProvider = wallet;\n }\n }\n\n /**\n * @description Sets Packer provider on the Tezos Taquito instance\n *\n * @param options packer to use to interact with the Tezos network\n *\n * @example Tezos.setPackerProvider(new MichelCodecPacker())\n *\n */\n setPackerProvider(packer?: SetProviderOptions['packer']) {\n if (!this._options.packer && typeof packer === 'undefined') {\n const p = this.getFactory(RpcPacker)();\n this._context.packer = p;\n this._options.packer = p;\n } else if (typeof packer !== 'undefined') {\n this._context.packer = packer;\n this._options.packer = packer;\n }\n }\n\n /**\n * @description Sets global constants provider on the Tezos Taquito instance\n *\n * @param options globalConstantsProvider to use to interact with the Tezos network\n *\n * @example\n * ```\n * const globalConst = new DefaultGlobalConstantsProvider();\n * globalConst.loadGlobalConstant({\n * \"expruu5BTdW7ajqJ9XPTF3kgcV78pRiaBW3Gq31mgp3WSYjjUBYxre\": { prim: \"int\" },\n * // ...\n * })\n * Tezos.setGlobalConstantsProvider(globalConst);\n * ```\n *\n */\n setGlobalConstantsProvider(\n globalConstantsProvider?: SetProviderOptions['globalConstantsProvider']\n ) {\n if (!this._options.globalConstantsProvider && typeof globalConstantsProvider === 'undefined') {\n const g = new NoopGlobalConstantsProvider();\n this._context.globalConstantsProvider = g;\n this._options.globalConstantsProvider = g;\n } else if (typeof globalConstantsProvider !== 'undefined') {\n this._context.globalConstantsProvider = globalConstantsProvider;\n this._options.globalConstantsProvider = globalConstantsProvider;\n }\n }\n\n /**\n * @description Sets read provider on the Tezos Taquito instance\n * By default reads are done from the RPC usign the RpcReadAdapter class, this can be overridden to read from an indexer that implements the TzReadProvider interface\n *\n * @param options TzReadProvider to use to interact with the Tezos network\n *\n */\n setReadProvider(readProvider?: SetProviderOptions['readProvider']) {\n const readP = readProvider ? readProvider : new RpcReadAdapter(this._context.rpc);\n this._options.readProvider = readP;\n this._context.readProvider = readP;\n }\n\n /**\n * @description Sets parser provider on the Tezos Taquito instance\n *\n * @param options parserProvider to use to interact with the Tezos network\n *\n */\n setParserProvider(parserProvider?: SetProviderOptions['parserProvider']) {\n if (!this._options.parserProvider && typeof parserProvider === 'undefined') {\n const p = new MichelCodecParser(this._context);\n this._context.parser = p;\n this._options.parserProvider = p;\n } else if (typeof parserProvider !== 'undefined') {\n this._context.parser = parserProvider;\n this._options.parserProvider = parserProvider;\n }\n }\n\n /**\n * @description Sets injector provider on the Tezos Taquito instance\n *\n * @param options Injector to use to interact with the Tezos network by default RpcInjector\n *\n */\n setInjectorProvider(injectorProvider?: SetProviderOptions['injectorProvider']) {\n if (!this._options.injectorProvider && typeof injectorProvider === 'undefined') {\n const i = new RpcInjector(this._context);\n this._context.injector = i;\n this._options.injectorProvider = i;\n } else if (typeof injectorProvider !== 'undefined') {\n this._context.injector = injectorProvider;\n this._options.injectorProvider = injectorProvider;\n }\n }\n\n /**\n * @description Provide access to tezos account management\n */\n get tz(): TzProvider {\n return this._context.tz;\n }\n\n /**\n * @description Provide access to smart contract utilities\n */\n get contract(): ContractProvider {\n return this._context.contract;\n }\n\n /**\n * @description Provide access to tezos operation preparation utilities\n */\n get prepare(): PreparationProvider {\n return this._context.prepare;\n }\n\n get wallet(): Wallet {\n return this._wallet;\n }\n\n get operation(): OperationFactory {\n return this._context.operationFactory;\n }\n\n /**\n * @description Provide access to operation estimation utilities\n */\n get estimate(): EstimationProvider {\n return this._context.estimate;\n }\n\n /**\n * @description Provide access to streaming utilities backed by an streamer implementation\n */\n get stream(): SubscribeProvider {\n return this._context.stream;\n }\n\n /**\n * @description Provide access to the currently used rpc client\n */\n get rpc(): RpcClientInterface {\n return this._context.rpc;\n }\n\n /**\n * @description Provide access to the currently used signer\n */\n get signer() {\n return this._context.signer;\n }\n\n /**\n * @description Provide access to the currently used globalConstantsProvider\n */\n get globalConstants() {\n return this._context.globalConstantsProvider;\n }\n\n /**\n * @description Allow to add a module to the TezosToolkit instance. This method adds the appropriate Providers(s) required by the module to the internal context.\n *\n * @param module extension to add to the TezosToolkit instance\n *\n * @example Tezos.addExtension(new Tzip16Module());\n */\n addExtension(module: Extension | Extension[]) {\n if (Array.isArray(module)) {\n module.forEach((extension) => extension.configureContext(this._context));\n } else {\n module.configureContext(this._context);\n }\n }\n\n getFactory<T, K extends Array<any>>(ctor: TaquitoProvider<T, K>) {\n return (...args: K) => {\n return new ctor(this._context, ...args);\n };\n }\n\n /**\n * @description Gets an object containing the version of Taquito library and git sha of the commit this library is compiled from\n */\n getVersionInfo(): VersionInfo {\n return VERSION;\n }\n}\n"],"names":["InvalidOperationKindError","InvalidKeyHashError","BigNumber"],"mappings":"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"}