/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@onflow/sdk@1.13.7/dist/sdk.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var logger=require("@onflow/util-logger"),utilInvariant=require("@onflow/util-invariant"),uuid=require("uuid"),typedefs=require("@onflow/typedefs"),config=require("@onflow/config"),rlp=require("@onflow/rlp"),utilAddress=require("@onflow/util-address"),EventEmitter=require("events"),transportHttp=require("@onflow/transport-http"),sha3=require("sha3"),utilTemplate=require("@onflow/util-template"),types=require("@onflow/types");function _interopNamespaceDefault(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var logger__namespace=_interopNamespaceDefault(logger),types__namespace=_interopNamespaceDefault(types);const ACCT=`{\n  "kind":"${typedefs.InteractionResolverKind.ACCOUNT}",\n  "tempId":null,\n  "addr":null,\n  "keyId":null,\n  "sequenceNum":null,\n  "signature":null,\n  "signingFunction":null,\n  "resolve":null,\n  "role": {\n    "proposer":false,\n    "authorizer":false,\n    "payer":false,\n    "param":false\n  }\n}`,ARG=`{\n  "kind":"${typedefs.InteractionResolverKind.ARGUMENT}",\n  "tempId":null,\n  "value":null,\n  "asArgument":null,\n  "xform":null,\n  "resolve": null,\n  "resolveArgument": null\n}`,IX=`{\n  "tag":"${typedefs.InteractionTag.UNKNOWN}",\n  "assigns":{},\n  "status":"${typedefs.InteractionStatus.OK}",\n  "reason":null,\n  "accounts":{},\n  "params":{},\n  "arguments":{},\n  "message": {\n    "cadence":null,\n    "refBlock":null,\n    "computeLimit":null,\n    "proposer":null,\n    "payer":null,\n    "authorizations":[],\n    "params":[],\n    "arguments":[]\n  },\n  "proposer":null,\n  "authorizations":[],\n  "payer":[],\n  "events": {\n    "eventType":null,\n    "start":null,\n    "end":null,\n    "blockIds":[]\n  },\n  "subscribeEvents": {\n    "startBlockId":null,\n    "startHeight":null,\n    "eventTypes":null,\n    "addresses":null,\n    "contracts":null,\n    "heartbeatInterval":null\n  },\n  "transaction": {\n    "id":null\n  },\n  "block": {\n    "id":null,\n    "height":null,\n    "isSealed":null\n  },\n  "account": {\n    "addr":null\n  },\n  "collection": {\n    "id":null\n  }\n}`,KEYS=new Set(Object.keys(JSON.parse(IX))),initInteraction=()=>JSON.parse(IX),interaction=()=>(logger.log.deprecate({pkg:"FCL/SDK",message:"The interaction been deprecated from the Flow JS-SDK/FCL. use initInteraction instead",transition:"https://github.com/onflow/flow-js-sdk/blob/master/packages/sdk/TRANSITIONS.md#0010-deprecate-interaction",level:logger.LEVELS.warn}),initInteraction()),isNumber$1=e=>"number"==typeof e,isArray$1=e=>Array.isArray(e),isObj=e=>null!==e&&"object"==typeof e,isNull=e=>null==e,isFn$3=e=>"function"==typeof e,isInteraction=e=>{if(!isObj(e)||isNull(e)||isNumber$1(e))return!1;for(let t of KEYS)if(!e.hasOwnProperty(t))return!1;return!0},Ok=e=>(e.status=typedefs.InteractionStatus.OK,e),Bad=(e,t)=>(e.status=typedefs.InteractionStatus.BAD,e.reason=t,e),makeIx=e=>t=>(t.tag=e,Ok(t)),prepAccountKeyId=e=>null==e.keyId?e:(utilInvariant.invariant(!isNaN(parseInt(e.keyId.toString())),"account.keyId must be an integer"),{...e,keyId:parseInt(e.keyId.toString())}),initAccount=()=>JSON.parse(ACCT),prepAccount=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>{utilInvariant.invariant("function"==typeof e||"object"==typeof e,"prepAccount must be passed an authorization function or an account object"),utilInvariant.invariant(null!=t.role,"Account must have a role");const r=initAccount(),o=t.role,a=uuid.v4();let s={...e};e.authorization&&isFn$3(e.authorization)&&(s={resolve:e.authorization}),!e.authorization&&isFn$3(e)&&(s={resolve:e});const i=s.resolve;return i&&(s.resolve=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return[i,prepAccountKeyId].reduce((async(e,t)=>t(await e,...n)),e)}),s=prepAccountKeyId(s),n.accounts[a]={...r,tempId:a,...s,role:{...r.role,..."object"==typeof e.role?e.role:{},...o?{[o]:!0}:{}}},o===typedefs.TransactionRole.AUTHORIZER?n.authorizations.push(a):o===typedefs.TransactionRole.PAYER?n.payer.push(a):o&&(n[o]=a),n}},makeArgument=e=>t=>{let n=uuid.v4();return t.message.arguments.push(n),t.arguments[n]=JSON.parse(ARG),t.arguments[n].tempId=n,t.arguments[n].value=e.value,t.arguments[n].asArgument=e.asArgument,t.arguments[n].xform=e.xform,t.arguments[n].resolve=e.resolve,t.arguments[n].resolveArgument=isFn$3(e.resolveArgument)?e.resolveArgument.bind(e):e.resolveArgument,Ok(t)},makeUnknown=makeIx(typedefs.InteractionTag.UNKNOWN),makeScript=makeIx(typedefs.InteractionTag.SCRIPT),makeTransaction=makeIx(typedefs.InteractionTag.TRANSACTION),makeGetTransactionStatus=makeIx(typedefs.InteractionTag.GET_TRANSACTION_STATUS),makeGetTransaction=makeIx(typedefs.InteractionTag.GET_TRANSACTION),makeGetAccount=makeIx(typedefs.InteractionTag.GET_ACCOUNT),makeGetEvents=makeIx(typedefs.InteractionTag.GET_EVENTS),makePing=makeIx(typedefs.InteractionTag.PING),makeGetBlock=makeIx(typedefs.InteractionTag.GET_BLOCK),makeGetBlockHeader=makeIx(typedefs.InteractionTag.GET_BLOCK_HEADER),makeGetCollection=makeIx(typedefs.InteractionTag.GET_COLLECTION),makeGetNetworkParameters=makeIx(typedefs.InteractionTag.GET_NETWORK_PARAMETERS),makeSubscribeEvents=makeIx(typedefs.InteractionTag.SUBSCRIBE_EVENTS),makeGetNodeVerionInfo=makeIx(typedefs.InteractionTag.GET_NODE_VERSION_INFO),is=e=>t=>t.tag===e,isUnknown=is(typedefs.InteractionTag.UNKNOWN),isScript=is(typedefs.InteractionTag.SCRIPT),isTransaction=is(typedefs.InteractionTag.TRANSACTION),isGetTransactionStatus=is(typedefs.InteractionTag.GET_TRANSACTION_STATUS),isGetTransaction=is(typedefs.InteractionTag.GET_TRANSACTION),isGetAccount=is(typedefs.InteractionTag.GET_ACCOUNT),isGetEvents=is(typedefs.InteractionTag.GET_EVENTS),isPing=is(typedefs.InteractionTag.PING),isGetBlock=is(typedefs.InteractionTag.GET_BLOCK),isGetBlockHeader=is(typedefs.InteractionTag.GET_BLOCK_HEADER),isGetCollection=is(typedefs.InteractionTag.GET_COLLECTION),isGetNetworkParameters=is(typedefs.InteractionTag.GET_NETWORK_PARAMETERS),isGetNodeVersionInfo=is(typedefs.InteractionTag.GET_NODE_VERSION_INFO),isSubscribeEvents=is(typedefs.InteractionTag.SUBSCRIBE_EVENTS),isOk=e=>e.status===typedefs.InteractionStatus.OK,isBad=e=>e.status===typedefs.InteractionStatus.BAD,why=e=>e.reason,isAccount=e=>e.kind===typedefs.InteractionResolverKind.ACCOUNT,isArgument=e=>e.kind===typedefs.InteractionResolverKind.ARGUMENT,hardMode=e=>{for(let t of Object.keys(e))if(!KEYS.has(t))throw new Error(`"${t}" is an invalid root level Interaction property.`);return e},recPipe=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{if(e=hardMode(await e),isBad(e))throw new Error(`Interaction Error: ${e.reason}`);if(!t.length)return e;const[n,...r]=t,o=await n;if(isFn$3(o))return recPipe(o(e),r);if(isNull(o)||!o)return recPipe(e,r);if(isInteraction(o))return recPipe(o,r);throw new Error("Invalid Interaction Composition")}catch(e){throw e}};function pipe(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const[r,o]=t;if(isArray$1(r))return e=>pipe(e,r);return recPipe(r,o)}const identity$1=function(e){return e},get=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return null==e.assigns[t]?n:e.assigns[t]},put=(e,t)=>n=>(n.assigns[e]=t,Ok(n)),update=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:identity$1;return n=>(n.assigns[e]=t(n.assigns[e],n),Ok(n))},destroy=e=>t=>(delete t.assigns[e],Ok(t));var ixModule=Object.freeze({__proto__:null,Bad:Bad,Ok:Ok,destroy:destroy,get:get,initAccount:initAccount,initInteraction:initInteraction,interaction:interaction,isAccount:isAccount,isArgument:isArgument,isArray:isArray$1,isBad:isBad,isFn:isFn$3,isGetAccount:isGetAccount,isGetBlock:isGetBlock,isGetBlockHeader:isGetBlockHeader,isGetCollection:isGetCollection,isGetEvents:isGetEvents,isGetNetworkParameters:isGetNetworkParameters,isGetNodeVersionInfo:isGetNodeVersionInfo,isGetTransaction:isGetTransaction,isGetTransactionStatus:isGetTransactionStatus,isInteraction:isInteraction,isNull:isNull,isNumber:isNumber$1,isObj:isObj,isOk:isOk,isPing:isPing,isScript:isScript,isSubscribeEvents:isSubscribeEvents,isTransaction:isTransaction,isUnknown:isUnknown,makeArgument:makeArgument,makeGetAccount:makeGetAccount,makeGetBlock:makeGetBlock,makeGetBlockHeader:makeGetBlockHeader,makeGetCollection:makeGetCollection,makeGetEvents:makeGetEvents,makeGetNetworkParameters:makeGetNetworkParameters,makeGetNodeVerionInfo:makeGetNodeVerionInfo,makeGetTransaction:makeGetTransaction,makeGetTransactionStatus:makeGetTransactionStatus,makePing:makePing,makeScript:makeScript,makeSubscribeEvents:makeSubscribeEvents,makeTransaction:makeTransaction,makeUnknown:makeUnknown,pipe:pipe,prepAccount:prepAccount,put:put,update:update,why:why});function build(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return pipe(initInteraction(),e)}const DEFAULT_RESPONSE={tag:null,transaction:null,transactionStatus:null,transactionId:null,encodedData:null,events:null,event:null,accountStatusEvent:null,account:null,block:null,blockHeader:null,blockDigest:null,latestBlock:null,collection:null,networkParameters:null,streamConnection:null,heartbeat:null,nodeVersionInfo:null},response=()=>({...DEFAULT_RESPONSE});function getBlock(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return pipe([makeGetBlock,t=>(t.block.isSealed=e,Ok(t))])}function getAccount(e){return pipe([makeGetAccount,t=>(t.account.addr=utilAddress.sansPrefix(e),Ok(t))])}const decodeStream=(e,t,n)=>{const r=new EventEmitter;let o=taskQueue();function a(t){e.on(t,(e=>{o.push((async()=>{r.emit(t,e)}))}))}return e.on("data",(async e=>{const a=Object.keys(e).filter((t=>null!=e[t]&&"tag"!==t));let s=Promise.all(a.map((async r=>{const o={[r]:e[r]};return{channel:r,message:await t(o,n)}})));o.push((async()=>{(await s).forEach((e=>{let{channel:t,message:n}=e;r.emit(t,n)}))}))})),a("close"),a("error"),{on(e,t){return r.on(e,t),this},off(e,t){return r.off(e,t),this},close:()=>{e.close()}}};function taskQueue(){let e=[],t=!1;return{push:n=>{e.push(n),async function(){if(!t){for(t=!0;e.length>0;){const t=e.shift();await(t?.())}t=!1}}()}}}const latestBlockDeprecationNotice=()=>{logger.log.deprecate({pkg:"@onflow/decode",subject:"Operating upon data of the latestBlock field of the response object",transition:"https://github.com/onflow/flow-js-sdk/blob/master/packages/decode/WARNINGS.md#0001-Deprecating-latestBlock-field"})},decodeImplicit=async e=>e,decodeVoid=async()=>null,decodeType=async e=>e.staticType,decodeOptional=async(e,t,n)=>e?await recurseDecode(e,t,n):null,decodeArray=async(e,t,n)=>await Promise.all(e.map((e=>new Promise((async r=>r(await recurseDecode(e,t,[...n,e.type]))))))),decodeDictionary=async(e,t,n)=>await e.reduce((async(e,r)=>((e=await e)[await recurseDecode(r.key,t,[...n,r.key])]=await recurseDecode(r.value,t,[...n,r.key]),e)),Promise.resolve({})),decodeComposite=async(e,t,n)=>{const r=await e.fields.reduce((async(e,r)=>((e=await e)[r.name]=await recurseDecode(r.value,t,[...n,r.name]),e)),Promise.resolve({})),o=e.id&&decoderLookup(t,e.id);return o?await o(r):r},decodeInclusiveRange=async(e,t,n)=>{const r=["start","end","step"];return await Object.keys(e).reduce((async(o,a)=>(o=await o,r.includes(a)&&(o[a]=await recurseDecode(e[a],t,[...n,a])),o)),Promise.resolve({}))},defaultDecoders={UInt:decodeImplicit,Int:decodeImplicit,UInt8:decodeImplicit,Int8:decodeImplicit,UInt16:decodeImplicit,Int16:decodeImplicit,UInt32:decodeImplicit,Int32:decodeImplicit,UInt64:decodeImplicit,Int64:decodeImplicit,UInt128:decodeImplicit,Int128:decodeImplicit,UInt256:decodeImplicit,Int256:decodeImplicit,Word8:decodeImplicit,Word16:decodeImplicit,Word32:decodeImplicit,Word64:decodeImplicit,Word128:decodeImplicit,Word256:decodeImplicit,UFix64:decodeImplicit,Fix64:decodeImplicit,UFix128:decodeImplicit,Fix128:decodeImplicit,String:decodeImplicit,Character:decodeImplicit,Bool:decodeImplicit,Address:decodeImplicit,Void:decodeVoid,Optional:decodeOptional,Reference:decodeImplicit,Array:decodeArray,Dictionary:decodeDictionary,Event:decodeComposite,Resource:decodeComposite,Struct:decodeComposite,Enum:decodeComposite,Type:decodeType,Path:decodeImplicit,Capability:decodeImplicit,InclusiveRange:decodeInclusiveRange},decoderLookup=(e,t)=>{const n=Object.keys(e).find((e=>{if(/^\/.*\/$/.test(e)){return new RegExp(e.substring(1,e.length-1)).test(t)}return e===t}));return t&&n&&e[n]},recurseDecode=async(e,t,n)=>{let r=decoderLookup(t,e.type);if(!r)throw new Error(`Undefined Decoder Error: ${e.type}@${n.join(".")}`);return await r(e.value,t,n)},decode$1=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const r=Object.keys(defaultDecoders).filter((e=>!Object.keys(t).find((t=>new RegExp(t).test(e))))).reduce(((e,t)=>(e[t]=defaultDecoders[t],e)),t),o={...r,...t};return recurseDecode(e,o,n)},decodeResponse=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e.encodedData)return decode$1(e.encodedData,t);if(e.transactionStatus)return{...e.transactionStatus,events:await Promise.all(e.transactionStatus.events.map((async function(e){return{type:e.type,transactionId:e.transactionId,transactionIndex:e.transactionIndex,eventIndex:e.eventIndex,data:await decode$1(e.payload,t)}})))};if(e.transaction)return e.transaction;if(e.events)return await Promise.all(e.events.map((async function(e){return{blockId:e.blockId,blockHeight:e.blockHeight,blockTimestamp:e.blockTimestamp,type:e.type,transactionId:e.transactionId,transactionIndex:e.transactionIndex,eventIndex:e.eventIndex,data:await decode$1(e.payload,t)}})));if(e.event){const{payload:n,...r}=e.event;return{...r,data:await decode$1(n,t)}}if(e.accountStatusEvent){const{payload:n,...r}=e.accountStatusEvent;return{...r,data:await decode$1(n,t)}}if(e.account)return e.account;if(e.block)return e.block;if(e.blockHeader)return e.blockHeader;if(e.blockDigest)return e.blockDigest;if(e.latestBlock)return latestBlockDeprecationNotice(),e.latestBlock;if(e.transactionId)return e.transactionId;if(e.collection)return e.collection;if(e.networkParameters){const t=/^flow-/,n=e.networkParameters.chainId;let r;return r="flow-emulator"===n?"local":t.test(n)?n.replace(t,""):n,{chainId:r}}return e.streamConnection?decodeStream(e.streamConnection,decodeResponse,t):e.heartbeat?e.heartbeat:e.nodeVersionInfo?e.nodeVersionInfo:null};class SubscriptionsNotSupportedError extends Error{constructor(){super("The current transport does not support subscriptions.  If you have provided a custom transport (e.g. via `sdk.transport` configuration), ensure that it implements the subscribe method."),this.name="SubscriptionsNotSupportedError"}}function getGlobalTransport(e){const t=e["sdk.transport"]||e["sdk.send"]||transportHttp.httpTransport;return isTransportObject(t)?t:{send:t,subscribe:()=>{throw new SubscriptionsNotSupportedError}}}function isTransportObject(e){return void 0!==e.send&&void 0!==e.subscribe&&"function"==typeof e.send&&"function"==typeof e.subscribe}const DEFAULT_COMPUTE_LIMIT=10;let cachedContext;async function createGlobalContext(){const e=await config.config().all();return{get transport(){return getGlobalTransport(e)},get accessNodeUrl(){const t=e["accessNode.api"];return utilInvariant.invariant(!!t,'Either opts.node or "accessNode.api" in config must be defined.'),t},get computeLimit(){const t=e["fcl.limit"];return t||(logger.log.deprecate({pkg:"FCL/SDK",subject:"The built-in default compute limit (DEFAULT_COMPUTE_LIMIT=10)",transition:"https://github.com/onflow/flow-js-sdk/blob/master/packages/sdk/TRANSITIONS.md#0009-deprecate-default-compute-limit"}),10)},get customResolver(){return e["sdk.resolve"]},get customDecoders(){return Object.fromEntries(Object.entries(e).filter((e=>{let[t]=e;return t.startsWith("decoder.")})))},get contracts(){return Object.fromEntries(Object.entries(e).filter((e=>{let[t]=e;return t.startsWith("system.contracts.")})).map((e=>{let[t,n]=e;return[t.replace("system.contracts.",""),n]})))},get debug(){return Object.fromEntries(Object.entries(e).filter((e=>{let[t]=e;return t.startsWith("debug.")})))},get legacyContractIdentifiers(){return Object.fromEntries(Object.entries(e).filter((e=>{let[t]=e;return t.startsWith("0x")})))}}}async function getGlobalContext(){return cachedContext||(config.config().subscribe((()=>{cachedContext=createGlobalContext()})),cachedContext=createGlobalContext()),cachedContext}function withGlobalContext(e){return async function(){const t=await getGlobalContext();return e(t)(...arguments)}}const isFn$2=e=>"function"==typeof e,isString$1=e=>"string"==typeof e,oldIdentifierPatternFn=()=>/\b(0x\w+)\b/g;function isOldIdentifierSyntax(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=e.matchAll(oldIdentifierPatternFn());for(const e of n){if(t[e[0]])return!0}return!1}const newIdentifierPatternFn=()=>/import\s+"(\w+)"/g;function isNewIdentifierSyntax(e){return newIdentifierPatternFn().test(e)}function getContractIdentifierSyntaxMatches(e){return e.matchAll(newIdentifierPatternFn())}function createResolveCadence(e){return async function(t){if(!isTransaction(t)&&!isScript(t))return t;var n=get(t,"ix.cadence");if(utilInvariant.invariant(isFn$2(n)||isString$1(n),"Cadence needs to be a function or a string."),isFn$2(n)&&(n=await n({})),utilInvariant.invariant(isString$1(n),"Cadence needs to be a string at this point."),utilInvariant.invariant(!isOldIdentifierSyntax(n,e.legacyContractIdentifiers)||!isNewIdentifierSyntax(n),"Both account identifier and contract identifier syntax not simultaneously supported."),isOldIdentifierSyntax(n,e.legacyContractIdentifiers)&&(n=Object.entries(e.legacyContractIdentifiers||{}).reduce(((e,t)=>{let[n,r]=t;const o=new RegExp("(\\b"+n+"\\b)","g");return e.replace(o,r)}),n)),isNewIdentifierSyntax(n))for(const[t,r]of getContractIdentifierSyntaxMatches(n)){const o=e.contracts[r]||null;if(o){const a=e.contracts[r+".canonical"]||null,s=a?`import ${a} as ${r} from ${utilAddress.withPrefix(o)}`:`import ${r} from ${utilAddress.withPrefix(o)}`;n=n.replace(t,s)}else logger__namespace.log({title:"Contract Placeholder not found",message:`Cannot find a value for contract placeholder ${r}. Please add to your flow.json or explicitly add it to the config 'contracts.*' namespace.`,level:logger__namespace.LEVELS.warn})}return t.message.cadence=n,t}}const resolveCadence=withGlobalContext(createResolveCadence),isFn$1=e=>"function"==typeof e;function cast(e){return utilInvariant.invariant(null!=typeof e.xform,`No type specified for argument: ${e.value}`),isFn$1(e.xform)?e.xform(e.value):isFn$1(e.xform.asArgument)?e.xform.asArgument(e.value):void utilInvariant.invariant(!1,"Invalid Argument",e)}async function handleArgResolution(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3;if(utilInvariant.invariant(t>0,`Argument Resolve Recursion Limit Exceeded for Arg: ${e.tempId}`),isFn$1(e.resolveArgument)){return handleArgResolution(await e.resolveArgument(),t-1)}return e}async function resolveArguments(e){if(isTransaction(e)||isScript(e))for(let[t,n]of Object.entries(e.arguments)){const r=await handleArgResolution(n);e.arguments[t].asArgument=cast(r)}return e}const encodeTransactionPayload=e=>prependTransactionDomainTag(rlpEncode(preparePayload(e))),encodeTransactionEnvelope=e=>prependTransactionDomainTag(rlpEncode(prepareEnvelope(e))),encodeTxIdFromVoucher=e=>sha3_256(rlpEncode(prepareVoucher(e))),rightPaddedHexBuffer=(e,t)=>rlp.Buffer.from(e.padEnd(2*t,"0"),"hex"),leftPaddedHexBuffer=(e,t)=>rlp.Buffer.from(e.padStart(2*t,"0"),"hex"),TRANSACTION_DOMAIN_TAG=rightPaddedHexBuffer(rlp.Buffer.from("FLOW-V0.0-transaction").toString("hex"),32).toString("hex"),prependTransactionDomainTag=e=>TRANSACTION_DOMAIN_TAG+e,addressBuffer=e=>leftPaddedHexBuffer(e,8),blockBuffer=e=>leftPaddedHexBuffer(e,32),argumentToString=e=>rlp.Buffer.from(JSON.stringify(e),"utf8"),scriptBuffer=e=>rlp.Buffer.from(e,"utf8"),signatureBuffer=e=>rlp.Buffer.from(e,"hex"),extensionBuffer=e=>{if(null!=e)return rlp.Buffer.from(e,"hex")},rlpEncode=e=>rlp.encode(e).toString("hex"),sha3_256=e=>{const t=new sha3.SHA3(256);return t.update(rlp.Buffer.from(e,"hex")),t.digest().toString("hex")},preparePayload=e=>(validatePayload(e),[scriptBuffer(e.cadence||""),e.arguments.map(argumentToString),blockBuffer(e.refBlock||""),e.computeLimit,addressBuffer(utilAddress.sansPrefix(e.proposalKey.address||"")),e.proposalKey.keyId,e.proposalKey.sequenceNum,addressBuffer(utilAddress.sansPrefix(e.payer)),e.authorizers.map((e=>addressBuffer(utilAddress.sansPrefix(e))))]),prepareEnvelope=e=>(validateEnvelope(e),[preparePayload(e),preparePayloadSignatures(e)]),preparePayloadSignatures=e=>{const t=collectSigners(e);return e.payloadSigs?.map((e=>({signerIndex:t.get(utilAddress.sansPrefix(e.address))||"",keyId:e.keyId,sig:e.sig,sigExt:extensionBuffer(e.extensionData)}))).sort(((e,t)=>e.signerIndex>t.signerIndex?1:e.signerIndex<t.signerIndex?-1:e.keyId>t.keyId?1:e.keyId<t.keyId?-1:0)).map((e=>{const t=[e.signerIndex,e.keyId,signatureBuffer(e.sig)];return null!=e.sigExt&&t.push(e.sigExt),t}))},collectSigners=e=>{const t=new Map;let n=0;const r=e=>{t.has(e)||(t.set(e,n),n++)};return e.proposalKey.address&&r(e.proposalKey.address),r(e.payer),e.authorizers.forEach(r),t},prepareVoucher=e=>{validateVoucher(e);const t=collectSigners(e),n=e=>e.map((e=>{let{address:n,keyId:r,sig:o,extensionData:a}=e;return{signerIndex:t.get(utilAddress.sansPrefix(n))||"",keyId:r,sig:o,sigExt:extensionBuffer(a)}})).sort(((e,t)=>e.signerIndex>t.signerIndex?1:e.signerIndex<t.signerIndex?-1:e.keyId>t.keyId?1:e.keyId<t.keyId?-1:0)).map((e=>{const t=[e.signerIndex,e.keyId,signatureBuffer(e.sig)];return null!=e.sigExt&&t.push(e.sigExt),t}));return[[scriptBuffer(e.cadence),e.arguments.map(argumentToString),blockBuffer(e.refBlock),e.computeLimit,addressBuffer(utilAddress.sansPrefix(e.proposalKey.address)),e.proposalKey.keyId,e.proposalKey.sequenceNum,addressBuffer(utilAddress.sansPrefix(e.payer)),e.authorizers.map((e=>addressBuffer(utilAddress.sansPrefix(e))))],n(e.payloadSigs),n(e.envelopeSigs)]},validatePayload=e=>{payloadFields.forEach((t=>checkField(e,t))),proposalKeyFields.forEach((t=>checkField(e.proposalKey,t,"proposalKey")))},validateEnvelope=e=>{payloadSigsFields.forEach((t=>checkField(e,t))),e.payloadSigs?.forEach(((e,t)=>{payloadSigFields.forEach((n=>checkField(e,n,"payloadSigs",t)))}))},validateVoucher=e=>{payloadFields.forEach((t=>checkField(e,t))),proposalKeyFields.forEach((t=>checkField(e.proposalKey,t,"proposalKey"))),payloadSigsFields.forEach((t=>checkField(e,t))),e.payloadSigs.forEach(((e,t)=>{payloadSigFields.forEach((n=>checkField(e,n,"payloadSigs",t)))})),envelopeSigsFields.forEach((t=>checkField(e,t))),e.envelopeSigs.forEach(((e,t)=>{envelopeSigFields.forEach((n=>checkField(e,n,"envelopeSigs",t)))}))},isNumber=e=>"number"==typeof e,isString=e=>"string"==typeof e,isObject=e=>null!==e&&"object"==typeof e,isArray=e=>isObject(e)&&e instanceof Array,payloadFields=[{name:"cadence",check:isString},{name:"arguments",check:isArray},{name:"refBlock",check:isString,defaultVal:"0"},{name:"computeLimit",check:isNumber},{name:"proposalKey",check:isObject},{name:"payer",check:isString},{name:"authorizers",check:isArray}],proposalKeyFields=[{name:"address",check:isString},{name:"keyId",check:isNumber},{name:"sequenceNum",check:isNumber}],payloadSigsFields=[{name:"payloadSigs",check:isArray}],payloadSigFields=[{name:"address",check:isString},{name:"keyId",check:isNumber},{name:"sig",check:isString}],envelopeSigsFields=[{name:"envelopeSigs",check:isArray}],envelopeSigFields=[{name:"address",check:isString},{name:"keyId",check:isNumber},{name:"sig",check:isString}],checkField=(e,t,n,r)=>{const{name:o,check:a,defaultVal:s}=t;if(null==e[o]&&null!=s&&(e[o]=s),null==e[o])throw missingFieldError(o,n,r);if(!a(e[o]))throw invalidFieldError(o,n,r)},printFieldName=(e,t,n)=>t?null==n?`${t}.${e}`:`${t}.${n}.${e}`:e,missingFieldError=(e,t,n)=>new Error(`Missing field ${printFieldName(e,t,n)}`),invalidFieldError=(e,t,n)=>new Error(`Invalid field ${printFieldName(e,t,n)}`);function findInsideSigners(e){let t=new Set(e.authorizations);return e.proposer&&t.add(e.proposer),Array.isArray(e.payer)?e.payer.forEach((e=>t.delete(e))):t.delete(e.payer),Array.from(t)}function findOutsideSigners(e){let t=new Set(Array.isArray(e.payer)?e.payer:[e.payer]);return Array.from(t)}const createSignableVoucher=e=>{const t=e.proposer?{address:utilAddress.withPrefix(e.accounts[e.proposer].addr),keyId:e.accounts[e.proposer].keyId,sequenceNum:e.accounts[e.proposer].sequenceNum}:{};return{cadence:e.message.cadence,refBlock:e.message.refBlock||null,computeLimit:e.message.computeLimit,arguments:e.message.arguments.map((t=>e.arguments[t].asArgument)),proposalKey:t,payer:utilAddress.withPrefix(e.accounts[Array.isArray(e.payer)?e.payer[0]:e.payer].addr),authorizers:e.authorizations.map((t=>utilAddress.withPrefix(e.accounts[t].addr))).reduce(((e,t)=>e.find((e=>e===t))?e:[...e,t]),[]),payloadSigs:findInsideSigners(e).map((t=>{const n={address:utilAddress.withPrefix(e.accounts[t].addr),keyId:e.accounts[t].keyId,sig:e.accounts[t].signature},r=e.accounts[t].extensionData;return null!=r&&(n.extensionData=r),n})),envelopeSigs:findOutsideSigners(e).map((t=>{const n={address:utilAddress.withPrefix(e.accounts[t].addr),keyId:e.accounts[t].keyId,sig:e.accounts[t].signature},r=e.accounts[t].extensionData;return null!=r&&(n.extensionData=r),n}))}},voucherToTxId=e=>encodeTxIdFromVoucher(e),MAX_DEPTH_LIMIT=5,idof$1=e=>`${utilAddress.withPrefix(e.addr)}-${e.keyId}`,isFn=e=>e&&("[object Function]"===Object.prototype.toString.call(e)||"function"==typeof e||e instanceof Function),genAccountId=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.join("-")};var ROLES=function(e){return e.PAYER="payer",e.PROPOSER="proposer",e.AUTHORIZATIONS="authorizations",e}(ROLES||{});function debug$1(){const e=[];return[function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;e.push(Array(4*n).fill(" ").join("-")+t)},function(){return e.reduce(((e,t)=>e+"\n"+t))}]}function recurseFlatMap(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3;return t<=0?e:Array.isArray(e)?recurseFlatMap(e.flatMap((e=>e)),t-1):e}function buildPreSignable(e,t){try{return{f_type:"PreSignable",f_vsn:"1.0.1",roles:e.role,cadence:t.message.cadence,args:t.message.arguments.map((e=>t.arguments[e].asArgument)),data:{},interaction:t,voucher:createSignableVoucher(t)}}catch(e){throw console.error("buildPreSignable",e),e}}async function removeUnusedIxAccounts(e,t){const n=Array.isArray(e.payer)?e.payer:[e.payer],r=Array.isArray(e.authorizations)?e.authorizations:[e.authorizations],o=null===e.proposer?[]:Array.isArray(e.proposer)?e.proposer:[e.proposer],a=Object.keys(e.accounts),s=[...new Set(n.concat(r,o))];for(const t of a)s.find((e=>e===t))||delete e.accounts[t]}function addAccountToIx(e,t){"string"!=typeof t.addr||"number"!=typeof t.keyId&&"string"!=typeof t.keyId?t.tempId=t.tempId||uuid.v4():t.tempId=idof$1(t);const n=e.accounts[t.tempId]||t;return e.accounts[t.tempId]||(e.accounts[t.tempId]=t),e.accounts[t.tempId].role.proposer=n.role.proposer||t.role.proposer,e.accounts[t.tempId].role.payer=n.role.payer||t.role.payer,e.accounts[t.tempId].role.authorizer=n.role.authorizer||t.role.authorizer,e.accounts[t.tempId]}function uniqueAccountsFlatMap(e){const t=recurseFlatMap(e),n=new Set,r=t.map((e=>{const t=genAccountId(e.tempId,e.role.payer,e.role.proposer,e.role.authorizer,e.role.param);return n.has(t)?null:(n.add(t),e)})).filter((e=>null!==e));return r}async function resolveSingleAccount(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,{debugLogger:r}=arguments.length>3?arguments[3]:void 0;if(n<=0)throw new Error("recurseResolveAccount Error: Depth limit (5) reached. Ensure your authorization functions resolve to an account after 5 resolves.");let o=e.accounts[t];if(!o)return[[],!1];if(r(`account: ${o.tempId}`,Math.max(5-n,0)),o?.resolve){if(isFn(o?.resolve)){r(`account: ${o.tempId} -- cache MISS`,Math.max(5-n,0));const{resolve:t,...a}=o;let s=await t(a,buildPreSignable(a,e));s=Array.isArray(s)?s:[s];let i=recurseFlatMap(s);return i=i.map((t=>addAccountToIx(e,t))),o.resolve=i.map((e=>e.tempId)),o=addAccountToIx(e,o),[i.map((e=>e.tempId)),!0]}return r(`account: ${o.tempId} -- cache HIT`,Math.max(5-n,0)),[o.resolve,!1]}return[o.tempId?[o.tempId]:[],!1]}const getAccountTempIDs=e=>null===e?[]:Array.isArray(e)?e:[e];async function replaceRoles(e,t,n){for(let r of Object.values(ROLES))if(r===ROLES.AUTHORIZATIONS||r===ROLES.PAYER)e[r]=getAccountTempIDs(e[r]).reduce(((e,o)=>o===t?e.concat(...n.filter((e=>r===ROLES.PAYER&&e.role.payer||r===ROLES.AUTHORIZATIONS&&e.role.authorizer)).map((e=>e.tempId))):e.concat(o)),[]);else if(r===ROLES.PROPOSER){const t=n.filter((e=>e.role.proposer));if(t.length>1)throw new Error("replaceRoles Error: Multiple proposer keys were resolved, but only one is allowed");e[r]=t[0]?.tempId??e[r]}}async function resolveAccountsByIds(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,{debugLogger:r}=arguments.length>3?arguments[3]:void 0;utilInvariant.invariant(e&&"object"==typeof e,"resolveAccountType Error: ix not defined");let o,a=new Set;for(let o of t){let t=e.accounts[o];utilInvariant.invariant(Boolean(t),"resolveAccountType Error: account not found");const[s,i]=await resolveSingleAccount(e,o,n,{debugLogger:r});if(i){const t=uniqueAccountsFlatMap(s.map((t=>e.accounts[t])));t.forEach((e=>a.add(e.tempId))),replaceRoles(e,o,t)}}for(const t of e[ROLES.PAYER]){let n=e.accounts[t];if(o){if(o!==n.addr)throw new Error("resolveAccountType Error: payers from different accounts detected")}else o=n.addr}return a}async function resolveAccounts(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(isTransaction(e)){Array.isArray(e.payer)||logger.log.deprecate({pkg:"FCL",subject:'"ix.payer" must be an array. Support for ix.payer as a singular',message:"See changelog for more info."});let[n,r]=debug$1();try{let o=5,a=new Set([...getAccountTempIDs(e[ROLES.PAYER]),...getAccountTempIDs(e[ROLES.PROPOSER]),...getAccountTempIDs(e[ROLES.AUTHORIZATIONS])]);for(;a.size>0;){if(o<=0)throw new Error("resolveAccounts Error: Depth limit (5) reached. Ensure your authorization functions resolve to an account after 5 resolves.");a=await resolveAccountsByIds(e,a,o,{debugLogger:n}),o--}await removeUnusedIxAccounts(e,{debugLogger:n});for(const t of Object.values(ROLES))utilInvariant.invariant(getAccountTempIDs(e[t]).length>0||t===ROLES.AUTHORIZATIONS,`resolveAccountType Error: no accounts for role "${t}" found`);t.enableDebug&&console.debug(r())}catch(e){throw console.error("=== SAD PANDA ===\n\n",e,"\n\n=== SAD PANDA ==="),e}}return e}async function resolveSignatures(e){if(isTransaction(e))try{let t=findInsideSigners(e);const n=encodeTransactionPayload(prepForEncoding(e));await Promise.all(t.map(fetchSignature(e,n)));let r=findOutsideSigners(e);const o=encodeTransactionEnvelope({...prepForEncoding(e),payloadSigs:t.map((t=>{const n={address:e.accounts[t].addr||"",keyId:e.accounts[t].keyId||0,sig:e.accounts[t].signature||""},r=e.accounts[t].extensionData;return null!=r&&(n.extensionData=r),n}))});await Promise.all(r.map(fetchSignature(e,o)))}catch(t){throw console.error("Signatures",t,{ix:e}),t}return e}function fetchSignature(e,t){return async function(n){const r=e.accounts[n];if(null!=r.signature&&void 0!==r.signature)return;const{signature:o,extensionData:a}=await r.signingFunction(buildSignable(r,t,e));e.accounts[n].signature=o,null!=a&&(e.accounts[n].extensionData=a)}}function buildSignable(e,t,n){try{return{f_type:"Signable",f_vsn:"1.0.1",message:t,addr:utilAddress.sansPrefix(e.addr),keyId:e.keyId,roles:e.role,cadence:n.message.cadence,args:n.message.arguments.map((e=>n.arguments[e].asArgument)),data:{},interaction:n,voucher:createSignableVoucher(n)}}catch(e){throw console.error("buildSignable",e),e}}function prepForEncoding(e){const t=utilAddress.sansPrefix((Array.isArray(e.payer)?e.accounts[e.payer[0]]:e.accounts[e.payer]).addr||""),n=e.proposer?{address:utilAddress.sansPrefix(e.accounts[e.proposer].addr)||"",keyId:e.accounts[e.proposer].keyId||0,sequenceNum:e.accounts[e.proposer].sequenceNum||0}:{};return{cadence:e.message.cadence,refBlock:e.message.refBlock,computeLimit:e.message.computeLimit,arguments:e.message.arguments.map((t=>e.arguments[t].asArgument)),proposalKey:n,payer:t,authorizers:e.authorizations.map((t=>utilAddress.sansPrefix(e.accounts[t].addr)||"")).reduce(((e,t)=>e.find((e=>e===t))?e:[...e,t]),[])}}async function resolveValidators(e){return pipe(e,get(e,"ix.validators",[]).map((e=>t=>e(t,{Ok:Ok,Bad:Bad}))))}async function resolveFinalNormalization(e){for(let t of Object.keys(e.accounts))e.accounts[t].addr=utilAddress.sansPrefix(e.accounts[t].addr);return e}async function resolveVoucherIntercept(e){const t=get(e,"ix.voucher-intercept");return isFn$3(t)&&await t(createSignableVoucher(e)),e}function createResolveComputeLimit(e){return async function(t){return isTransaction(t)&&(t.message.computeLimit=t.message.computeLimit||e.computeLimit),t}}const noop=e=>e,debug=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:noop;return async n=>(await config.config.get(`debug.${e}`)&&await t(n,(function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];console.log(`debug[${e}] ---\n`,...n,"\n\n\n---")}),(e=>["\nAccounts:",{proposer:e.proposer,authorizations:e.authorizations,payer:e.payer},"\n\nDetails:",e.accounts].filter(Boolean))),n)};function createResolve(e){return async t=>pipe([createResolveCadence(e),debug("cadence",((e,t)=>t(e.message.cadence))),createResolveComputeLimit(e),debug("compute limit",((e,t)=>t(e.message.computeLimit))),resolveArguments,debug("arguments",((e,t)=>t(e.message.arguments,e.message))),resolveAccounts,debug("accounts",((e,t,n)=>t(...n(e)))),createExecFetchRef(e),createExecFetchSequenceNumber(e),resolveSignatures,debug("signatures",((e,t,n)=>t(...n(e)))),resolveFinalNormalization,resolveValidators,resolveVoucherIntercept,debug("resolved",((e,t)=>t(e)))])(t)}const resolve=withGlobalContext(createResolve);function createExecFetchRef(e){return async function(t){if(isTransaction(t)&&null==t.message.refBlock){const n=e.transport.send;t.message.refBlock=(await n(build([getBlock()]),{response:response,Buffer:rlp.Buffer,ix:ixModule},{get node(){return e.accessNodeUrl}}).then(decodeResponse)).id}return t}}function createExecFetchSequenceNumber(e){return async function(t){if(isTransaction(t)){var n=Object.values(t.accounts).find((e=>e.role.proposer));if(utilInvariant.invariant(void 0!==n,"Transactions require a proposer"),n&&null==n.sequenceNum){const r=e.transport.send;t.accounts[n.tempId].sequenceNum=await r(await build([getAccount(n.addr)]),{response:response,Buffer:rlp.Buffer,ix:ixModule},{get node(){return e.accessNodeUrl}}).then(decodeResponse).then((e=>e.keys)).then((e=>e.find((e=>e.index===n.keyId)))).then((e=>e.sequenceNumber))}}return t}}function createSend(e){return async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=n.transport||e.transport,o=r.send?.bind?.(r);utilInvariant.invariant(!!o,"Required value for sdk.transport is not defined in config. See: https://github.com/onflow/fcl-js/blob/master/packages/sdk/CHANGELOG.md#0057-alpha1----2022-01-21");const a=n.resolve||e.customResolver||createResolve(e);return n.node=n.node||e.accessNodeUrl,Array.isArray(t)&&(t=pipe(initInteraction(),t)),o(await a(t),{response:response,ix:ixModule,Buffer:rlp.Buffer},n)}}const send=withGlobalContext(createSend);function createSubscribeRawAsync(e){return function(t){let{topic:n,args:r,onData:o,onError:a}=t,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=async function(){try{const t=await e,i=s.transport||t.transport,c=s.node||t.accessNodeUrl;return utilInvariant.invariant(!!c,'SDK Send Error: Either opts.node or "accessNode.api" in config must be defined.'),i.subscribe({topic:n,args:r,onData:o,onError:a},{node:c,...s})}catch(e){return void a(e instanceof Error?e:new Error(String(e)))}}();return{unsubscribe:()=>{i.then((e=>e?.unsubscribe?.()))}}}}function createSubscribeRaw(e){return createSubscribeRawAsync(e)}function subscribeRaw(e){let{topic:t,args:n,onData:r,onError:o}=e,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return createSubscribeRawAsync(getGlobalContext())({topic:t,args:n,onData:r,onError:o},a)}function createSubscribeAsync(e){return function(t){let{topic:n,args:r,onData:o,onError:a}=t,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=createSubscribeRawAsync(e)({topic:n,args:r,onData:e=>{decodeResponse(e).then(o).catch((e=>{a(new Error(`Failed to decode response: ${e.message}`)),i?.unsubscribe?.()}))},onError:a},s);return i}}function createSubscribe(e){return createSubscribeAsync(e)}function subscribe(e){let{topic:t,args:n,onData:r,onError:o}=e,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=createSubscribeRawAsync(getGlobalContext())({topic:t,args:n,onData:e=>{decodeResponse(e).then(r).catch((e=>{o(new Error(`Failed to decode response: ${e.message}`)),s?.unsubscribe?.()}))},onError:o},a);return s}function createDecode(e){return async function(t){return decodeResponse(t,e.customDecoders)}}const decode=withGlobalContext(createDecode),findPayloadSigners=e=>{const t=new Set(e.authorizers);return t.add(e.proposalKey.address),t.delete(e.payer),Array.from(t).map((e=>utilAddress.withPrefix(e)))},findEnvelopeSigners=e=>{const t=new Set([e.payer]);return Array.from(t).map((e=>utilAddress.withPrefix(e)))};class UnableToDetermineMessageEncodingTypeForSignerAddress extends Error{constructor(e){super(`\n        Encode Message From Signable Error: Unable to determine message encoding for signer addresss: ${e}. \n        Please ensure the address: ${e} is intended to sign the given transaction as specified by the transaction signable.\n      `.trim()),this.name="Unable To Determine Message Encoding For Signer Addresss"}}const encodeMessageFromSignable=(e,t)=>{let n=findPayloadSigners(e.voucher),r=findEnvelopeSigners(e.voucher);const o=n.includes(utilAddress.withPrefix(t)),a=r.includes(utilAddress.withPrefix(t));if(!o&&!a)throw new UnableToDetermineMessageEncodingTypeForSignerAddress(t);const s={cadence:e.voucher.cadence,refBlock:e.voucher.refBlock,computeLimit:e.voucher.computeLimit,arguments:e.voucher.arguments,proposalKey:{...e.voucher.proposalKey,address:utilAddress.sansPrefix(e.voucher.proposalKey.address)},payer:utilAddress.sansPrefix(e.voucher.payer),authorizers:e.voucher.authorizers.map(utilAddress.sansPrefix),payloadSigs:e.voucher.payloadSigs.map((e=>{const t={...e,address:utilAddress.sansPrefix(e.address)};return null!=e.extensionData&&(t.extensionData=e.extensionData),t}))};return o?encodeTransactionPayload(s):encodeTransactionEnvelope(s)};function validator(e){return update("ix.validators",(t=>Array.isArray(t)?[...t,e]:[e]))}function atBlockHeight(e){return pipe([t=>(t.block.height=e,t),validator((e=>{if("boolean"==typeof e.block.isSealed)throw new Error("Unable to specify both block height and isSealed.");if(e.block.id)throw new Error("Unable to specify both block height and block id.");return e}))])}function atBlockId(e){return pipe([t=>(t.block.id=e,Ok(t)),validator(((e,t)=>{let{Ok:n,Bad:r}=t;return isGetAccount(e)?r(e,"Unable to specify a block id with a Get Account interaction."):"boolean"==typeof e.block.isSealed?r(e,"Unable to specify both block id and isSealed."):e.block.height?r(e,"Unable to specify both block id and block height."):n(e)}))])}function atLatestBlock(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return pipe([t=>(t.block.isSealed=e,t),validator((e=>{if(e.block.id)throw new Error("Unable to specify both block finality and block id.");if(e.block.height)throw new Error("Unable to specify both block finality and block height.");return e}))])}function createAccount(e){return async function(t){let{height:n,id:r,isSealed:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2?arguments[2]:void 0;return utilInvariant.invariant(!(r&&n||r&&o||n&&o),"Method: account -- Only one of the following parameters can be provided: id, height, isSealed"),r?await createSend(e)([getAccount(t),atBlockId(r)],a).then(decodeResponse):n?await createSend(e)([getAccount(t),atBlockHeight(n)],a).then(decodeResponse):await createSend(e)([getAccount(t),atLatestBlock(o??!1)],a).then(decodeResponse)}}const account=withGlobalContext(createAccount);function createBlock(e){return async function(){let{sealed:t=!1,id:n,height:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return utilInvariant.invariant(!(t&&n||t&&r),'Method: block -- Cannot pass "sealed" with "id" or "height"'),utilInvariant.invariant(!(n&&r),'Method: block -- Cannot pass "id" and "height" simultaneously'),n?await createSend(e)([getBlock(),atBlockId(n)],o).then(decodeResponse):r?await createSend(e)([getBlock(),atBlockHeight(r)],o).then(decodeResponse):await createSend(e)([getBlock(t)],o).then(decodeResponse)}}const block=withGlobalContext(createBlock);function getNodeVersionInfo(){return pipe([makeGetNodeVerionInfo,e=>Ok(e)])}async function nodeVersionInfo(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return await send([getNodeVersionInfo()],e).then(decodeResponse)}function authorizations(){return pipe((arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).map((e=>prepAccount(e,{role:typedefs.TransactionRole.AUTHORIZER}))))}function authorization(e,t,n,r){return{addr:e,signingFunction:t,keyId:n,sequenceNum:r}}function getEvents(e,t,n){return pipe([makeGetEvents,r=>(r.events.eventType=e,r.events.start=t,r.events.end=n,Ok(r))])}function getEventsAtBlockHeightRange(e,t,n){return pipe([makeGetEvents,r=>(r.events.eventType=e,r.events.start=t,r.events.end=n,Ok(r))])}function getEventsAtBlockIds(e,t){return pipe([makeGetEvents,n=>(n.events.eventType=e,n.events.blockIds=t,Ok(n))])}function getBlockHeader(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return pipe([makeGetBlockHeader,t=>(t.block.isSealed=e,Ok(t))])}function getCollection(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return pipe([makeGetCollection,t=>(t.collection.id=e,t)])}function getTransactionStatus(e){return pipe([makeGetTransactionStatus,t=>(t.transaction.id=e,Ok(t))])}function getTransaction(e){return pipe([makeGetTransaction,t=>(t.transaction.id=e,Ok(t))])}function getNetworkParameters(){return pipe([makeGetNetworkParameters,e=>Ok(e)])}function limit(e){return t=>(t.message.computeLimit=e,t)}function args(e){return pipe(e.map(makeArgument))}function arg(e,t){return{value:e,xform:t}}function proposer(e){return prepAccount(e,{role:typedefs.TransactionRole.PROPOSER})}function payer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Array.isArray(e)||(e=[e]),pipe(e.map((e=>prepAccount(e,{role:typedefs.TransactionRole.PAYER}))))}function ping(){return makePing}function ref(e){return pipe([t=>(t.message.refBlock=e,Ok(t))])}function script(){return pipe([makeScript,put("ix.cadence",utilTemplate.template(...arguments))])}const DEFAULT_SCRIPT_ACCOUNTS=[],DEFAULT_REF=null;function transaction(){return pipe([makeTransaction,put("ix.cadence",utilTemplate.template(...arguments)),e=>(e.message.refBlock=e.message.refBlock||null,e.authorizations=e.authorizations||DEFAULT_SCRIPT_ACCOUNTS,Ok(e))])}function invariant(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(t.length>1){const[e,n]=t;return invariant(((t,r)=>{let{Ok:o,Bad:a}=r;return e?o(t):a(t,n)}))}const[r]=t;return e=>r(e,{Ok:Ok,Bad:Bad})}function voucherIntercept(e){return put("ix.voucher-intercept",e)}function subscribeEvents(e){let{startBlockId:t,startHeight:n,eventTypes:r,addresses:o,contracts:a,heartbeatInterval:s}=e;return utilInvariant.invariant(!(t&&n),"SDK Subscribe Events Error: Cannot set both startBlockId and startHeight."),pipe([makeSubscribeEvents,e=>(e.subscribeEvents.startBlockId=t??null,e.subscribeEvents.startHeight=n??null,e.subscribeEvents.eventTypes=r??null,e.subscribeEvents.addresses=o??null,e.subscribeEvents.contracts=a??null,e.subscribeEvents.heartbeatInterval=s??null,Ok(e))])}const resolveProposerSequenceNumber=e=>{let{node:t}=e;return async e=>{if(!isTransaction(e))return Ok(e);if(e.accounts[e.proposer].sequenceNum)return Ok(e);const n=await config.config.first(["sdk.transport","sdk.send"],transportHttp.send);utilInvariant.invariant(n,"Required value for sdk.transport is not defined in config. See: https://github.com/onflow/fcl-js/blob/master/packages/sdk/CHANGELOG.md#0057-alpha1----2022-01-21");const r=await n(await build([getAccount(e.accounts[e.proposer].addr)]),{response:response,Buffer:rlp.Buffer,ix:ixModule},{node:t}),o=await decodeResponse(r);return e.accounts[e.proposer].sequenceNum=o.keys[e.accounts[e.proposer].keyId].sequenceNumber,Ok(e)}};async function getRefId(e){const t=await config.config().get("accessNode.api"),n=await config.config.first(["sdk.transport","sdk.send"],transportHttp.send);var r;return utilInvariant.invariant(n,"Required value for sdk.transport is not defined in config. See: https://github.com/onflow/fcl-js/blob/master/packages/sdk/CHANGELOG.md#0057-alpha1----2022-01-21"),r=await pipe(initInteraction(),[getBlock()]),r=await n(r,{response:response,Buffer:rlp.Buffer,ix:ixModule},{node:t}),(r=await decodeResponse(r)).id}function resolveRefBlockId(e){return async e=>isTransaction(e)?(e.message.refBlock||(e.message.refBlock=await getRefId()),Ok(e)):Ok(e)}function mockAccountResponse(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;utilInvariant.invariant(e.account,"mockAccountResponse(ix) -- ix.account is missing",e),utilInvariant.invariant(e.account.addr,"mockAccountResponse(ix) -- ix.account.addr is missing",e);return{account:{addr:e.account.addr,keys:Array.from({length:t},((e,t)=>({index:t,sequenceNumber:42})))}}}function mockGetBlockResponse(e){return{tag:"GET_BLOCK",block:{id:"32"}}}const identity=e=>e;function mockSend(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:identity;return async function(t){switch(t=await t,!0){case isGetAccount(t):return mockAccountResponse(t);case isGetBlock(t):return mockGetBlockResponse();default:return e(t)}}}const idof=e=>`${utilAddress.withPrefix(e.addr)}-${e.keyId}`;function sig(e){return["SIGNATURE",e.addr,e.keyId].join(".")}function authzFn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){const n={...t,...e,resolve:null,signingFunction:e.signingFunction||t.signingFunction||function(e){return{addr:n.addr,keyId:n.keyId,signature:sig(n)}}};return n}}function authzResolve(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){const{tempId:n,...r}=e;return{...t,tempId:n||"WITH_RESOLVE",resolve:authzFn(r)}}}const ROLE={proposer:!1,authorizer:!1,payer:!1};function authzResolveMany(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{authorizations:[]};return function(t){return{...t,tempId:e.tempId||"AUTHZ_RESOLVE_MANY",resolve:()=>[e.proposer&&authzFn(e.proposer)({role:{...ROLE,proposer:!0}}),...e.authorizations.map(authzFn).map((e=>e({role:{...ROLE,authorizer:!0}}))),e.payer&&authzFn(e.payer)({role:{...ROLE,payer:!0}})].filter(Boolean)}}}function authzDeepResolveMany(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{authorizations:[]},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return function(n){const r=e.tempId||"AUTHZ_DEEP_RESOLVE_MANY";return{...n,tempId:r,resolve:t>0?authzDeepResolveMany(e,t-1)(n).resolve:authzResolveMany(e)(n).resolve}}}const run=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return build([ref("123"),...e]).then(resolve)};var index=Object.freeze({__proto__:null,authzDeepResolveMany:authzDeepResolveMany,authzFn:authzFn,authzResolve:authzResolve,authzResolveMany:authzResolveMany,idof:idof,mockSend:mockSend,run:run,sig:sig});const VERSION="1.13.7",flowMainnet={"flow.network":"mainnet","accessNode.api":"https://rest-mainnet.onflow.org","discovery.wallet":"https://fcl-discovery.onflow.org/authn"},flowTestnet={"flow.network":"testnet","accessNode.api":"https://rest-testnet.onflow.org","discovery.wallet":"https://fcl-discovery.onflow.org/testnet/authn"},flowEmulator={"flow.network":"local","accessNode.api":"http://127.0.0.1:8888","discovery.wallet":"http://localhost:8701/fcl/authn"};function createContext(e){let{accessNodeUrl:t,transport:n,computeLimit:r,customResolver:o,customDecoders:a={},contracts:s={}}=e;if(!n)throw new Error("Transport must be provided to create SDK context");if("function"!=typeof n.send)throw new Error("Invalid transport provided, must implement send method");if("function"!=typeof n.subscribe)throw new Error("Invalid transport provided, must implement subscribe method");if(!t)throw new Error("Access node must be provided to create SDK context");if("string"!=typeof t)throw new Error("Access node must be a string URL");if("number"!=typeof r||r<=0)throw new Error("Compute limit must be a positive number");return{transport:n,accessNodeUrl:t,computeLimit:r,customResolver:o,customDecoders:a,debug:{},contracts:s,legacyContractIdentifiers:{}}}function createSdkClient(e){const t=createContext(e);return{send:createSend(t),subscribe:createSubscribe(t),subscribeRaw:createSubscribeRaw(t),account:createAccount(t),block:createBlock(t),resolve:createResolve(t),decode:createDecode(t)}}const params=e=>logger__namespace.log.deprecate({pkg:"FCL/SDK",message:"The params builder has been removed from the Flow JS-SDK/FCL.",transition:"https://github.com/onflow/flow-js-sdk/blob/master/packages/sdk/TRANSITIONS.md#0001-deprecate-params",level:logger__namespace.LEVELS.error}),param=e=>logger__namespace.log.deprecate({pkg:"FCL/SDK",message:"The param builder has been removed from the Flow JS-SDK/FCL.",transition:"https://github.com/onflow/flow-js-sdk/blob/master/packages/sdk/TRANSITIONS.md#0001-deprecate-params",level:logger__namespace.LEVELS.error});Object.defineProperty(exports,"config",{enumerable:!0,get:function(){return config.config}}),Object.defineProperty(exports,"cadence",{enumerable:!0,get:function(){return utilTemplate.template}}),Object.defineProperty(exports,"cdc",{enumerable:!0,get:function(){return utilTemplate.template}}),exports.t=types__namespace,exports.SubscriptionsNotSupportedError=SubscriptionsNotSupportedError,exports.TestUtils=index,exports.VERSION=VERSION,exports.account=account,exports.arg=arg,exports.args=args,exports.atBlockHeight=atBlockHeight,exports.atBlockId=atBlockId,exports.atLatestBlock=atLatestBlock,exports.authorization=authorization,exports.authorizations=authorizations,exports.block=block,exports.build=build,exports.createSdkClient=createSdkClient,exports.createSignableVoucher=createSignableVoucher,exports.decode=decode,exports.destroy=destroy,exports.encodeMessageFromSignable=encodeMessageFromSignable,exports.encodeTransactionEnvelope=encodeTransactionEnvelope,exports.encodeTransactionPayload=encodeTransactionPayload,exports.encodeTxIdFromVoucher=encodeTxIdFromVoucher,exports.flowEmulator=flowEmulator,exports.flowMainnet=flowMainnet,exports.flowTestnet=flowTestnet,exports.get=get,exports.getAccount=getAccount,exports.getBlock=getBlock,exports.getBlockHeader=getBlockHeader,exports.getCollection=getCollection,exports.getEvents=getEvents,exports.getEventsAtBlockHeightRange=getEventsAtBlockHeightRange,exports.getEventsAtBlockIds=getEventsAtBlockIds,exports.getNetworkParameters=getNetworkParameters,exports.getNodeVersionInfo=getNodeVersionInfo,exports.getTransaction=getTransaction,exports.getTransactionStatus=getTransactionStatus,exports.initInteraction=initInteraction,exports.interaction=interaction,exports.invariant=invariant,exports.isBad=isBad,exports.isGetAccount=isGetAccount,exports.isGetBlock=isGetBlock,exports.isGetBlockHeader=isGetBlockHeader,exports.isGetCollection=isGetCollection,exports.isGetEvents=isGetEvents,exports.isGetNetworkParameters=isGetNetworkParameters,exports.isGetNodeVersionInfo=isGetNodeVersionInfo,exports.isGetTransaction=isGetTransaction,exports.isGetTransactionStatus=isGetTransactionStatus,exports.isOk=isOk,exports.isPing=isPing,exports.isScript=isScript,exports.isTransaction=isTransaction,exports.isUnknown=isUnknown,exports.limit=limit,exports.nodeVersionInfo=nodeVersionInfo,exports.param=param,exports.params=params,exports.payer=payer,exports.ping=ping,exports.pipe=pipe,exports.proposer=proposer,exports.put=put,exports.ref=ref,exports.resolve=resolve,exports.resolveAccounts=resolveAccounts,exports.resolveArguments=resolveArguments,exports.resolveCadence=resolveCadence,exports.resolveFinalNormalization=resolveFinalNormalization,exports.resolveProposerSequenceNumber=resolveProposerSequenceNumber,exports.resolveRefBlockId=resolveRefBlockId,exports.resolveSignatures=resolveSignatures,exports.resolveValidators=resolveValidators,exports.resolveVoucherIntercept=resolveVoucherIntercept,exports.response=response,exports.script=script,exports.send=send,exports.subscribe=subscribe,exports.subscribeEvents=subscribeEvents,exports.subscribeRaw=subscribeRaw,exports.transaction=transaction,exports.update=update,exports.validator=validator,exports.voucherIntercept=voucherIntercept,exports.voucherToTxId=voucherToTxId,exports.why=why,Object.keys(typedefs).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return typedefs[e]}})}));
//# sourceMappingURL=/sm/8483677b20f9c5cbe8a0858630140943f29e68c8cd35ad75620e0d38e3a6ba16.map