@taquito/taquito 16.1.2-beta-RC.0 → 16.1.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/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/operation-errors.ts","../src/error.ts","../src/operations/operations.ts","../src/operations/batch-operation.ts","../src/operations/operation-emitter.ts","../src/batch/rpc-batch-provider.ts","../src/wallet/receipt.ts","../src/wallet/operation.ts","../src/wallet/batch-operation.ts","../src/wallet/delegation-operation.ts","../src/wallet/increase-paid-storage-operation.ts","../src/wallet/origination-operation.ts","../src/wallet/transaction-operation.ts","../src/wallet/operation-factory.ts","../src/tz/rpc-tz-provider.ts","../src/estimate/estimate.ts","../src/estimate/error.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/manager-lambda.ts","../src/contract/view_lambda.ts","../src/contract/compose.ts","../src/contract/contract-methods/contract-method-flat-param.ts","../src/contract/sapling-state-abstraction.ts","../src/wallet/wallet.ts","../src/wallet/legacy.ts","../src/contract/contract-methods/contract-method-object-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/big-map.ts","../src/contract/semantic.ts","../src/operations/tx-rollup-origination-operation.ts","../src/operations/tx-rollup-batch-operation.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/error.ts","../src/global-constants/noop-global-constants-provider.ts","../src/read-provider/rpc-read-adapter.ts","../src/subscribe/filters.ts","../src/subscribe/observable-subscription.ts","../src/subscribe/polling-subcribe-provider.ts","../src/forger/taquito-local-forger.ts","../src/prepare/prepare-provider.ts","../src/context.ts","../src/version.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 { Signer } from './interface';\n\n/**\n * @category Error\n * @description Error that indicates the signer has been unconfigured in the TezosToolkit instance\n */\nexport class UnconfiguredSignerError extends Error {\n name = 'UnconfiguredSignerError';\n\n constructor() {\n super(\n 'No signer has been configured. Please configure one by calling setProvider({signer}) on your TezosToolkit instance.'\n );\n }\n}\n\n/**\n * @description Default signer implementation which does nothing and produce invalid signature\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 REVEAL = 1100,\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 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.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}\n","import { 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 Error {\n name = 'Invalid parameters error';\n constructor(public smartContractMethodName: string, public sigs: any[], public args: any[]) {\n super(\n `${smartContractMethodName} Received ${\n args.length\n } arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`\n );\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 Error {\n name = 'Invalid delegation source error';\n\n constructor(public source: string) {\n super(\n `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/**\n * @category Error\n * @description Error that indicates an invalid smart contract code parameter being passed or used\n */\nexport class InvalidCodeParameter extends Error {\n public name = 'InvalidCodeParameter';\n constructor(public message: string, public readonly data: any) {\n super(message);\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 Error {\n public name = 'InvalidInitParameter';\n constructor(public message: string, public readonly data: any) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates invalid view parameter of a smart contract\n */\nexport class InvalidViewParameterError extends Error {\n name = 'Invalid view parameters error';\n cause: any;\n constructor(\n public smartContractViewName: string,\n public sigs: any,\n public args: any,\n public originalError: any\n ) {\n super(\n `Unable to encode the parameter of the view: ${smartContractViewName}. Received ${args} as parameter while expecting one of the following signatures (${JSON.stringify(\n sigs\n )})`\n );\n this.cause = originalError;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a failure when conducting a view simulation\n */\nexport class ViewSimulationError extends Error {\n name = 'ViewSimulationError';\n constructor(\n public message: string,\n public viewName: string,\n public failWith?: MichelsonV1Expression,\n public originalError?: any\n ) {\n super(message);\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 Error {\n public name = 'InvalidViewSimulationContext';\n constructor(public info: string) {\n super(`${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 Error {\n public name = 'RevealOperationError';\n constructor(public message: string) {\n super(message);\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 Error {\n public name = 'OriginationParameterError';\n constructor(public message: string) {\n super(message);\n }\n}\n\nexport class IntegerError extends Error {\n public name = 'IntegerError';\n constructor(public message: string) {\n super(message);\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 TxRollupOriginateParams,\n RPCTxRollupOriginationOperation,\n TxRollupBatchParams,\n RPCTxRollupBatchOperation,\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} from '../operations/types';\nimport { DEFAULT_FEE, DEFAULT_GAS_LIMIT, DEFAULT_STORAGE_LIMIT } from '../constants';\nimport { format } from '@taquito/utils';\nimport {\n InvalidCodeParameter,\n InvalidInitParameter,\n OriginationParameterError,\n IntegerError,\n} from './errors';\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 IntegerError(`Unexpected Invalid Integer ${balance}`);\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 = DEFAULT_GAS_LIMIT.REVEAL,\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,\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 createTxRollupOriginationOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n}: TxRollupOriginateParams) => {\n return {\n kind: OpKind.TX_ROLLUP_ORIGINATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n tx_rollup_origination: {},\n } as RPCTxRollupOriginationOperation;\n};\n\nexport const createTxRollupBatchOperation = async ({\n content,\n rollup,\n source,\n fee,\n gasLimit,\n storageLimit,\n}: TxRollupBatchParams) => {\n return {\n kind: OpKind.TX_ROLLUP_SUBMIT_BATCH,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n content,\n rollup,\n } as RPCTxRollupBatchOperation;\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';\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<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<OpKind, OpKind.ACTIVATION>> => {\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\nexport type RPCOperation =\n | RPCOriginationOperation\n | RPCTransferOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCActivateOperation\n | RPCRegisterGlobalConstantOperation\n | RPCTxRollupOriginationOperation\n | RPCTxRollupBatchOperation\n | RPCTransferTicketOperation\n | RPCIncreasePaidStorageOperation\n | RPCDrainDelegateOperation\n | RPCBallotOperation\n | RPCProposalsOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCSmartRollupOriginateOperation;\n\nexport type PrepareOperationParams = {\n operation: RPCOperation | RPCOperation[];\n source?: string;\n};\n","import {\n MichelsonV1ExpressionBase,\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 Error {\n name = 'TezosOperationError';\n id: string;\n kind: string;\n\n constructor(public errors: TezosGenericOperationError[], public errorDetails?: string) {\n super();\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 name = 'TezosPreapplyFailureError';\n\n constructor(public result: any) {\n super('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)) {\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 (hasMetadataWithResult(content) && content.metadata.operation_result.status === status) {\n errors = errors.concat(content.metadata.operation_result.errors || []);\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 Error {\n public name = 'OriginationOperationError';\n constructor(public message: string) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid estimate value being passed\n */\nexport class InvalidEstimateValueError extends Error {\n public name = 'InvalidEstimateValueError';\n constructor(public message: string) {\n super(message);\n }\n}\n","/**\n * @category Error\n * @description Error that indicates invalid confirmation count has been passed or configured\n */\nexport class InvalidConfirmationCountError extends Error {\n public name = 'InvalidConfirmationCountError';\n constructor(public message: string) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates undefined confirmation has not been specified or configured\n */\nexport class ConfirmationUndefinedError extends Error {\n public name = 'ConfirmationUndefinedError';\n constructor(public message: string) {\n super(message);\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 Error {\n public name = 'InvalidFilterExpressionError';\n constructor(public message: string) {\n super(message);\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 Error {\n public name = 'RPCResponseError';\n constructor(public message: string) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates invalid Preparation parameters being passed\n */\nexport class InvalidPrepareParamsError extends Error {\n public name = 'InvalidOperationParamsError';\n constructor(public opKind: string) {\n super(`No '${opKind}' operation parameters have been passed`);\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResult,\n OperationContentsAndResultReveal,\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 timeoutWith,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { ForgedBytes, hasMetadataWithResult } from './types';\nimport { validateOperation, ValidationResult, InvalidOperationHashError } from '@taquito/utils';\nimport { createObservableFromSubscription } from '../subscribe/create-observable-from-subscription';\nimport { InvalidConfirmationCountError } from '../error';\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 timeoutWith(config.timeout * 1000, throwError(new Error('Confirmation polling timed out')))\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 */\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.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('Confirmation count must be at least 1');\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 { OperationContentsAndResult, OperationContentsAndResultOrigination } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { BATCH_KINDS } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCOperation,\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: RPCOperation[],\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 return result.metadata.operation_result.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 OperationContents,\n OperationContentsAndResult,\n OpKind,\n RpcClientInterface,\n RPCRunOperationParam,\n VotingPeriodBlockResult,\n} from '@taquito/rpc';\nimport { Protocols } from '../constants';\nimport { Context } from '../context';\nimport { Estimate } from '../estimate/estimate';\nimport { RPCResponseError } from '../error';\nimport {\n flattenErrors,\n TezosOperationError,\n TezosPreapplyFailureError,\n InvalidEstimateValueError,\n} from './operation-errors';\nimport { InvalidOperationKindError, DeprecationError } from '@taquito/utils';\nimport {\n ForgedBytes,\n isOpRequireReveal,\n ParamsWithKind,\n PrepareOperationParams,\n RPCOperation,\n RPCOpWithFee,\n RPCOpWithSource,\n} from './types';\n\nexport interface PreparedOperation {\n opOb: {\n branch: string;\n contents: OperationContents[];\n protocol: string;\n };\n counter: number;\n}\n\nexport abstract class OperationEmitter {\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 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 // Originally from sotez (Copyright (c) 2018 Andrew Kishino)\n protected async prepareOperation(\n { operation, source }: PrepareOperationParams,\n pkh?: string\n ): Promise<PreparedOperation> {\n const counters: { [key: string]: number } = {};\n let ops: RPCOperation[] = [];\n\n const blockHashPromise = this.context.readProvider.getBlockHash('head~2');\n const blockProtoPromise = this.context.readProvider.getNextProtocol('head');\n\n if (Array.isArray(operation)) {\n ops = [...operation];\n } else {\n ops = [operation];\n }\n\n // Implicit account who emit the operation\n const publicKeyHash = pkh ? pkh : await this.signer.publicKeyHash();\n let counterPromise: Promise<string | undefined> = Promise.resolve(undefined);\n\n // initializes a currentVotingPeriod if the operation is a ballot op\n let currentVotingPeriodPromise: Promise<VotingPeriodBlockResult | undefined> =\n Promise.resolve(undefined);\n ops.find(async (op) => {\n if (op.kind === 'ballot' || op.kind === 'proposals') {\n try {\n currentVotingPeriodPromise = this.rpc.getCurrentPeriod();\n } catch (e) {\n throw new RPCResponseError(\n `Failed to get the current voting period index: ${JSON.stringify(e)}`\n );\n }\n }\n });\n\n for (let i = 0; i < ops.length; i++) {\n if (isOpRequireReveal(ops[i]) || ops[i].kind === 'reveal') {\n counterPromise = this.context.readProvider.getCounter(publicKeyHash, 'head');\n break;\n }\n }\n\n const [hash, protocol, headCounter, currentVotingPeriod] = await Promise.all([\n blockHashPromise,\n blockProtoPromise,\n counterPromise,\n currentVotingPeriodPromise,\n ]);\n\n const counter = parseInt(headCounter || '0', 10);\n if (!counters[publicKeyHash] || counters[publicKeyHash] < counter) {\n counters[publicKeyHash] = counter;\n }\n\n const getFee = (op: RPCOpWithFee) => {\n const opCounter = ++counters[publicKeyHash];\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 const getSource = (op: RPCOpWithSource) => {\n return {\n source: typeof op.source === 'undefined' ? source || publicKeyHash : op.source,\n };\n };\n\n const constructOps = (cOps: RPCOperation[]): OperationContents[] =>\n cOps.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 ...getSource(op),\n ...getFee(op),\n };\n case OpKind.TRANSACTION: {\n const cops = {\n ...op,\n amount: typeof op.amount !== 'undefined' ? `${op.amount}` : '0',\n ...getSource(op),\n ...getFee(op),\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.TX_ROLLUP_ORIGINATION:\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n case OpKind.UPDATE_CONSENSUS_KEY:\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return {\n ...op,\n ...getSource(op),\n ...getFee(op),\n };\n case OpKind.TRANSFER_TICKET:\n return {\n ...op,\n ticket_amount: `${op.ticket_amount}`,\n ...getSource(op),\n ...getFee(op),\n };\n case OpKind.INCREASE_PAID_STORAGE:\n return {\n ...op,\n amount: `${op.amount}`,\n ...getSource(op),\n ...getFee(op),\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 any).kind);\n }\n });\n\n const contents = constructOps(ops);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter,\n };\n }\n\n protected async forge({ opOb: { branch, contents, protocol }, counter }: PreparedOperation) {\n const forgedBytes = await this.context.forger.forge({ branch, contents });\n\n return {\n opbytes: forgedBytes,\n opOb: {\n branch,\n contents,\n protocol,\n },\n counter,\n };\n }\n\n protected async simulate(op: RPCRunOperationParam) {\n return {\n opResponse: await this.rpc.runOperation(op),\n op,\n context: this.context.clone(),\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\n if (calculatedFee === undefined) {\n calculatedFee = estimation.suggestedFeeMutez;\n }\n\n if (calculatedGas === undefined) {\n calculatedGas = estimation.gasLimit;\n }\n\n if (calculatedStorage === undefined) {\n calculatedStorage = estimation.storageLimit;\n }\n }\n\n return {\n fee: calculatedFee,\n gasLimit: calculatedGas,\n storageLimit: calculatedStorage,\n };\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 { 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 createRevealOperation,\n createTxRollupOriginationOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTxRollupBatchOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract/prepare';\nimport { BatchOperation } from '../operations/batch-operation';\nimport { OperationEmitter } from '../operations/operation-emitter';\nimport {\n ActivationParams,\n DelegateParams,\n OriginateParams,\n RPCOperation,\n TransferParams,\n ParamsWithKind,\n isOpWithFee,\n withKind,\n RevealParams,\n RegisterGlobalConstantParams,\n TxRollupOriginateParams,\n TxRollupBatchParams,\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 {\n validateAddress,\n validateKeyHash,\n InvalidAddressError,\n InvalidKeyHashError,\n ValidationResult,\n InvalidOperationKindError,\n} from '@taquito/utils';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\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 OperationEmitter {\n private operations: ParamsWithKind[] = [];\n\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\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 if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\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 if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, 'param destination');\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 if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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 */\n withActivation({ pkh, secret }: ActivationParams) {\n if (validateKeyHash(pkh) !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh);\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 tx rollup origination operation to the batch\n *\n * @param params Rollup origination operation parameter\n */\n withTxRollupOrigination(params?: TxRollupOriginateParams) {\n this.operations.push({ kind: OpKind.TX_ROLLUP_ORIGINATION, ...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 /**\n *\n * @description Add a tx rollup batch operation to the batch\n *\n * @param params Tx rollup batch operation parameter\n */\n withTxRollupSubmitBatch(params: TxRollupBatchParams) {\n this.operations.push({ kind: OpKind.TX_ROLLUP_SUBMIT_BATCH, ...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.ACTIVATION:\n return {\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.TX_ROLLUP_ORIGINATION:\n return createTxRollupOriginationOperation({\n ...param,\n });\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n return createTxRollupBatchOperation({\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 }\n default:\n throw new InvalidOperationKindError((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 */\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.TX_ROLLUP_ORIGINATION:\n this.withTxRollupOrigination(param);\n break;\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n this.withTxRollupSubmitBatch(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((param as any).kind);\n }\n }\n\n return this;\n }\n\n async toPrepare() {\n const publicKeyHash = await this.signer.publicKeyHash();\n const publicKey = await this.signer.publicKey();\n const estimates = await this.estimator.batch(this.operations);\n\n const revealNeeded = await this.isRevealOpNeeded(this.operations, publicKeyHash);\n let i = revealNeeded ? 1 : 0;\n\n const ops: RPCOperation[] = [];\n for (const op of this.operations) {\n if (isOpWithFee(op)) {\n const estimated = await this.estimate(op, async () => estimates[i]);\n ops.push(await this.getRPCOp({ ...op, ...estimated }));\n } else {\n ops.push({ ...op });\n }\n i++;\n }\n if (revealNeeded) {\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimates[0]);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n }\n\n return ops;\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 publicKey = await this.signer.publicKey();\n const estimates = await this.estimator.batch(this.operations);\n\n const revealNeeded = await this.isRevealOpNeeded(this.operations, publicKeyHash);\n let i = revealNeeded ? 1 : 0;\n\n const ops: RPCOperation[] = [];\n for (const op of this.operations) {\n if (isOpWithFee(op)) {\n const estimated = await this.estimate(op, async () => estimates[i]);\n ops.push(await this.getRPCOp({ ...op, ...estimated }));\n } else {\n ops.push({ ...op });\n }\n i++;\n }\n if (revealNeeded) {\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimates[0]);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n }\n\n const source = (params && params.source) || publicKeyHash;\n const prepared = await this.prepareOperation({\n operation: ops,\n source,\n });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BatchOperation(hash, ops, source, forgedBytes, opResponse, context);\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 { OperationContentsAndResult } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { COST_PER_BYTE } from '../constants';\nimport { flattenOperationResult } from '../operations/operation-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 { 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 publishReplay,\n refCount,\n switchMap,\n takeWhile,\n tap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { Receipt, receiptFromOperation } from './receipt';\nimport { validateOperation, ValidationResult, InvalidOperationHashError } from '@taquito/utils';\nimport { BlockIdentifier } from '../read-provider/interface';\nimport { InvalidConfirmationCountError, ConfirmationUndefinedError } from '../error';\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 publishReplay(1),\n refCount()\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 publishReplay(1),\n refCount()\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 return receiptFromOperation(await this.operationResults());\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 */\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\n const levelDiff = tipBlockHeaderLevel - inclusionBlock.header.level;\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('Confirmation count must be at least 1');\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('Default confirmation count can not be undefined!');\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 {\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';\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 return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public getOriginatedContractAddresses = async (): Promise<string[]> => {\n const opResult = await this.operationResults();\n\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 async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.operationResults();\n\n return (\n op\n .filter((result) => BATCH_KINDS.indexOf(result.kind) !== -1)\n .map((result) => {\n if (hasMetadataWithResult(result)) {\n return result.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\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';\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 return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async delegationOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find((x) => x.kind === OpKind.DELEGATION) as\n | OperationContentsAndResultDelegation\n | undefined;\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 { 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';\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 return operationResult.find(x => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async increasePaidStorageOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find(x => x.kind === OpKind.INCREASE_PAID_STORAGE) as\n | OperationContentsAndResultIncreasePaidStorage\n | undefined;\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 {\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';\n\nexport class OriginationWalletOperation<TWallet extends DefaultWalletType = DefaultWalletType> 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 return findWithKind(operationResult, OpKind.ORIGINATION) as\n | OperationContentsAndResultOrigination\n | undefined;\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n return findWithKind(operationResult, OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\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 { 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';\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 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 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 { BlockResponse } from '@taquito/rpc';\nimport {\n BehaviorSubject,\n concat,\n defer,\n from,\n Observable,\n of,\n range,\n SchedulerLike,\n throwError,\n} from 'rxjs';\nimport {\n concatMap,\n mergeMap,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n timeoutWith,\n} 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';\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 timeoutWith(timeoutMillisec, throwError(new Error('Confirmation polling timed out'))),\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 publishReplay(1),\n refCount()\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 { OperationEmitter } from '../operations/operation-emitter';\nimport { Operation } from '../operations/operations';\nimport { RPCActivateOperation } from '../operations/types';\nimport { TzProvider } from './interface';\nimport { OpKind } from '@taquito/rpc';\nimport {\n validateAddress,\n ValidationResult,\n validateKeyHash,\n InvalidAddressError,\n InvalidKeyHashError,\n} from '@taquito/utils';\n\nexport class RpcTzProvider extends OperationEmitter implements TzProvider {\n constructor(context: Context) {\n super(context);\n }\n\n async getBalance(address: string): Promise<BigNumber> {\n if (validateAddress(address) !== ValidationResult.VALID) {\n throw new InvalidAddressError(address);\n }\n return this.context.readProvider.getBalance(address, 'head');\n }\n\n async getDelegate(address: string): Promise<string | null> {\n if (validateAddress(address) !== ValidationResult.VALID) {\n throw new InvalidAddressError(address);\n }\n return this.context.readProvider.getDelegate(address, 'head');\n }\n\n async activate(pkh: string, secret: string) {\n if (validateKeyHash(pkh) !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh);\n }\n const operation: RPCActivateOperation = {\n kind: OpKind.ACTIVATION,\n pkh,\n secret,\n };\n\n const prepared = await this.prepareOperation({ operation: [operation], source: pkh });\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","/**\n * @category Error\n * @description Error that indicates invalid public key being passed when doing a reveal operation estimate\n */\nexport class RevealEstimateError extends Error {\n name = 'Reveal Estimate Error';\n constructor() {\n super('Unable to estimate the reveal operation, the public key is unknown');\n }\n}\n","import { PreapplyResponse, RPCRunOperationParam, OpKind, ConstantsResponse } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { DEFAULT_FEE, DEFAULT_GAS_LIMIT, DEFAULT_STORAGE_LIMIT } from '../constants';\nimport { OperationEmitter } from '../operations/operation-emitter';\nimport {\n flattenErrors,\n flattenOperationResult,\n TezosOperationError,\n} from '../operations/operation-errors';\nimport {\n DelegateParams,\n isOpWithFee,\n OriginateParams,\n ParamsWithKind,\n PrepareOperationParams,\n RegisterDelegateParams,\n RPCOperation,\n TransferParams,\n RevealParams,\n RegisterGlobalConstantParams,\n TxRollupOriginateParams,\n TxRollupBatchParams,\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 {\n createOriginationOperation,\n createRegisterDelegateOperation,\n createRevealOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createRegisterGlobalConstantOperation,\n createTxRollupOriginationOperation,\n createTxRollupBatchOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createUpdateConsensusKeyOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract/prepare';\nimport {\n validateAddress,\n InvalidAddressError,\n ValidationResult,\n InvalidOperationKindError,\n} from '@taquito/utils';\nimport { RevealEstimateError } from './error';\nimport { ContractMethod, ContractMethodObject, ContractProvider } from '../contract';\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: typeof userDefinedLimit.fee === 'undefined' ? defaultLimits.fee : userDefinedLimit.fee,\n gasLimit:\n typeof userDefinedLimit.gasLimit === 'undefined'\n ? defaultLimits.gasLimit\n : userDefinedLimit.gasLimit,\n storageLimit:\n typeof userDefinedLimit.storageLimit === 'undefined'\n ? defaultLimits.storageLimit\n : userDefinedLimit.storageLimit,\n };\n};\n\n// RPC requires a signature but does not verify it\nconst SIGNATURE_STUB =\n 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg';\n\nexport class RPCEstimateProvider extends OperationEmitter implements EstimationProvider {\n private readonly ALLOCATION_STORAGE = 257;\n private readonly ORIGINATION_STORAGE = 257;\n private readonly OP_SIZE_REVEAL = 128;\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 // Maximum values defined by the protocol\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.ajustGasForBatchOperation(\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 // Fix for Granada where the total gasLimit of a batch can not exceed the hard_gas_limit_per_block.\n // If the total gasLimit of the batch is higher than the hard_gas_limit_per_block,\n // the gasLimit is calculated by dividing the hard_gas_limit_per_block by the number of operation in the batch (numberOfOps).\n // numberOfOps is incremented by 1 for safety in case a reveal operation is needed\n private ajustGasForBatchOperation(\n gasLimitBlock: BigNumber,\n gaslimitOp: BigNumber,\n numberOfOps: number\n ) {\n return BigNumber.min(gaslimitOp, gasLimitBlock.div(numberOfOps + 1));\n }\n\n private getEstimationPropertiesFromOperationContent(\n content: PreapplyResponse['contents'][0],\n size: number,\n costPerByte: BigNumber,\n tx_rollup_origination_size: number\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 += 'originated_rollup' in result ? tx_rollup_origination_size : 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 prepareEstimate(\n params: PrepareOperationParams,\n constants: Pick<\n ConstantsResponse,\n 'cost_per_byte' | 'tx_rollup_origination_size' | 'smart_rollup_origination_size'\n >,\n pkh: string\n ) {\n const prepared = await this.prepareOperation(params, pkh);\n const {\n opbytes,\n opOb: { branch, contents },\n } = await this.forge(prepared);\n const operation: RPCRunOperationParam = {\n operation: { branch, contents, signature: SIGNATURE_STUB },\n chain_id: await this.context.readProvider.getChainId(),\n };\n\n const { opResponse } = await this.simulate(operation);\n const { cost_per_byte, tx_rollup_origination_size } = 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(params.operation) && params.operation.length > 1) {\n numberOfOps =\n opResponse.contents[0].kind === 'reveal'\n ? params.operation.length - 1\n : params.operation.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 tx_rollup_origination_size ?? 0\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({ fee, storageLimit, gasLimit, ...rest }: OriginateParams) {\n const { publicKeyHash } = await this.getKeys();\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(publicKeyHash, protocolConstants);\n const op = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n })\n );\n const isRevealNeeded = await this.isRevealOpNeeded([op], publicKeyHash);\n const ops = isRevealNeeded ? await this.addRevealOp([op], publicKeyHash) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: publicKeyHash },\n protocolConstants,\n publicKeyHash\n );\n if (isRevealNeeded) {\n estimateProperties.shift();\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 if (validateAddress(rest.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.to);\n }\n if (rest.source && validateAddress(rest.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source);\n }\n const pkh = (await this.getKeys()).publicKeyHash;\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 const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 if (validateAddress(rest.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.destination, 'param destination');\n }\n if (rest.source && validateAddress(rest.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source ?? '', 'param source');\n }\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTransferTicketOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 if (rest.source && validateAddress(rest.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source);\n }\n if (rest.delegate && validateAddress(rest.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.delegate);\n }\n\n const pkh = (await this.getKeys()).publicKeyHash;\n const sourceOrDefault = rest.source || pkh;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(sourceOrDefault, protocolConstants);\n const op = await createSetDelegateOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { publicKeyHash } = await this.getKeys();\n let operations: RPCOperation[] = [];\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(\n publicKeyHash,\n protocolConstants,\n params.length\n );\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n operations.push(\n await createTransferOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.ORIGINATION:\n operations.push(\n await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n )\n );\n break;\n case OpKind.DELEGATION:\n operations.push(\n await createSetDelegateOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.ACTIVATION:\n operations.push({\n ...param,\n ...DEFAULT_PARAMS,\n });\n break;\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n operations.push(\n await createRegisterGlobalConstantOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.TX_ROLLUP_ORIGINATION:\n operations.push(\n await createTxRollupOriginationOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n operations.push(\n await createTxRollupBatchOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.TRANSFER_TICKET:\n operations.push(\n await createTransferTicketOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.INCREASE_PAID_STORAGE:\n operations.push(\n await createIncreasePaidStorageOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n operations.push(\n await createSmartRollupAddMessagesOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.SMART_ROLLUP_ORIGINATE: {\n const originationProof = await this.rpc.getOriginationProof({\n kernel: param.kernel,\n kind: param.pvmKind,\n });\n operations.push(\n await createSmartRollupOriginateOperation({\n ...param,\n originationProof,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n }\n default:\n throw new InvalidOperationKindError(param.kind);\n }\n }\n const isRevealNeeded = await this.isRevealOpNeeded(operations, publicKeyHash);\n operations = isRevealNeeded ? await this.addRevealOp(operations, publicKeyHash) : operations;\n const estimateProperties = await this.prepareEstimate(\n { operation: operations, source: publicKeyHash },\n protocolConstants,\n publicKeyHash\n );\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(params: RegisterDelegateParams) {\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createRegisterDelegateOperation({ ...params, ...DEFAULT_PARAMS }, pkh);\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 DEFAULT_PARAMS = await this.getAccountLimits(publicKeyHash, protocolConstants);\n const op = await createRevealOperation(\n {\n ...params,\n ...DEFAULT_PARAMS,\n },\n publicKeyHash,\n publicKey\n );\n const estimateProperties = await this.prepareEstimate(\n { operation: op, source: publicKeyHash },\n protocolConstants,\n publicKeyHash\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 pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createRegisterGlobalConstantOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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(params: IncreasePaidStorageParams) {\n const { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createIncreasePaidStorageOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a rollup origination operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TxRollupOriginateParams Originate tx rollup operation parameter\n */\n async txRollupOriginate(params?: TxRollupOriginateParams) {\n params = params ? params : {};\n const { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTxRollupOriginationOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a tx rollup batch operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async txRollupSubmitBatch(params: TxRollupBatchParams) {\n const { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTxRollupBatchOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createUpdateConsensusKeyOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createSmartRollupAddMessagesOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const originationProof = await this.rpc.getOriginationProof({\n kind: params.pvmKind,\n kernel: params.kernel,\n });\n\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createSmartRollupOriginateOperation({\n ...rest,\n originationProof,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 params = contractMethod.toTransferParams();\n const { fee, storageLimit, gasLimit, ...rest } = params;\n\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\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 isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n private async addRevealOp(op: RPCOperation[], pkh: string) {\n const { publicKey } = await this.getKeys();\n if (!publicKey) {\n throw new RevealEstimateError();\n }\n op.unshift(\n await createRevealOperation(\n {\n ...{\n fee: DEFAULT_FEE.REVEAL,\n gasLimit: DEFAULT_GAS_LIMIT.REVEAL,\n storageLimit: DEFAULT_STORAGE_LIMIT.REVEAL,\n },\n },\n pkh,\n await this.signer.publicKey()\n )\n );\n return op;\n }\n}\n","import { OperationContentsAndResult, OperationContentsAndResultDelegation } from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCDelegateOperation,\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: RPCDelegateOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultOrigination } 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 './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n hasMetadataWithResult,\n RPCOriginationOperation,\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: RPCOriginationOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 */\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} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCRegisterGlobalConstantOperation,\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: RPCRegisterGlobalConstantOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultReveal } from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCRevealOperation,\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: RPCRevealOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultTransaction } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult, MergedOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCTransferOperation,\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: RPCTransferOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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","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 {\n prim: 'IF_NONE',\n args: [[[{ prim: 'UNIT' }, { prim: 'FAILWITH' }]], []],\n },\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 { 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 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 { 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 WalletIncreasePaidStorageParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\n\nimport {\n validateAddress,\n validateContractAddress,\n InvalidContractAddressError,\n InvalidAddressError,\n ValidationResult,\n InvalidOperationKindError,\n} from '@taquito/utils';\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 if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\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 if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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\n *\n * @param param\n */\n withIncreasePaidStorage(params: WalletIncreasePaidStorageParams) {\n if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination);\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((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 */\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((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 if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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 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 if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\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 if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination);\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 */\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 if (validateContractAddress(address) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address);\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","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","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 { 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 InvalidViewParameterError,\n ViewSimulationError,\n validateAndExtractFailwith,\n} from '../errors';\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 } from '@taquito/michelson-encoder';\nimport {\n EntrypointsResponse,\n MichelsonV1Expression,\n RpcClientInterface,\n ScriptResponse,\n} from '@taquito/rpc';\nimport {\n validateChain,\n validateContractAddress,\n ValidationResult,\n InvalidChainIdError,\n DeprecationError,\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';\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 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 && validateChain(chainId) !== ValidationResult.VALID) {\n throw new InvalidChainIdError(chainId);\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\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._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","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 OperationContentsAndResultTxRollupOrigination,\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 RPCTxRollupOriginationOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description TxRollupOriginationOperation provides utility functions to fetch a newly issued operation of kind tx_rollup_origination\n */\nexport class TxRollupOriginationOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n /**\n * @description Address the newly originate rollup\n */\n public readonly originatedRollup?: string;\n constructor(\n hash: string,\n private readonly params: RPCTxRollupOriginationOperation,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n\n this.originatedRollup = this.operationResults && this.operationResults.originated_rollup;\n }\n\n get operationResults() {\n const rollupOriginationOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'tx_rollup_origination'\n ) as OperationContentsAndResultTxRollupOrigination);\n const result =\n rollupOriginationOp &&\n rollupOriginationOp.metadata &&\n rollupOriginationOp.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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 OperationContentsAndResultTxRollupSubmitBatch,\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 RPCTxRollupBatchOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description TxRollupBatchOperation provides utility functions to fetch a newly issued operation of kind tx_rollup_submit_batch\n */\nexport class TxRollupBatchOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: RPCTxRollupBatchOperation,\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 txrollupBatchOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'tx_rollup_submit_batch'\n ) as OperationContentsAndResultTxRollupSubmitBatch);\n const result =\n txrollupBatchOp && txrollupBatchOp.metadata && txrollupBatchOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get content() {\n return this.params.content;\n }\n\n get fee() {\n return this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultBallot } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes, RPCBallotOperation } 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: RPCBallotOperation,\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 { OperationContentsAndResult, OperationContentsAndResultDrainDelegate } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes, RPCDrainDelegateOperation } 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: RPCDrainDelegateOperation,\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 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 RPCTransferTicketOperation,\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: RPCTransferTicketOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCIncreasePaidStorageOperation,\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: RPCIncreasePaidStorageOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultProposals } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes, RPCProposalsOperation } 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: RPCProposalsOperation,\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} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCUpdateConsensusKeyOperation,\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: RPCUpdateConsensusKeyOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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} from '@taquito/rpc';\n\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n RPCSmartRollupAddMessagesOperation,\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: RPCSmartRollupAddMessagesOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 OpKind,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCSmartRollupOriginateOperation,\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: RPCSmartRollupOriginateOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OpKind, ScriptResponse } from '@taquito/rpc';\nimport { encodeExpr } from '@taquito/utils';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { DelegateOperation } from '../operations/delegate-operation';\nimport { OperationEmitter } from '../operations/operation-emitter';\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 isOpRequireReveal,\n OriginateParams,\n TxRollupOriginateParams,\n ParamsWithKind,\n RegisterDelegateParams,\n RegisterGlobalConstantParams,\n RevealParams,\n RPCOperation,\n TransferParams,\n withKind,\n TxRollupBatchParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n DrainDelegateParams,\n BallotParams,\n ProposalsParams,\n UpdateConsensusKeyParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n} from '../operations/types';\nimport { DefaultContractType, ContractStorageType, ContractAbstraction } from './contract';\nimport { InvalidDelegationSource, RevealOperationError } from './errors';\nimport { ContractProvider, ContractSchema, StorageProvider } from './interface';\nimport {\n createOriginationOperation,\n createRegisterDelegateOperation,\n createRegisterGlobalConstantOperation,\n createRevealOperation,\n createTxRollupOriginationOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTxRollupBatchOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createDrainDelegateOperation,\n createBallotOperation,\n createProposalsOperation,\n createUpdateConsensusKeyOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from './prepare';\nimport { smartContractAbstractionSemantic } from './semantic';\nimport {\n validateAddress,\n validateContractAddress,\n InvalidContractAddressError,\n InvalidAddressError,\n ValidationResult,\n} from '@taquito/utils';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { TxRollupOriginationOperation } from '../operations/tx-rollup-origination-operation';\nimport { TxRollupBatchOperation } from '../operations/tx-rollup-batch-operation';\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';\n\nexport class RpcContractProvider\n extends OperationEmitter\n implements ContractProvider, StorageProvider\n{\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n contractProviderTypeSymbol = Symbol.for('taquito-contract-provider-type-symbol');\n\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 *\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 if (validateContractAddress(contract) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract);\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 *\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 if (validateContractAddress(contract) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract);\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 private async addRevealOperationIfNeeded(operation: RPCOperation, publicKeyHash: string) {\n if (isOpRequireReveal(operation)) {\n const ops: RPCOperation[] = [operation];\n const publicKey = await this.signer.publicKey();\n const estimateReveal = await this.estimator.reveal();\n if (estimateReveal) {\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimateReveal);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n return ops;\n }\n }\n return operation;\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\n const publicKeyHash = await this.signer.publicKeyHash();\n const operation = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...params,\n ...estimate,\n })\n );\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const preparedOrigination = await this.prepareOperation({\n operation: ops,\n source: publicKeyHash,\n });\n const forgedOrigination = await this.forge(preparedOrigination);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(forgedOrigination);\n return new OriginationOperation<TContract>(\n hash,\n operation,\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 if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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 estimate = await this.estimate(params, this.estimator.setDelegate.bind(this.estimator));\n const publicKeyHash = await this.signer.publicKeyHash();\n const operation = await createSetDelegateOperation({ ...params, ...estimate });\n const sourceOrDefault = params.source || publicKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({\n operation: ops,\n source: sourceOrDefault,\n });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(\n hash,\n operation,\n sourceOrDefault,\n forgedBytes,\n opResponse,\n context\n );\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 const operation = await createRegisterDelegateOperation({ ...params, ...estimate }, source);\n const ops = await this.addRevealOperationIfNeeded(operation, source);\n const prepared = await this.prepareOperation({ operation: ops });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(hash, operation, 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\n async transfer(params: TransferParams) {\n if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\n }\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n\n const publickKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(params, this.estimator.transfer.bind(this.estimator));\n const operation = await createTransferOperation({\n ...params,\n ...estimate,\n });\n const source = params.source || publickKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publickKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransactionOperation(hash, operation, 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 if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, 'param destination');\n }\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, 'param source');\n }\n\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.transferTicket.bind(this.estimator)\n );\n const operation = await createTransferTicketOperation({\n ...params,\n ...estimate,\n });\n const source = params.source ?? publicKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransferTicketOperation(hash, operation, 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 operation = await createRevealOperation(\n {\n ...estimated,\n },\n publicKeyHash,\n await this.signer.publicKey()\n );\n const prepared = await this.prepareOperation({ operation, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RevealOperation(hash, operation, 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 publickKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.registerGlobalConstant.bind(this.estimator)\n );\n const operation = await createRegisterGlobalConstantOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publickKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publickKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RegisterGlobalConstantOperation(\n hash,\n operation,\n publickKeyHash,\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 const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.increasePaidStorage.bind(this.estimator)\n );\n const operation = await createIncreasePaidStorageOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new IncreasePaidStorageOperation(\n hash,\n operation,\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 operation = await createDrainDelegateOperation({\n ...params,\n });\n const prepared = await this.prepareOperation({ operation: operation });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DrainDelegateOperation(hash, operation, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Originate a new tx rollup. 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 TxRollupOriginateParams Originate rollup operation parameter\n */\n async txRollupOriginate(params?: TxRollupOriginateParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params ? params : {},\n this.estimator.txRollupOriginate.bind(this.estimator)\n );\n const operation = await createTxRollupOriginationOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TxRollupOriginationOperation(\n hash,\n operation,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description Submit a tx rollup batch. 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 TxRollupBatchParams Batch tx rollup operation parameter\n */\n async txRollupSubmitBatch(params: TxRollupBatchParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.txRollupSubmitBatch.bind(this.estimator)\n );\n const operation = await createTxRollupBatchOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TxRollupBatchOperation(\n hash,\n operation,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\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\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n const source = params.source ?? publicKeyHash;\n const operation = await createBallotOperation({\n ...params,\n source,\n });\n const prepared = await this.prepareOperation({ operation, source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BallotOperation(hash, operation, 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\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n const source = params.source ?? publicKeyHash;\n const operation = await createProposalsOperation({\n ...params,\n source,\n });\n const prepared = await this.prepareOperation({ operation, source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new ProposalsOperation(hash, operation, 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 const operation = await createUpdateConsensusKeyOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new UpdateConsensusKeyOperation(\n hash,\n operation,\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 const operation = await createSmartRollupAddMessagesOperation({\n ...params,\n ...estimate,\n });\n\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\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 operation,\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 operation = await createSmartRollupOriginateOperation({\n ...completeParams,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\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 operation,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n async at<T extends DefaultContractType = DefaultContractType>(\n address: string,\n contractAbstractionComposer: ContractAbstractionComposer<T> = (x) => x as any\n ): Promise<T> {\n if (validateContractAddress(address) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address);\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('Invalid code parameter', 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","/**\n * @category Error\n * @description Error that indicates that a global constant does not exist\n */\nexport class GlobalConstantNotFound extends Error {\n name = 'GlobalConstantNotFound';\n\n constructor(public hash: string) {\n super(\n `Please load the value associated with the constant ${hash} using the loadGlobalConstant method of the DefaultGlobalConstantsProvider.`\n );\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 Error {\n name = 'UnconfiguredGlobalConstantsProviderError';\n\n constructor() {\n super(\n 'No global constants provider has been configured. Please configure one by calling setGlobalConstantsProvider({globalConstantsProvider}) on your TezosToolkit instance.'\n );\n }\n}\n","import { Expr } from \"@taquito/michel-codec\";\nimport { UnconfiguredGlobalConstantsProviderError } from \"./error\";\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}","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 {\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 '../error';\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 = (result: InternalOperationResult, address?: string, tag?: string) => {\n if (result.kind === 'event') {\n if (address && tag) {\n return result.source === address && result.tag === tag;\n } else if (address && !tag) {\n return result.source === address;\n } else if (tag) {\n return result.tag === tag;\n } else {\n return true;\n }\n } else {\n return false;\n }\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('Filter expression must contain either and/or property');\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';\n\n/**\n * @category Error\n * @description Error that indicates an unsupported event being passed or used\n */\nexport class UnsupportedEventError extends Error {\n public name = 'UnsupportedEventError';\n constructor(public message: string) {\n super(message);\n }\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();\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(`Trying to register on an unsupported event: ${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(`Trying to unregister on an unsupported event: ${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)) {\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 {\n RpcClientInterface,\n OperationContents,\n OpKind,\n VotingPeriodBlockResult,\n PreapplyParams,\n} from '@taquito/rpc';\nimport {\n DelegateParams,\n RevealParams,\n RPCOperation,\n RPCOpWithFee,\n RPCOpWithSource,\n isOpRequireReveal,\n RegisterGlobalConstantParams,\n TransferParams,\n OriginateParams,\n TxRollupOriginateParams,\n TxRollupBatchParams,\n UpdateConsensusKeyParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n BallotParams,\n ProposalsParams,\n DrainDelegateParams,\n ParamsWithKind,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n} from '../operations/types';\nimport { PreparationProvider, PreparedOperation } from './interface';\nimport { Protocols } from '../constants';\nimport { InvalidOperationKindError, DeprecationError } from '@taquito/utils';\nimport { RPCResponseError } from '../error';\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 RevealOperationError,\n createTxRollupOriginationOperation,\n createTxRollupBatchOperation,\n createUpdateConsensusKeyOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createBallotOperation,\n createProposalsOperation,\n createDrainDelegateOperation,\n DefaultContractType,\n ContractStorageType,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract';\nimport { Estimate } from '../estimate';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { ForgeParams } from '@taquito/local-forging';\n\n/**\n * @description PrepareProvider is a utility class to output the prepared format of an operation\n */\nexport class PrepareProvider implements PreparationProvider {\n #counters: { [key: string]: number };\n\n constructor(protected context: Context) {\n this.#counters = {};\n }\n\n get rpc(): RpcClientInterface {\n return this.context.rpc;\n }\n\n get signer() {\n return this.context.signer;\n }\n\n get estimate() {\n return this.context.estimate;\n }\n\n get parser() {\n return this.context.parser;\n }\n\n private async getPkh() {\n return await this.context.signer.publicKeyHash();\n }\n\n private async getBlockHash() {\n return this.context.readProvider.getBlockHash('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 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 buildEstimates(estimate: Estimate) {\n return {\n fee: estimate.suggestedFeeMutez,\n gasLimit: estimate.gasLimit,\n storageLimit: estimate.storageLimit,\n };\n }\n\n private async addRevealOperationIfNeeded(operation: RPCOperation, publicKeyHash: string) {\n if (isOpRequireReveal(operation)) {\n const ops: RPCOperation[] = [operation];\n const publicKey = await this.signer.publicKey();\n const estimateReveal = await this.estimate.reveal();\n if (estimateReveal) {\n const estimatedReveal = this.buildEstimates(estimateReveal);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n return ops;\n }\n }\n return operation;\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.TX_ROLLUP_ORIGINATION:\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\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 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(params: RevealParams): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.reveal(params);\n if (estimate) {\n const estimates = this.buildEstimates(estimate);\n const op = await createRevealOperation(\n {\n ...estimates,\n },\n pkh,\n await this.signer.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 } else {\n throw new RevealOperationError(`The publicKeyHash '${pkh}' has already been revealed.`);\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 params: OriginateParams<ContractStorageType<TContract>>,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.originate(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...params,\n ...estimates,\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(params: TransferParams, source?: string): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.transfer(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTransferOperation({\n ...params,\n ...estimates,\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 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(params: DelegateParams, source?: string): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.setDelegate(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createSetDelegateOperation({\n ...params,\n ...estimates,\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 params: RegisterGlobalConstantParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.registerGlobalConstant(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createRegisterGlobalConstantOperation({\n ...params,\n ...estimates,\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 tx_rollup_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 txRollupOrigination(\n params?: TxRollupOriginateParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.txRollupOriginate(params);\n\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTxRollupOriginationOperation({\n ...params,\n ...estimates,\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 tx_rollup_submit_batch 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 txRollupSubmitBatch(\n params: TxRollupBatchParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.txRollupSubmitBatch(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTxRollupBatchOperation({\n ...params,\n ...estimates,\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 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 params: UpdateConsensusKeyParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.updateConsensusKey(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createUpdateConsensusKeyOperation({\n ...params,\n ...estimates,\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 params: IncreasePaidStorageParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.increasePaidStorage(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createIncreasePaidStorageOperation({\n ...params,\n ...estimates,\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 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.signer.publicKeyHash();\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.signer.publicKeyHash();\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.signer.publicKeyHash();\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(params: TransferTicketParams, source?: string): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.transferTicket(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTransferTicketOperation({\n ...params,\n ...estimates,\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 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 params: SmartRollupAddMessagesParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.smartRollupAddMessages(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createSmartRollupAddMessagesOperation({\n ...params,\n ...estimates,\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, 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(params: SmartRollupOriginateParams): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const originationProof = await this.rpc.getOriginationProof({\n kind: params.pvmKind,\n kernel: params.kernel,\n });\n const completeParams = { ...params, originationProof };\n const estimate = await this.estimate.smartRollupOriginate(completeParams);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createSmartRollupOriginateOperation({\n ...completeParams,\n ...estimates,\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);\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[]): Promise<PreparedOperation> {\n // const ops = this.convertIntoArray(operation);\n const pkh = await this.signer.publicKeyHash();\n const batch = new OperationBatch(this.context, this.estimate);\n\n if (Array.isArray(batchParams)) {\n batch.with(batchParams);\n }\n\n const ops = await batch.toPrepare();\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 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.signer.publicKeyHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const params = contractMethod.toTransferParams();\n const estimate = await this.estimate.transfer(params);\n\n const ops = [\n {\n kind: OpKind.TRANSACTION,\n fee: params.fee ?? estimate.suggestedFeeMutez,\n gas_limit: params.gasLimit ?? estimate.gasLimit,\n storage_limit: params.storageLimit ?? estimate.storageLimit,\n amount: String(params.amount),\n destination: params.to,\n },\n ] as RPCOperation[];\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 { 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\": \"eae97d2ac6024edb6c13e224cc5061abe82ef05c\",\n \"version\": \"16.1.2-beta-RC.0\"\n};\n","import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\n\n/**\n * @category Error\n * @description Error that indicates a value mismatch when forging\n */\nexport class ForgingMismatchError extends Error {\n name = 'ForgingMismatchError';\n constructor(public results: string[]) {\n super('Forging mismatch error');\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a forger not being specified in TezosToolkit\n */\nexport class UnspecifiedForgerError extends Error {\n name = 'UnspecifiedForgerError';\n constructor() {\n super('At least one forger must be specified');\n }\n}\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 './error';\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';\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 './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/error';\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}\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.api.tez.ie/', 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 }: 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\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.api.tez.ie/')\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 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":["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/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/operation-errors.ts","../src/error.ts","../src/operations/operations.ts","../src/operations/batch-operation.ts","../src/operations/operation-emitter.ts","../src/batch/rpc-batch-provider.ts","../src/wallet/receipt.ts","../src/wallet/operation.ts","../src/wallet/batch-operation.ts","../src/wallet/delegation-operation.ts","../src/wallet/increase-paid-storage-operation.ts","../src/wallet/origination-operation.ts","../src/wallet/transaction-operation.ts","../src/wallet/operation-factory.ts","../src/tz/rpc-tz-provider.ts","../src/estimate/estimate.ts","../src/estimate/error.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/manager-lambda.ts","../src/contract/view_lambda.ts","../src/contract/compose.ts","../src/contract/contract-methods/contract-method-flat-param.ts","../src/contract/sapling-state-abstraction.ts","../src/wallet/wallet.ts","../src/wallet/legacy.ts","../src/contract/contract-methods/contract-method-object-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/big-map.ts","../src/contract/semantic.ts","../src/operations/tx-rollup-origination-operation.ts","../src/operations/tx-rollup-batch-operation.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/error.ts","../src/global-constants/noop-global-constants-provider.ts","../src/read-provider/rpc-read-adapter.ts","../src/subscribe/filters.ts","../src/subscribe/observable-subscription.ts","../src/subscribe/polling-subcribe-provider.ts","../src/forger/taquito-local-forger.ts","../src/prepare/prepare-provider.ts","../src/context.ts","../src/version.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 { Signer } from './interface';\n\n/**\n * @category Error\n * @description Error that indicates the signer has been unconfigured in the TezosToolkit instance\n */\nexport class UnconfiguredSignerError extends Error {\n name = 'UnconfiguredSignerError';\n\n constructor() {\n super(\n 'No signer has been configured. Please configure one by calling setProvider({signer}) on your TezosToolkit instance.'\n );\n }\n}\n\n/**\n * @description Default signer implementation which does nothing and produce invalid signature\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 REVEAL = 1100,\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 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.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}\n","import { 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 Error {\n name = 'Invalid parameters error';\n constructor(public smartContractMethodName: string, public sigs: any[], public args: any[]) {\n super(\n `${smartContractMethodName} Received ${\n args.length\n } arguments while expecting one of the following signatures (${JSON.stringify(sigs)})`\n );\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 Error {\n name = 'Invalid delegation source error';\n\n constructor(public source: string) {\n super(\n `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/**\n * @category Error\n * @description Error that indicates an invalid smart contract code parameter being passed or used\n */\nexport class InvalidCodeParameter extends Error {\n public name = 'InvalidCodeParameter';\n constructor(public message: string, public readonly data: any) {\n super(message);\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 Error {\n public name = 'InvalidInitParameter';\n constructor(public message: string, public readonly data: any) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates invalid view parameter of a smart contract\n */\nexport class InvalidViewParameterError extends Error {\n name = 'Invalid view parameters error';\n cause: any;\n constructor(\n public smartContractViewName: string,\n public sigs: any,\n public args: any,\n public originalError: any\n ) {\n super(\n `Unable to encode the parameter of the view: ${smartContractViewName}. Received ${args} as parameter while expecting one of the following signatures (${JSON.stringify(\n sigs\n )})`\n );\n this.cause = originalError;\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a failure when conducting a view simulation\n */\nexport class ViewSimulationError extends Error {\n name = 'ViewSimulationError';\n constructor(\n public message: string,\n public viewName: string,\n public failWith?: MichelsonV1Expression,\n public originalError?: any\n ) {\n super(message);\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 Error {\n public name = 'InvalidViewSimulationContext';\n constructor(public info: string) {\n super(`${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 Error {\n public name = 'RevealOperationError';\n constructor(public message: string) {\n super(message);\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 Error {\n public name = 'OriginationParameterError';\n constructor(public message: string) {\n super(message);\n }\n}\n\nexport class IntegerError extends Error {\n public name = 'IntegerError';\n constructor(public message: string) {\n super(message);\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 TxRollupOriginateParams,\n RPCTxRollupOriginationOperation,\n TxRollupBatchParams,\n RPCTxRollupBatchOperation,\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} from '../operations/types';\nimport { DEFAULT_FEE, DEFAULT_GAS_LIMIT, DEFAULT_STORAGE_LIMIT } from '../constants';\nimport { format } from '@taquito/utils';\nimport {\n InvalidCodeParameter,\n InvalidInitParameter,\n OriginationParameterError,\n IntegerError,\n} from './errors';\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 IntegerError(`Unexpected Invalid Integer ${balance}`);\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 = DEFAULT_GAS_LIMIT.REVEAL,\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,\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 createTxRollupOriginationOperation = async ({\n source,\n fee,\n gasLimit,\n storageLimit,\n}: TxRollupOriginateParams) => {\n return {\n kind: OpKind.TX_ROLLUP_ORIGINATION,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n tx_rollup_origination: {},\n } as RPCTxRollupOriginationOperation;\n};\n\nexport const createTxRollupBatchOperation = async ({\n content,\n rollup,\n source,\n fee,\n gasLimit,\n storageLimit,\n}: TxRollupBatchParams) => {\n return {\n kind: OpKind.TX_ROLLUP_SUBMIT_BATCH,\n fee,\n gas_limit: gasLimit,\n storage_limit: storageLimit,\n source,\n content,\n rollup,\n } as RPCTxRollupBatchOperation;\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';\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<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<OpKind, OpKind.ACTIVATION>> => {\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\nexport type RPCOperation =\n | RPCOriginationOperation\n | RPCTransferOperation\n | RPCDelegateOperation\n | RPCRevealOperation\n | RPCActivateOperation\n | RPCRegisterGlobalConstantOperation\n | RPCTxRollupOriginationOperation\n | RPCTxRollupBatchOperation\n | RPCTransferTicketOperation\n | RPCIncreasePaidStorageOperation\n | RPCDrainDelegateOperation\n | RPCBallotOperation\n | RPCProposalsOperation\n | RPCUpdateConsensusKeyOperation\n | RPCSmartRollupAddMessagesOperation\n | RPCSmartRollupOriginateOperation;\n\nexport type PrepareOperationParams = {\n operation: RPCOperation | RPCOperation[];\n source?: string;\n};\n","import {\n MichelsonV1ExpressionBase,\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 Error {\n name = 'TezosOperationError';\n id: string;\n kind: string;\n\n constructor(public errors: TezosGenericOperationError[], public errorDetails?: string) {\n super();\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 name = 'TezosPreapplyFailureError';\n\n constructor(public result: any) {\n super('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)) {\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 (hasMetadataWithResult(content) && content.metadata.operation_result.status === status) {\n errors = errors.concat(content.metadata.operation_result.errors || []);\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 Error {\n public name = 'OriginationOperationError';\n constructor(public message: string) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates an invalid estimate value being passed\n */\nexport class InvalidEstimateValueError extends Error {\n public name = 'InvalidEstimateValueError';\n constructor(public message: string) {\n super(message);\n }\n}\n","/**\n * @category Error\n * @description Error that indicates invalid confirmation count has been passed or configured\n */\nexport class InvalidConfirmationCountError extends Error {\n public name = 'InvalidConfirmationCountError';\n constructor(public message: string) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates undefined confirmation has not been specified or configured\n */\nexport class ConfirmationUndefinedError extends Error {\n public name = 'ConfirmationUndefinedError';\n constructor(public message: string) {\n super(message);\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 Error {\n public name = 'InvalidFilterExpressionError';\n constructor(public message: string) {\n super(message);\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 Error {\n public name = 'RPCResponseError';\n constructor(public message: string) {\n super(message);\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates invalid Preparation parameters being passed\n */\nexport class InvalidPrepareParamsError extends Error {\n public name = 'InvalidOperationParamsError';\n constructor(public opKind: string) {\n super(`No '${opKind}' operation parameters have been passed`);\n }\n}\n","import {\n BlockResponse,\n OperationContentsAndResult,\n OperationContentsAndResultReveal,\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 timeoutWith,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { ForgedBytes, hasMetadataWithResult } from './types';\nimport { validateOperation, ValidationResult, InvalidOperationHashError } from '@taquito/utils';\nimport { createObservableFromSubscription } from '../subscribe/create-observable-from-subscription';\nimport { InvalidConfirmationCountError } from '../error';\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 timeoutWith(config.timeout * 1000, throwError(new Error('Confirmation polling timed out')))\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 */\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.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('Confirmation count must be at least 1');\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 { OperationContentsAndResult, OperationContentsAndResultOrigination } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { BATCH_KINDS } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCOperation,\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: RPCOperation[],\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 return result.metadata.operation_result.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 OperationContents,\n OperationContentsAndResult,\n OpKind,\n RpcClientInterface,\n RPCRunOperationParam,\n VotingPeriodBlockResult,\n} from '@taquito/rpc';\nimport { Protocols } from '../constants';\nimport { Context } from '../context';\nimport { Estimate } from '../estimate/estimate';\nimport { RPCResponseError } from '../error';\nimport {\n flattenErrors,\n TezosOperationError,\n TezosPreapplyFailureError,\n InvalidEstimateValueError,\n} from './operation-errors';\nimport { InvalidOperationKindError, DeprecationError } from '@taquito/utils';\nimport {\n ForgedBytes,\n isOpRequireReveal,\n ParamsWithKind,\n PrepareOperationParams,\n RPCOperation,\n RPCOpWithFee,\n RPCOpWithSource,\n} from './types';\n\nexport interface PreparedOperation {\n opOb: {\n branch: string;\n contents: OperationContents[];\n protocol: string;\n };\n counter: number;\n}\n\nexport abstract class OperationEmitter {\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 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 // Originally from sotez (Copyright (c) 2018 Andrew Kishino)\n protected async prepareOperation(\n { operation, source }: PrepareOperationParams,\n pkh?: string\n ): Promise<PreparedOperation> {\n const counters: { [key: string]: number } = {};\n let ops: RPCOperation[] = [];\n\n const blockHashPromise = this.context.readProvider.getBlockHash('head~2');\n const blockProtoPromise = this.context.readProvider.getNextProtocol('head');\n\n if (Array.isArray(operation)) {\n ops = [...operation];\n } else {\n ops = [operation];\n }\n\n // Implicit account who emit the operation\n const publicKeyHash = pkh ? pkh : await this.signer.publicKeyHash();\n let counterPromise: Promise<string | undefined> = Promise.resolve(undefined);\n\n // initializes a currentVotingPeriod if the operation is a ballot op\n let currentVotingPeriodPromise: Promise<VotingPeriodBlockResult | undefined> =\n Promise.resolve(undefined);\n ops.find(async (op) => {\n if (op.kind === 'ballot' || op.kind === 'proposals') {\n try {\n currentVotingPeriodPromise = this.rpc.getCurrentPeriod();\n } catch (e) {\n throw new RPCResponseError(\n `Failed to get the current voting period index: ${JSON.stringify(e)}`\n );\n }\n }\n });\n\n for (let i = 0; i < ops.length; i++) {\n if (isOpRequireReveal(ops[i]) || ops[i].kind === 'reveal') {\n counterPromise = this.context.readProvider.getCounter(publicKeyHash, 'head');\n break;\n }\n }\n\n const [hash, protocol, headCounter, currentVotingPeriod] = await Promise.all([\n blockHashPromise,\n blockProtoPromise,\n counterPromise,\n currentVotingPeriodPromise,\n ]);\n\n const counter = parseInt(headCounter || '0', 10);\n if (!counters[publicKeyHash] || counters[publicKeyHash] < counter) {\n counters[publicKeyHash] = counter;\n }\n\n const getFee = (op: RPCOpWithFee) => {\n const opCounter = ++counters[publicKeyHash];\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 const getSource = (op: RPCOpWithSource) => {\n return {\n source: typeof op.source === 'undefined' ? source || publicKeyHash : op.source,\n };\n };\n\n const constructOps = (cOps: RPCOperation[]): OperationContents[] =>\n cOps.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 ...getSource(op),\n ...getFee(op),\n };\n case OpKind.TRANSACTION: {\n const cops = {\n ...op,\n amount: typeof op.amount !== 'undefined' ? `${op.amount}` : '0',\n ...getSource(op),\n ...getFee(op),\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.TX_ROLLUP_ORIGINATION:\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n case OpKind.UPDATE_CONSENSUS_KEY:\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n case OpKind.SMART_ROLLUP_ORIGINATE:\n return {\n ...op,\n ...getSource(op),\n ...getFee(op),\n };\n case OpKind.TRANSFER_TICKET:\n return {\n ...op,\n ticket_amount: `${op.ticket_amount}`,\n ...getSource(op),\n ...getFee(op),\n };\n case OpKind.INCREASE_PAID_STORAGE:\n return {\n ...op,\n amount: `${op.amount}`,\n ...getSource(op),\n ...getFee(op),\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 any).kind);\n }\n });\n\n const contents = constructOps(ops);\n\n return {\n opOb: {\n branch: hash,\n contents,\n protocol,\n },\n counter,\n };\n }\n\n protected async forge({ opOb: { branch, contents, protocol }, counter }: PreparedOperation) {\n const forgedBytes = await this.context.forger.forge({ branch, contents });\n\n return {\n opbytes: forgedBytes,\n opOb: {\n branch,\n contents,\n protocol,\n },\n counter,\n };\n }\n\n protected async simulate(op: RPCRunOperationParam) {\n return {\n opResponse: await this.rpc.runOperation(op),\n op,\n context: this.context.clone(),\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\n if (calculatedFee === undefined) {\n calculatedFee = estimation.suggestedFeeMutez;\n }\n\n if (calculatedGas === undefined) {\n calculatedGas = estimation.gasLimit;\n }\n\n if (calculatedStorage === undefined) {\n calculatedStorage = estimation.storageLimit;\n }\n }\n\n return {\n fee: calculatedFee,\n gasLimit: calculatedGas,\n storageLimit: calculatedStorage,\n };\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 { 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 createRevealOperation,\n createTxRollupOriginationOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTxRollupBatchOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract/prepare';\nimport { BatchOperation } from '../operations/batch-operation';\nimport { OperationEmitter } from '../operations/operation-emitter';\nimport {\n ActivationParams,\n DelegateParams,\n OriginateParams,\n RPCOperation,\n TransferParams,\n ParamsWithKind,\n isOpWithFee,\n withKind,\n RevealParams,\n RegisterGlobalConstantParams,\n TxRollupOriginateParams,\n TxRollupBatchParams,\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 {\n validateAddress,\n validateKeyHash,\n InvalidAddressError,\n InvalidKeyHashError,\n ValidationResult,\n InvalidOperationKindError,\n} from '@taquito/utils';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\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 OperationEmitter {\n private operations: ParamsWithKind[] = [];\n\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\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 if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\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 if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, 'param destination');\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 if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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 */\n withActivation({ pkh, secret }: ActivationParams) {\n if (validateKeyHash(pkh) !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh);\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 tx rollup origination operation to the batch\n *\n * @param params Rollup origination operation parameter\n */\n withTxRollupOrigination(params?: TxRollupOriginateParams) {\n this.operations.push({ kind: OpKind.TX_ROLLUP_ORIGINATION, ...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 /**\n *\n * @description Add a tx rollup batch operation to the batch\n *\n * @param params Tx rollup batch operation parameter\n */\n withTxRollupSubmitBatch(params: TxRollupBatchParams) {\n this.operations.push({ kind: OpKind.TX_ROLLUP_SUBMIT_BATCH, ...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.ACTIVATION:\n return {\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.TX_ROLLUP_ORIGINATION:\n return createTxRollupOriginationOperation({\n ...param,\n });\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n return createTxRollupBatchOperation({\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 }\n default:\n throw new InvalidOperationKindError((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 */\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.TX_ROLLUP_ORIGINATION:\n this.withTxRollupOrigination(param);\n break;\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n this.withTxRollupSubmitBatch(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((param as any).kind);\n }\n }\n\n return this;\n }\n\n async toPrepare() {\n const publicKeyHash = await this.signer.publicKeyHash();\n const publicKey = await this.signer.publicKey();\n const estimates = await this.estimator.batch(this.operations);\n\n const revealNeeded = await this.isRevealOpNeeded(this.operations, publicKeyHash);\n let i = revealNeeded ? 1 : 0;\n\n const ops: RPCOperation[] = [];\n for (const op of this.operations) {\n if (isOpWithFee(op)) {\n const estimated = await this.estimate(op, async () => estimates[i]);\n ops.push(await this.getRPCOp({ ...op, ...estimated }));\n } else {\n ops.push({ ...op });\n }\n i++;\n }\n if (revealNeeded) {\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimates[0]);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n }\n\n return ops;\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 publicKey = await this.signer.publicKey();\n const estimates = await this.estimator.batch(this.operations);\n\n const revealNeeded = await this.isRevealOpNeeded(this.operations, publicKeyHash);\n let i = revealNeeded ? 1 : 0;\n\n const ops: RPCOperation[] = [];\n for (const op of this.operations) {\n if (isOpWithFee(op)) {\n const estimated = await this.estimate(op, async () => estimates[i]);\n ops.push(await this.getRPCOp({ ...op, ...estimated }));\n } else {\n ops.push({ ...op });\n }\n i++;\n }\n if (revealNeeded) {\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimates[0]);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n }\n\n const source = (params && params.source) || publicKeyHash;\n const prepared = await this.prepareOperation({\n operation: ops,\n source,\n });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BatchOperation(hash, ops, source, forgedBytes, opResponse, context);\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 { OperationContentsAndResult } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { COST_PER_BYTE } from '../constants';\nimport { flattenOperationResult } from '../operations/operation-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 { 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 publishReplay,\n refCount,\n switchMap,\n takeWhile,\n tap,\n} from 'rxjs/operators';\nimport { Context } from '../context';\nimport { Receipt, receiptFromOperation } from './receipt';\nimport { validateOperation, ValidationResult, InvalidOperationHashError } from '@taquito/utils';\nimport { BlockIdentifier } from '../read-provider/interface';\nimport { InvalidConfirmationCountError, ConfirmationUndefinedError } from '../error';\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 publishReplay(1),\n refCount()\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 publishReplay(1),\n refCount()\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 return receiptFromOperation(await this.operationResults());\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 */\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\n const levelDiff = tipBlockHeaderLevel - inclusionBlock.header.level;\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('Confirmation count must be at least 1');\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('Default confirmation count can not be undefined!');\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 {\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';\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 return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public getOriginatedContractAddresses = async (): Promise<string[]> => {\n const opResult = await this.operationResults();\n\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 async status(): Promise<OperationStatus> {\n if (!this._included) {\n return 'pending';\n }\n\n const op = await this.operationResults();\n\n return (\n op\n .filter((result) => BATCH_KINDS.indexOf(result.kind) !== -1)\n .map((result) => {\n if (hasMetadataWithResult(result)) {\n return result.metadata.operation_result.status;\n } else {\n return 'unknown';\n }\n })[0] || 'unknown'\n );\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';\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 return operationResult.find((x) => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async delegationOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find((x) => x.kind === OpKind.DELEGATION) as\n | OperationContentsAndResultDelegation\n | undefined;\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 { 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';\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 return operationResult.find(x => x.kind === OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\n }\n\n public async increasePaidStorageOperation() {\n const operationResult = await this.operationResults();\n return operationResult.find(x => x.kind === OpKind.INCREASE_PAID_STORAGE) as\n | OperationContentsAndResultIncreasePaidStorage\n | undefined;\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 {\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';\n\nexport class OriginationWalletOperation<TWallet extends DefaultWalletType = DefaultWalletType> 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 return findWithKind(operationResult, OpKind.ORIGINATION) as\n | OperationContentsAndResultOrigination\n | undefined;\n }\n\n public async revealOperation() {\n const operationResult = await this.operationResults();\n return findWithKind(operationResult, OpKind.REVEAL) as\n | OperationContentsAndResultReveal\n | undefined;\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 { 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';\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 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 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 { BlockResponse } from '@taquito/rpc';\nimport {\n BehaviorSubject,\n concat,\n defer,\n from,\n Observable,\n of,\n range,\n SchedulerLike,\n throwError,\n} from 'rxjs';\nimport {\n concatMap,\n mergeMap,\n publishReplay,\n refCount,\n startWith,\n switchMap,\n timeoutWith,\n} 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';\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 timeoutWith(timeoutMillisec, throwError(new Error('Confirmation polling timed out'))),\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 publishReplay(1),\n refCount()\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 { OperationEmitter } from '../operations/operation-emitter';\nimport { Operation } from '../operations/operations';\nimport { RPCActivateOperation } from '../operations/types';\nimport { TzProvider } from './interface';\nimport { OpKind } from '@taquito/rpc';\nimport {\n validateAddress,\n ValidationResult,\n validateKeyHash,\n InvalidAddressError,\n InvalidKeyHashError,\n} from '@taquito/utils';\n\nexport class RpcTzProvider extends OperationEmitter implements TzProvider {\n constructor(context: Context) {\n super(context);\n }\n\n async getBalance(address: string): Promise<BigNumber> {\n if (validateAddress(address) !== ValidationResult.VALID) {\n throw new InvalidAddressError(address);\n }\n return this.context.readProvider.getBalance(address, 'head');\n }\n\n async getDelegate(address: string): Promise<string | null> {\n if (validateAddress(address) !== ValidationResult.VALID) {\n throw new InvalidAddressError(address);\n }\n return this.context.readProvider.getDelegate(address, 'head');\n }\n\n async activate(pkh: string, secret: string) {\n if (validateKeyHash(pkh) !== ValidationResult.VALID) {\n throw new InvalidKeyHashError(pkh);\n }\n const operation: RPCActivateOperation = {\n kind: OpKind.ACTIVATION,\n pkh,\n secret,\n };\n\n const prepared = await this.prepareOperation({ operation: [operation], source: pkh });\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","/**\n * @category Error\n * @description Error that indicates invalid public key being passed when doing a reveal operation estimate\n */\nexport class RevealEstimateError extends Error {\n name = 'Reveal Estimate Error';\n constructor() {\n super('Unable to estimate the reveal operation, the public key is unknown');\n }\n}\n","import { PreapplyResponse, RPCRunOperationParam, OpKind, ConstantsResponse } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { DEFAULT_FEE, DEFAULT_GAS_LIMIT, DEFAULT_STORAGE_LIMIT } from '../constants';\nimport { OperationEmitter } from '../operations/operation-emitter';\nimport {\n flattenErrors,\n flattenOperationResult,\n TezosOperationError,\n} from '../operations/operation-errors';\nimport {\n DelegateParams,\n isOpWithFee,\n OriginateParams,\n ParamsWithKind,\n PrepareOperationParams,\n RegisterDelegateParams,\n RPCOperation,\n TransferParams,\n RevealParams,\n RegisterGlobalConstantParams,\n TxRollupOriginateParams,\n TxRollupBatchParams,\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 {\n createOriginationOperation,\n createRegisterDelegateOperation,\n createRevealOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createRegisterGlobalConstantOperation,\n createTxRollupOriginationOperation,\n createTxRollupBatchOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createUpdateConsensusKeyOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract/prepare';\nimport {\n validateAddress,\n InvalidAddressError,\n ValidationResult,\n InvalidOperationKindError,\n} from '@taquito/utils';\nimport { RevealEstimateError } from './error';\nimport { ContractMethod, ContractMethodObject, ContractProvider } from '../contract';\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: typeof userDefinedLimit.fee === 'undefined' ? defaultLimits.fee : userDefinedLimit.fee,\n gasLimit:\n typeof userDefinedLimit.gasLimit === 'undefined'\n ? defaultLimits.gasLimit\n : userDefinedLimit.gasLimit,\n storageLimit:\n typeof userDefinedLimit.storageLimit === 'undefined'\n ? defaultLimits.storageLimit\n : userDefinedLimit.storageLimit,\n };\n};\n\n// RPC requires a signature but does not verify it\nconst SIGNATURE_STUB =\n 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg';\n\nexport class RPCEstimateProvider extends OperationEmitter implements EstimationProvider {\n private readonly ALLOCATION_STORAGE = 257;\n private readonly ORIGINATION_STORAGE = 257;\n private readonly OP_SIZE_REVEAL = 128;\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 // Maximum values defined by the protocol\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.ajustGasForBatchOperation(\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 // Fix for Granada where the total gasLimit of a batch can not exceed the hard_gas_limit_per_block.\n // If the total gasLimit of the batch is higher than the hard_gas_limit_per_block,\n // the gasLimit is calculated by dividing the hard_gas_limit_per_block by the number of operation in the batch (numberOfOps).\n // numberOfOps is incremented by 1 for safety in case a reveal operation is needed\n private ajustGasForBatchOperation(\n gasLimitBlock: BigNumber,\n gaslimitOp: BigNumber,\n numberOfOps: number\n ) {\n return BigNumber.min(gaslimitOp, gasLimitBlock.div(numberOfOps + 1));\n }\n\n private getEstimationPropertiesFromOperationContent(\n content: PreapplyResponse['contents'][0],\n size: number,\n costPerByte: BigNumber,\n tx_rollup_origination_size: number\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 += 'originated_rollup' in result ? tx_rollup_origination_size : 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 prepareEstimate(\n params: PrepareOperationParams,\n constants: Pick<\n ConstantsResponse,\n 'cost_per_byte' | 'tx_rollup_origination_size' | 'smart_rollup_origination_size'\n >,\n pkh: string\n ) {\n const prepared = await this.prepareOperation(params, pkh);\n const {\n opbytes,\n opOb: { branch, contents },\n } = await this.forge(prepared);\n const operation: RPCRunOperationParam = {\n operation: { branch, contents, signature: SIGNATURE_STUB },\n chain_id: await this.context.readProvider.getChainId(),\n };\n\n const { opResponse } = await this.simulate(operation);\n const { cost_per_byte, tx_rollup_origination_size } = 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(params.operation) && params.operation.length > 1) {\n numberOfOps =\n opResponse.contents[0].kind === 'reveal'\n ? params.operation.length - 1\n : params.operation.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 tx_rollup_origination_size ?? 0\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({ fee, storageLimit, gasLimit, ...rest }: OriginateParams) {\n const { publicKeyHash } = await this.getKeys();\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(publicKeyHash, protocolConstants);\n const op = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n })\n );\n const isRevealNeeded = await this.isRevealOpNeeded([op], publicKeyHash);\n const ops = isRevealNeeded ? await this.addRevealOp([op], publicKeyHash) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: publicKeyHash },\n protocolConstants,\n publicKeyHash\n );\n if (isRevealNeeded) {\n estimateProperties.shift();\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 if (validateAddress(rest.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.to);\n }\n if (rest.source && validateAddress(rest.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source);\n }\n const pkh = (await this.getKeys()).publicKeyHash;\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 const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 if (validateAddress(rest.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.destination, 'param destination');\n }\n if (rest.source && validateAddress(rest.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source ?? '', 'param source');\n }\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTransferTicketOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 if (rest.source && validateAddress(rest.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.source);\n }\n if (rest.delegate && validateAddress(rest.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(rest.delegate);\n }\n\n const pkh = (await this.getKeys()).publicKeyHash;\n const sourceOrDefault = rest.source || pkh;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(sourceOrDefault, protocolConstants);\n const op = await createSetDelegateOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { publicKeyHash } = await this.getKeys();\n let operations: RPCOperation[] = [];\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(\n publicKeyHash,\n protocolConstants,\n params.length\n );\n for (const param of params) {\n switch (param.kind) {\n case OpKind.TRANSACTION:\n operations.push(\n await createTransferOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.ORIGINATION:\n operations.push(\n await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n )\n );\n break;\n case OpKind.DELEGATION:\n operations.push(\n await createSetDelegateOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.ACTIVATION:\n operations.push({\n ...param,\n ...DEFAULT_PARAMS,\n });\n break;\n case OpKind.REGISTER_GLOBAL_CONSTANT:\n operations.push(\n await createRegisterGlobalConstantOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.TX_ROLLUP_ORIGINATION:\n operations.push(\n await createTxRollupOriginationOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\n operations.push(\n await createTxRollupBatchOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.TRANSFER_TICKET:\n operations.push(\n await createTransferTicketOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.INCREASE_PAID_STORAGE:\n operations.push(\n await createIncreasePaidStorageOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.SMART_ROLLUP_ADD_MESSAGES:\n operations.push(\n await createSmartRollupAddMessagesOperation({\n ...param,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n case OpKind.SMART_ROLLUP_ORIGINATE: {\n const originationProof = await this.rpc.getOriginationProof({\n kernel: param.kernel,\n kind: param.pvmKind,\n });\n operations.push(\n await createSmartRollupOriginateOperation({\n ...param,\n originationProof,\n ...mergeLimits(param, DEFAULT_PARAMS),\n })\n );\n break;\n }\n default:\n throw new InvalidOperationKindError(param.kind);\n }\n }\n const isRevealNeeded = await this.isRevealOpNeeded(operations, publicKeyHash);\n operations = isRevealNeeded ? await this.addRevealOp(operations, publicKeyHash) : operations;\n const estimateProperties = await this.prepareEstimate(\n { operation: operations, source: publicKeyHash },\n protocolConstants,\n publicKeyHash\n );\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(params: RegisterDelegateParams) {\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createRegisterDelegateOperation({ ...params, ...DEFAULT_PARAMS }, pkh);\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 DEFAULT_PARAMS = await this.getAccountLimits(publicKeyHash, protocolConstants);\n const op = await createRevealOperation(\n {\n ...params,\n ...DEFAULT_PARAMS,\n },\n publicKeyHash,\n publicKey\n );\n const estimateProperties = await this.prepareEstimate(\n { operation: op, source: publicKeyHash },\n protocolConstants,\n publicKeyHash\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 pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createRegisterGlobalConstantOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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(params: IncreasePaidStorageParams) {\n const { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createIncreasePaidStorageOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a rollup origination operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TxRollupOriginateParams Originate tx rollup operation parameter\n */\n async txRollupOriginate(params?: TxRollupOriginateParams) {\n params = params ? params : {};\n const { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTxRollupOriginationOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a tx rollup batch operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n async txRollupSubmitBatch(params: TxRollupBatchParams) {\n const { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createTxRollupBatchOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createUpdateConsensusKeyOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createSmartRollupAddMessagesOperation({\n ...rest,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 { fee, storageLimit, gasLimit, ...rest } = params;\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\n const originationProof = await this.rpc.getOriginationProof({\n kind: params.pvmKind,\n kernel: params.kernel,\n });\n\n const DEFAULT_PARAMS = await this.getAccountLimits(pkh, protocolConstants);\n const op = await createSmartRollupOriginateOperation({\n ...rest,\n originationProof,\n ...mergeLimits({ fee, storageLimit, gasLimit }, DEFAULT_PARAMS),\n });\n const isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n if (isRevealNeeded) {\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 params = contractMethod.toTransferParams();\n const { fee, storageLimit, gasLimit, ...rest } = params;\n\n const pkh = (await this.getKeys()).publicKeyHash;\n const protocolConstants = await this.context.readProvider.getProtocolConstants('head');\n\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 isRevealNeeded = await this.isRevealOpNeeded([op], pkh);\n const ops = isRevealNeeded ? await this.addRevealOp([op], pkh) : op;\n const estimateProperties = await this.prepareEstimate(\n { operation: ops, source: pkh },\n protocolConstants,\n pkh\n );\n\n if (isRevealNeeded) {\n estimateProperties.shift();\n }\n return Estimate.createEstimateInstanceFromProperties(estimateProperties);\n }\n\n private async addRevealOp(op: RPCOperation[], pkh: string) {\n const { publicKey } = await this.getKeys();\n if (!publicKey) {\n throw new RevealEstimateError();\n }\n op.unshift(\n await createRevealOperation(\n {\n ...{\n fee: DEFAULT_FEE.REVEAL,\n gasLimit: DEFAULT_GAS_LIMIT.REVEAL,\n storageLimit: DEFAULT_STORAGE_LIMIT.REVEAL,\n },\n },\n pkh,\n await this.signer.publicKey()\n )\n );\n return op;\n }\n}\n","import { OperationContentsAndResult, OperationContentsAndResultDelegation } from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCDelegateOperation,\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: RPCDelegateOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultOrigination } 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 './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n hasMetadataWithResult,\n RPCOriginationOperation,\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: RPCOriginationOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 */\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} from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCRegisterGlobalConstantOperation,\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: RPCRegisterGlobalConstantOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultReveal } from '@taquito/rpc';\nimport { BigNumber } from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCRevealOperation,\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: RPCRevealOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultTransaction } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { flattenErrors, flattenOperationResult, MergedOperationResult } from './operation-errors';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCTransferOperation,\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: RPCTransferOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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","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 {\n prim: 'IF_NONE',\n args: [[[{ prim: 'UNIT' }, { prim: 'FAILWITH' }]], []],\n },\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 { 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 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 { 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 WalletIncreasePaidStorageParams,\n WalletOriginateParams,\n WalletProvider,\n WalletTransferParams,\n} from './interface';\n\nimport {\n validateAddress,\n validateContractAddress,\n InvalidContractAddressError,\n InvalidAddressError,\n ValidationResult,\n InvalidOperationKindError,\n} from '@taquito/utils';\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 if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\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 if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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\n *\n * @param param\n */\n withIncreasePaidStorage(params: WalletIncreasePaidStorageParams) {\n if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination);\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((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 */\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((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 if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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 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 if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\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 if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination);\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 */\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 if (validateContractAddress(address) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address);\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","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","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 { 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 InvalidViewParameterError,\n ViewSimulationError,\n validateAndExtractFailwith,\n} from '../errors';\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 } from '@taquito/michelson-encoder';\nimport {\n EntrypointsResponse,\n MichelsonV1Expression,\n RpcClientInterface,\n ScriptResponse,\n} from '@taquito/rpc';\nimport {\n validateChain,\n validateContractAddress,\n ValidationResult,\n InvalidChainIdError,\n DeprecationError,\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';\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 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 && validateChain(chainId) !== ValidationResult.VALID) {\n throw new InvalidChainIdError(chainId);\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\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._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","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 OperationContentsAndResultTxRollupOrigination,\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 RPCTxRollupOriginationOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description TxRollupOriginationOperation provides utility functions to fetch a newly issued operation of kind tx_rollup_origination\n */\nexport class TxRollupOriginationOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n /**\n * @description Address the newly originate rollup\n */\n public readonly originatedRollup?: string;\n constructor(\n hash: string,\n private readonly params: RPCTxRollupOriginationOperation,\n public readonly source: string,\n raw: ForgedBytes,\n results: OperationContentsAndResult[],\n context: Context\n ) {\n super(hash, raw, results, context);\n\n this.originatedRollup = this.operationResults && this.operationResults.originated_rollup;\n }\n\n get operationResults() {\n const rollupOriginationOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'tx_rollup_origination'\n ) as OperationContentsAndResultTxRollupOrigination);\n const result =\n rollupOriginationOp &&\n rollupOriginationOp.metadata &&\n rollupOriginationOp.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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 OperationContentsAndResultTxRollupSubmitBatch,\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 RPCTxRollupBatchOperation,\n StorageConsumingOperation,\n} from './types';\n\n/**\n * @description TxRollupBatchOperation provides utility functions to fetch a newly issued operation of kind tx_rollup_submit_batch\n */\nexport class TxRollupBatchOperation\n extends Operation\n implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation\n{\n constructor(\n hash: string,\n private readonly params: RPCTxRollupBatchOperation,\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 txrollupBatchOp =\n Array.isArray(this.results) &&\n (this.results.find(\n (op) => op.kind === 'tx_rollup_submit_batch'\n ) as OperationContentsAndResultTxRollupSubmitBatch);\n const result =\n txrollupBatchOp && txrollupBatchOp.metadata && txrollupBatchOp.metadata.operation_result;\n return result ? result : undefined;\n }\n\n get status() {\n return this.operationResults?.status ?? 'unknown';\n }\n\n get content() {\n return this.params.content;\n }\n\n get fee() {\n return this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultBallot } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes, RPCBallotOperation } 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: RPCBallotOperation,\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 { OperationContentsAndResult, OperationContentsAndResultDrainDelegate } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes, RPCDrainDelegateOperation } 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: RPCDrainDelegateOperation,\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 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 RPCTransferTicketOperation,\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: RPCTransferTicketOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCIncreasePaidStorageOperation,\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: RPCIncreasePaidStorageOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OperationContentsAndResult, OperationContentsAndResultProposals } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes, RPCProposalsOperation } 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: RPCProposalsOperation,\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} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCUpdateConsensusKeyOperation,\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: RPCUpdateConsensusKeyOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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} from '@taquito/rpc';\n\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n StorageConsumingOperation,\n RPCSmartRollupAddMessagesOperation,\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: RPCSmartRollupAddMessagesOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 OpKind,\n} from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport {\n FeeConsumingOperation,\n ForgedBytes,\n GasConsumingOperation,\n RPCSmartRollupOriginateOperation,\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: RPCSmartRollupOriginateOperation,\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 this.params.fee;\n }\n\n get gasLimit() {\n return this.params.gas_limit;\n }\n\n get storageLimit() {\n return 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 { OpKind, ScriptResponse } from '@taquito/rpc';\nimport { encodeExpr } from '@taquito/utils';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { DelegateOperation } from '../operations/delegate-operation';\nimport { OperationEmitter } from '../operations/operation-emitter';\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 isOpRequireReveal,\n OriginateParams,\n TxRollupOriginateParams,\n ParamsWithKind,\n RegisterDelegateParams,\n RegisterGlobalConstantParams,\n RevealParams,\n RPCOperation,\n TransferParams,\n withKind,\n TxRollupBatchParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n DrainDelegateParams,\n BallotParams,\n ProposalsParams,\n UpdateConsensusKeyParams,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n} from '../operations/types';\nimport { DefaultContractType, ContractStorageType, ContractAbstraction } from './contract';\nimport { InvalidDelegationSource, RevealOperationError } from './errors';\nimport { ContractProvider, ContractSchema, StorageProvider } from './interface';\nimport {\n createOriginationOperation,\n createRegisterDelegateOperation,\n createRegisterGlobalConstantOperation,\n createRevealOperation,\n createTxRollupOriginationOperation,\n createSetDelegateOperation,\n createTransferOperation,\n createTxRollupBatchOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createDrainDelegateOperation,\n createBallotOperation,\n createProposalsOperation,\n createUpdateConsensusKeyOperation,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from './prepare';\nimport { smartContractAbstractionSemantic } from './semantic';\nimport {\n validateAddress,\n validateContractAddress,\n InvalidContractAddressError,\n InvalidAddressError,\n ValidationResult,\n} from '@taquito/utils';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { TxRollupOriginationOperation } from '../operations/tx-rollup-origination-operation';\nimport { TxRollupBatchOperation } from '../operations/tx-rollup-batch-operation';\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';\n\nexport class RpcContractProvider\n extends OperationEmitter\n implements ContractProvider, StorageProvider\n{\n constructor(context: Context, private estimator: EstimationProvider) {\n super(context);\n }\n contractProviderTypeSymbol = Symbol.for('taquito-contract-provider-type-symbol');\n\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 *\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 if (validateContractAddress(contract) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract);\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 *\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 if (validateContractAddress(contract) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(contract);\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 private async addRevealOperationIfNeeded(operation: RPCOperation, publicKeyHash: string) {\n if (isOpRequireReveal(operation)) {\n const ops: RPCOperation[] = [operation];\n const publicKey = await this.signer.publicKey();\n const estimateReveal = await this.estimator.reveal();\n if (estimateReveal) {\n const reveal: withKind<RevealParams, OpKind.REVEAL> = { kind: OpKind.REVEAL };\n const estimatedReveal = await this.estimate(reveal, async () => estimateReveal);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n return ops;\n }\n }\n return operation;\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\n const publicKeyHash = await this.signer.publicKeyHash();\n const operation = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...params,\n ...estimate,\n })\n );\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const preparedOrigination = await this.prepareOperation({\n operation: ops,\n source: publicKeyHash,\n });\n const forgedOrigination = await this.forge(preparedOrigination);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(forgedOrigination);\n return new OriginationOperation<TContract>(\n hash,\n operation,\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 if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n if (params.delegate && validateAddress(params.delegate) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.delegate);\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 estimate = await this.estimate(params, this.estimator.setDelegate.bind(this.estimator));\n const publicKeyHash = await this.signer.publicKeyHash();\n const operation = await createSetDelegateOperation({ ...params, ...estimate });\n const sourceOrDefault = params.source || publicKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({\n operation: ops,\n source: sourceOrDefault,\n });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(\n hash,\n operation,\n sourceOrDefault,\n forgedBytes,\n opResponse,\n context\n );\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 const operation = await createRegisterDelegateOperation({ ...params, ...estimate }, source);\n const ops = await this.addRevealOperationIfNeeded(operation, source);\n const prepared = await this.prepareOperation({ operation: ops });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DelegateOperation(hash, operation, 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\n async transfer(params: TransferParams) {\n if (validateAddress(params.to) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.to);\n }\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n\n const publickKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(params, this.estimator.transfer.bind(this.estimator));\n const operation = await createTransferOperation({\n ...params,\n ...estimate,\n });\n const source = params.source || publickKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publickKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransactionOperation(hash, operation, 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 if (validateAddress(params.destination) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.destination, 'param destination');\n }\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source, 'param source');\n }\n\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.transferTicket.bind(this.estimator)\n );\n const operation = await createTransferTicketOperation({\n ...params,\n ...estimate,\n });\n const source = params.source ?? publicKeyHash;\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TransferTicketOperation(hash, operation, 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 operation = await createRevealOperation(\n {\n ...estimated,\n },\n publicKeyHash,\n await this.signer.publicKey()\n );\n const prepared = await this.prepareOperation({ operation, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RevealOperation(hash, operation, 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 publickKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.registerGlobalConstant.bind(this.estimator)\n );\n const operation = await createRegisterGlobalConstantOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publickKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publickKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new RegisterGlobalConstantOperation(\n hash,\n operation,\n publickKeyHash,\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 const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.increasePaidStorage.bind(this.estimator)\n );\n const operation = await createIncreasePaidStorageOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new IncreasePaidStorageOperation(\n hash,\n operation,\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 operation = await createDrainDelegateOperation({\n ...params,\n });\n const prepared = await this.prepareOperation({ operation: operation });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new DrainDelegateOperation(hash, operation, forgedBytes, opResponse, context);\n }\n\n /**\n *\n * @description Originate a new tx rollup. 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 TxRollupOriginateParams Originate rollup operation parameter\n */\n async txRollupOriginate(params?: TxRollupOriginateParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params ? params : {},\n this.estimator.txRollupOriginate.bind(this.estimator)\n );\n const operation = await createTxRollupOriginationOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TxRollupOriginationOperation(\n hash,\n operation,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n /**\n *\n * @description Submit a tx rollup batch. 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 TxRollupBatchParams Batch tx rollup operation parameter\n */\n async txRollupSubmitBatch(params: TxRollupBatchParams) {\n const publicKeyHash = await this.signer.publicKeyHash();\n const estimate = await this.estimate(\n params,\n this.estimator.txRollupSubmitBatch.bind(this.estimator)\n );\n const operation = await createTxRollupBatchOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: publicKeyHash });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new TxRollupBatchOperation(\n hash,\n operation,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\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\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n const source = params.source ?? publicKeyHash;\n const operation = await createBallotOperation({\n ...params,\n source,\n });\n const prepared = await this.prepareOperation({ operation, source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new BallotOperation(hash, operation, 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\n if (params.source && validateAddress(params.source) !== ValidationResult.VALID) {\n throw new InvalidAddressError(params.source);\n }\n const source = params.source ?? publicKeyHash;\n const operation = await createProposalsOperation({\n ...params,\n source,\n });\n const prepared = await this.prepareOperation({ operation, source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new ProposalsOperation(hash, operation, 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 const operation = await createUpdateConsensusKeyOperation({\n ...params,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\n const opBytes = await this.forge(prepared);\n const { hash, context, forgedBytes, opResponse } = await this.signAndInject(opBytes);\n return new UpdateConsensusKeyOperation(\n hash,\n operation,\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 const operation = await createSmartRollupAddMessagesOperation({\n ...params,\n ...estimate,\n });\n\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\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 operation,\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 operation = await createSmartRollupOriginateOperation({\n ...completeParams,\n ...estimate,\n });\n const ops = await this.addRevealOperationIfNeeded(operation, publicKeyHash);\n const prepared = await this.prepareOperation({ operation: ops, source: params.source });\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 operation,\n publicKeyHash,\n forgedBytes,\n opResponse,\n context\n );\n }\n\n async at<T extends DefaultContractType = DefaultContractType>(\n address: string,\n contractAbstractionComposer: ContractAbstractionComposer<T> = (x) => x as any\n ): Promise<T> {\n if (validateContractAddress(address) !== ValidationResult.VALID) {\n throw new InvalidContractAddressError(address);\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('Invalid code parameter', 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","/**\n * @category Error\n * @description Error that indicates that a global constant does not exist\n */\nexport class GlobalConstantNotFound extends Error {\n name = 'GlobalConstantNotFound';\n\n constructor(public hash: string) {\n super(\n `Please load the value associated with the constant ${hash} using the loadGlobalConstant method of the DefaultGlobalConstantsProvider.`\n );\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 Error {\n name = 'UnconfiguredGlobalConstantsProviderError';\n\n constructor() {\n super(\n 'No global constants provider has been configured. Please configure one by calling setGlobalConstantsProvider({globalConstantsProvider}) on your TezosToolkit instance.'\n );\n }\n}\n","import { Expr } from \"@taquito/michel-codec\";\nimport { UnconfiguredGlobalConstantsProviderError } from \"./error\";\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}","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 {\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 '../error';\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 = (result: InternalOperationResult, address?: string, tag?: string) => {\n if (result.kind === 'event') {\n if (address && tag) {\n return result.source === address && result.tag === tag;\n } else if (address && !tag) {\n return result.source === address;\n } else if (tag) {\n return result.tag === tag;\n } else {\n return true;\n }\n } else {\n return false;\n }\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('Filter expression must contain either and/or property');\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';\n\n/**\n * @category Error\n * @description Error that indicates an unsupported event being passed or used\n */\nexport class UnsupportedEventError extends Error {\n public name = 'UnsupportedEventError';\n constructor(public message: string) {\n super(message);\n }\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();\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(`Trying to register on an unsupported event: ${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(`Trying to unregister on an unsupported event: ${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)) {\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 {\n RpcClientInterface,\n OperationContents,\n OpKind,\n VotingPeriodBlockResult,\n PreapplyParams,\n} from '@taquito/rpc';\nimport {\n DelegateParams,\n RevealParams,\n RPCOperation,\n RPCOpWithFee,\n RPCOpWithSource,\n isOpRequireReveal,\n RegisterGlobalConstantParams,\n TransferParams,\n OriginateParams,\n TxRollupOriginateParams,\n TxRollupBatchParams,\n UpdateConsensusKeyParams,\n TransferTicketParams,\n IncreasePaidStorageParams,\n BallotParams,\n ProposalsParams,\n DrainDelegateParams,\n ParamsWithKind,\n SmartRollupAddMessagesParams,\n SmartRollupOriginateParams,\n} from '../operations/types';\nimport { PreparationProvider, PreparedOperation } from './interface';\nimport { Protocols } from '../constants';\nimport { InvalidOperationKindError, DeprecationError } from '@taquito/utils';\nimport { RPCResponseError } from '../error';\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 RevealOperationError,\n createTxRollupOriginationOperation,\n createTxRollupBatchOperation,\n createUpdateConsensusKeyOperation,\n createTransferTicketOperation,\n createIncreasePaidStorageOperation,\n createBallotOperation,\n createProposalsOperation,\n createDrainDelegateOperation,\n DefaultContractType,\n ContractStorageType,\n createSmartRollupAddMessagesOperation,\n createSmartRollupOriginateOperation,\n} from '../contract';\nimport { Estimate } from '../estimate';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { ForgeParams } from '@taquito/local-forging';\n\n/**\n * @description PrepareProvider is a utility class to output the prepared format of an operation\n */\nexport class PrepareProvider implements PreparationProvider {\n #counters: { [key: string]: number };\n\n constructor(protected context: Context) {\n this.#counters = {};\n }\n\n get rpc(): RpcClientInterface {\n return this.context.rpc;\n }\n\n get signer() {\n return this.context.signer;\n }\n\n get estimate() {\n return this.context.estimate;\n }\n\n get parser() {\n return this.context.parser;\n }\n\n private async getPkh() {\n return await this.context.signer.publicKeyHash();\n }\n\n private async getBlockHash() {\n return this.context.readProvider.getBlockHash('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 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 buildEstimates(estimate: Estimate) {\n return {\n fee: estimate.suggestedFeeMutez,\n gasLimit: estimate.gasLimit,\n storageLimit: estimate.storageLimit,\n };\n }\n\n private async addRevealOperationIfNeeded(operation: RPCOperation, publicKeyHash: string) {\n if (isOpRequireReveal(operation)) {\n const ops: RPCOperation[] = [operation];\n const publicKey = await this.signer.publicKey();\n const estimateReveal = await this.estimate.reveal();\n if (estimateReveal) {\n const estimatedReveal = this.buildEstimates(estimateReveal);\n ops.unshift(await createRevealOperation({ ...estimatedReveal }, publicKeyHash, publicKey));\n return ops;\n }\n }\n return operation;\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.TX_ROLLUP_ORIGINATION:\n case OpKind.TX_ROLLUP_SUBMIT_BATCH:\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 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(params: RevealParams): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.reveal(params);\n if (estimate) {\n const estimates = this.buildEstimates(estimate);\n const op = await createRevealOperation(\n {\n ...estimates,\n },\n pkh,\n await this.signer.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 } else {\n throw new RevealOperationError(`The publicKeyHash '${pkh}' has already been revealed.`);\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 params: OriginateParams<ContractStorageType<TContract>>,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.originate(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createOriginationOperation(\n await this.context.parser.prepareCodeOrigination({\n ...params,\n ...estimates,\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(params: TransferParams, source?: string): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.transfer(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTransferOperation({\n ...params,\n ...estimates,\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 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(params: DelegateParams, source?: string): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.setDelegate(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createSetDelegateOperation({\n ...params,\n ...estimates,\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 params: RegisterGlobalConstantParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.registerGlobalConstant(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createRegisterGlobalConstantOperation({\n ...params,\n ...estimates,\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 tx_rollup_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 txRollupOrigination(\n params?: TxRollupOriginateParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.txRollupOriginate(params);\n\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTxRollupOriginationOperation({\n ...params,\n ...estimates,\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 tx_rollup_submit_batch 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 txRollupSubmitBatch(\n params: TxRollupBatchParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.txRollupSubmitBatch(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTxRollupBatchOperation({\n ...params,\n ...estimates,\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 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 params: UpdateConsensusKeyParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.updateConsensusKey(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createUpdateConsensusKeyOperation({\n ...params,\n ...estimates,\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 params: IncreasePaidStorageParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.increasePaidStorage(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createIncreasePaidStorageOperation({\n ...params,\n ...estimates,\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 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.signer.publicKeyHash();\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.signer.publicKeyHash();\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.signer.publicKeyHash();\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(params: TransferTicketParams, source?: string): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.transferTicket(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createTransferTicketOperation({\n ...params,\n ...estimates,\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 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 params: SmartRollupAddMessagesParams,\n source?: string\n ): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const estimate = await this.estimate.smartRollupAddMessages(params);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createSmartRollupAddMessagesOperation({\n ...params,\n ...estimates,\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, 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(params: SmartRollupOriginateParams): Promise<PreparedOperation> {\n const pkh = await this.signer.publicKeyHash();\n\n const originationProof = await this.rpc.getOriginationProof({\n kind: params.pvmKind,\n kernel: params.kernel,\n });\n const completeParams = { ...params, originationProof };\n const estimate = await this.estimate.smartRollupOriginate(completeParams);\n const estimates = this.buildEstimates(estimate);\n\n const op = await createSmartRollupOriginateOperation({\n ...completeParams,\n ...estimates,\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);\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[]): Promise<PreparedOperation> {\n // const ops = this.convertIntoArray(operation);\n const pkh = await this.signer.publicKeyHash();\n const batch = new OperationBatch(this.context, this.estimate);\n\n if (Array.isArray(batchParams)) {\n batch.with(batchParams);\n }\n\n const ops = await batch.toPrepare();\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 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.signer.publicKeyHash();\n\n this.#counters = {};\n const headCounter = parseInt(await this.getHeadCounter(pkh), 10);\n\n const params = contractMethod.toTransferParams();\n const estimate = await this.estimate.transfer(params);\n\n const ops = [\n {\n kind: OpKind.TRANSACTION,\n fee: params.fee ?? estimate.suggestedFeeMutez,\n gas_limit: params.gasLimit ?? estimate.gasLimit,\n storage_limit: params.storageLimit ?? estimate.storageLimit,\n amount: String(params.amount),\n destination: params.to,\n },\n ] as RPCOperation[];\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 { 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\": \"bcc2118ddfafc1995fd125cd74d198fda042bf48\",\n \"version\": \"16.1.2\"\n};\n","import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\n\n/**\n * @category Error\n * @description Error that indicates a value mismatch when forging\n */\nexport class ForgingMismatchError extends Error {\n name = 'ForgingMismatchError';\n constructor(public results: string[]) {\n super('Forging mismatch error');\n }\n}\n\n/**\n * @category Error\n * @description Error that indicates a forger not being specified in TezosToolkit\n */\nexport class UnspecifiedForgerError extends Error {\n name = 'UnspecifiedForgerError';\n constructor() {\n super('At least one forger must be specified');\n }\n}\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 './error';\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';\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 './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/error';\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}\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.api.tez.ie/', 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 }: 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\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.api.tez.ie/')\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 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":["BigNumber"],"mappings":"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"}