{"version":3,"file":"methods.mjs","sources":["../../../../src/plugins/instrumentModule/methods.ts"],"sourcesContent":["import { ApiLeg, QuoteAsset, legBeet } from '@convergence-rfq/rfq';\n\nimport { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { createSerializerFromFixableBeetArgsStruct } from '../../types';\nimport { addDecimals } from '../../utils/conversions';\nimport { toSolitaLegSide } from '../rfqModule/models/LegSide';\nimport { Protocol } from '../protocolModule';\nimport { LegInstrument, QuoteInstrument } from './types';\nimport { Convergence } from '@/Convergence';\n\nexport function instrumentToSolitaLeg(legInstrument: LegInstrument): ApiLeg {\n  return {\n    settlementTypeMetadata: {\n      __kind: 'Instrument',\n      instrumentIndex: legInstrument.getInstrumentIndex(),\n    },\n    baseAssetIndex: legInstrument.getBaseAssetIndex(),\n    data: legInstrument.serializeInstrumentData(),\n    amount: addDecimals(legInstrument.getAmount(), legInstrument.getDecimals()),\n    amountDecimals: legInstrument.getDecimals(),\n    side: toSolitaLegSide(legInstrument.getSide()),\n  };\n}\n\nexport function serializeInstrumentAsSolitaLeg(legInstrument: LegInstrument) {\n  const legSerializer = createSerializerFromFixableBeetArgsStruct(legBeet);\n  return legSerializer.serialize({\n    ...instrumentToSolitaLeg(legInstrument),\n    reserved: new Array(64).fill(0),\n  });\n}\n\nexport function getSerializedLegLength(legInstrument: LegInstrument) {\n  return serializeInstrumentAsSolitaLeg(legInstrument).length;\n}\n\nexport function getProgramAccount(legInstrument: LegInstrument): AccountMeta {\n  return {\n    pubkey: legInstrument.getProgramId(),\n    isSigner: false,\n    isWritable: false,\n  };\n}\n\nexport function getValidationAccounts(\n  legInstrument: LegInstrument\n): AccountMeta[] {\n  return [getProgramAccount(legInstrument)].concat(\n    legInstrument.getValidationAccounts()\n  );\n}\n\nexport function instrumentToQuote(legInstrument: QuoteInstrument): QuoteAsset {\n  return {\n    settlementTypeMetadata: {\n      __kind: 'Instrument',\n      instrumentIndex: legInstrument.getInstrumentIndex(),\n    },\n    data: legInstrument.serializeInstrumentData(),\n    decimals: legInstrument.getDecimals(),\n  };\n}\n\nexport const legToBaseAssetMint = (\n  convergence: Convergence,\n  leg: LegInstrument\n) => {\n  return convergence.tokens().findMintByAddress({\n    address: leg.getAssetMint(),\n  });\n};\n\nexport const getInstrumentProgramIndex = (\n  protocol: Protocol,\n  programAddress: PublicKey\n) => {\n  const instrumentIndex = protocol.instruments.findIndex((instrument) =>\n    instrument.programKey.equals(programAddress)\n  );\n\n  if (instrumentIndex === -1) {\n    throw Error('Cannot find spot instrument program in protocol!');\n  }\n\n  return instrumentIndex;\n};\n"],"names":["instrumentToSolitaLeg","legInstrument","settlementTypeMetadata","__kind","instrumentIndex","getInstrumentIndex","baseAssetIndex","getBaseAssetIndex","data","serializeInstrumentData","amount","addDecimals","getAmount","getDecimals","amountDecimals","side","toSolitaLegSide","getSide","serializeInstrumentAsSolitaLeg","legSerializer","createSerializerFromFixableBeetArgsStruct","legBeet","serialize","_objectSpread","reserved","Array","fill","getSerializedLegLength","length","getProgramAccount","pubkey","getProgramId","isSigner","isWritable","getValidationAccounts","concat","instrumentToQuote","decimals","legToBaseAssetMint","convergence","leg","tokens","findMintByAddress","address","getAssetMint","getInstrumentProgramIndex","protocol","programAddress","instruments","findIndex","instrument","programKey","equals","Error"],"mappings":";;;;;;AAUO,SAASA,qBAAqBA,CAACC,aAA4B,EAAU;EAC1E,OAAO;AACLC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,MAAM,EAAE,YAAY;AACpBC,MAAAA,eAAe,EAAEH,aAAa,CAACI,kBAAkB,EAAC;KACnD;AACDC,IAAAA,cAAc,EAAEL,aAAa,CAACM,iBAAiB,EAAE;AACjDC,IAAAA,IAAI,EAAEP,aAAa,CAACQ,uBAAuB,EAAE;AAC7CC,IAAAA,MAAM,EAAEC,WAAW,CAACV,aAAa,CAACW,SAAS,EAAE,EAAEX,aAAa,CAACY,WAAW,EAAE,CAAC;AAC3EC,IAAAA,cAAc,EAAEb,aAAa,CAACY,WAAW,EAAE;AAC3CE,IAAAA,IAAI,EAAEC,eAAe,CAACf,aAAa,CAACgB,OAAO,EAAE,CAAA;GAC9C,CAAA;AACH,CAAA;AAEO,SAASC,8BAA8BA,CAACjB,aAA4B,EAAE;AAC3E,EAAA,IAAMkB,aAAa,GAAGC,yCAAyC,CAACC,OAAO,CAAC,CAAA;EACxE,OAAOF,aAAa,CAACG,SAAS,CAAAC,cAAA,CAAAA,cAAA,CACzBvB,EAAAA,EAAAA,qBAAqB,CAACC,aAAa,CAAC,CAAA,EAAA,EAAA,EAAA;IACvCuB,QAAQ,EAAE,IAAIC,KAAK,CAAC,EAAE,CAAC,CAACC,IAAI,CAAC,CAAC,CAAA;AAAC,GAAA,CAChC,CAAC,CAAA;AACJ,CAAA;AAEO,SAASC,sBAAsBA,CAAC1B,aAA4B,EAAE;AACnE,EAAA,OAAOiB,8BAA8B,CAACjB,aAAa,CAAC,CAAC2B,MAAM,CAAA;AAC7D,CAAA;AAEO,SAASC,iBAAiBA,CAAC5B,aAA4B,EAAe;EAC3E,OAAO;AACL6B,IAAAA,MAAM,EAAE7B,aAAa,CAAC8B,YAAY,EAAE;AACpCC,IAAAA,QAAQ,EAAE,KAAK;AACfC,IAAAA,UAAU,EAAE,KAAA;GACb,CAAA;AACH,CAAA;AAEO,SAASC,qBAAqBA,CACnCjC,aAA4B,EACb;AACf,EAAA,OAAO,CAAC4B,iBAAiB,CAAC5B,aAAa,CAAC,CAAC,CAACkC,MAAM,CAC9ClC,aAAa,CAACiC,qBAAqB,EACrC,CAAC,CAAA;AACH,CAAA;AAEO,SAASE,iBAAiBA,CAACnC,aAA8B,EAAc;EAC5E,OAAO;AACLC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,MAAM,EAAE,YAAY;AACpBC,MAAAA,eAAe,EAAEH,aAAa,CAACI,kBAAkB,EAAC;KACnD;AACDG,IAAAA,IAAI,EAAEP,aAAa,CAACQ,uBAAuB,EAAE;AAC7C4B,IAAAA,QAAQ,EAAEpC,aAAa,CAACY,WAAW,EAAC;GACrC,CAAA;AACH,CAAA;AAEO,IAAMyB,kBAAkB,GAAG,SAArBA,kBAAkBA,CAC7BC,WAAwB,EACxBC,GAAkB,EACf;AACH,EAAA,OAAOD,WAAW,CAACE,MAAM,EAAE,CAACC,iBAAiB,CAAC;AAC5CC,IAAAA,OAAO,EAAEH,GAAG,CAACI,YAAY,EAAC;AAC5B,GAAC,CAAC,CAAA;AACJ,EAAC;AAEM,IAAMC,yBAAyB,GAAG,SAA5BA,yBAAyBA,CACpCC,QAAkB,EAClBC,cAAyB,EACtB;EACH,IAAM3C,eAAe,GAAG0C,QAAQ,CAACE,WAAW,CAACC,SAAS,CAAC,UAACC,UAAU,EAAA;AAAA,IAAA,OAChEA,UAAU,CAACC,UAAU,CAACC,MAAM,CAACL,cAAc,CAAC,CAAA;AAAA,GAC9C,CAAC,CAAA;AAED,EAAA,IAAI3C,eAAe,KAAK,CAAC,CAAC,EAAE;IAC1B,MAAMiD,KAAK,CAAC,kDAAkD,CAAC,CAAA;AACjE,GAAA;AAEA,EAAA,OAAOjD,eAAe,CAAA;AACxB;;;;"}